Ergebnis 1 bis 8 von 8

Thema: VBA Aufgabe

  1. #1

    VBA Aufgabe

    Servus,
    ich habe gerade ein wenig Probleme folgende Aufgabe zu lösen:


    Schreiben sie ein VBA Programm, welches den oberen screenshot in den unteren überführt, d.h die dort abgebildeten Werte einfügt. Das Programm soll unabhängig vom aktuell angewählten Tabellenblatt funktionieren.

    Mein grundlegendes Problem sind die leeren Felder. Zuvor gab es schon eine ähnliche Aufgabe aber ohne Leerstellen, die Summe der Felder ergab sich aus Spalte* Zeile. Sprich man führte die Variablen i und j ein, was im Programm so gelöst wurde:

    for i = 1 to 6
    for j = 1 to 6
    cells (i, j).value = i*j
    next j
    next i

    Die Vorgehensweise jetzt ist sicher ähnlich, aber ich komm leider nicht drauf. Hoffe jemand kann mir auf die Sprünge helfen.

  2. #2
    Im Prinzip kannst du das gleiche Programm wiederverwenden. Du musst lediglich die Zelle, in die geschrieben wird, anpassen, indem du die Zeilen- und Spaltennummer verdoppelst (dadurch wird nur jede zweite Zeile und Spalte beschrieben). Wenn du cells (i * 2, j * 2).value statt cells (i, j).value schreibst, sollte das funktionieren.

  3. #3
    Zitat Zitat von mq Beitrag anzeigen
    Im Prinzip kannst du das gleiche Programm wiederverwenden. Du musst lediglich die Zelle, in die geschrieben wird, anpassen, indem du die Zeilen- und Spaltennummer verdoppelst (dadurch wird nur jede zweite Zeile und Spalte beschrieben). Wenn du cells (i * 2, j * 2).value statt cells (i, j).value schreibst, sollte das funktionieren.
    Das ist auf jedenfall schonmal eine gute Idee Leerstellen zu umgehen, aber in der Aufgabe jetzt kommt ja nicht die Regel Spalte * Zeile zum Einsatz.
    So wie ich das sehe wird immer die Zeilenzahl waagerecht addiert, die Spaltenzahl senkrecht, aber immer nur die geraden Zahlen. Bin wie gesagt noch nicht ganz hinter dieses System gekommen.

  4. #4
    Wenn ich das richtig sehe, sollte das i * j * 2 sein.

  5. #5
    Zitat Zitat von mq Beitrag anzeigen
    Wenn ich das richtig sehe, sollte das i * j * 2 sein.
    Meinst du nicht es ist (i * j) / 2, weil das würde klappen. Dann müsste man nur noch die Leerstellen berücksichtigen. Ich glaube mit
    ( (i * 2 )* (j*2) ) / 8 könnte alles klappen, oder?
    Optional vllt auch

    i = i * 2
    j = j * 2

    for i = 1 to 17
    for j = 1 to 9
    cells(i, j).value = ((i * j) / 2)

    next j
    next i

    kann man das so machen?
    Hmm gerade ausprobiert, da ist irgendwie noch ein Fehler drin.....

    Geändert von Duke Earthrunner (13.01.2007 um 16:18 Uhr)

  6. #6
    Eigentlich sollte VBA for i = 1 to 10 step 2 oder sowas kennen.

  7. #7
    Zitat Zitat von DFYX Beitrag anzeigen
    Eigentlich sollte VBA for i = 1 to 10 step 2 oder sowas kennen.
    Ok mal abgesehen davon, dass ich diese step Funktion leider nie kennenlernen durfte, funktioniert es so

    Sub quadrat()

    Dim i As Integer
    Dim j As Integer

    For i = 2 To 17 Step 2
    For j = 2 To 9 Step 2
    Cells(i, j).Value = (i * j) / 2
    Next j
    Next i
    End Sub

    Danke euch beiden für die Hilfe!

  8. #8
    Okay, ich bin davon ausgegangen, dass du die Variablen in 1er-Schritten erhoehst, nicht in 2er-Schritten. Im letzteren Fall ist i * j / 2 natuerlich richtig.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •