Archiv verlassen und diese Seite im Standarddesign anzeigen : VBA Aufgabe
Duke Earthrunner
13.01.2007, 14:14
Servus,
ich habe gerade ein wenig Probleme folgende Aufgabe zu lösen:
http://img80.imageshack.us/img80/998/vbaaufgabegd6.gif
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.
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.
Duke Earthrunner
13.01.2007, 14:44
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.
Wenn ich das richtig sehe, sollte das i * j * 2 sein.
Duke Earthrunner
13.01.2007, 16:02
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.....
Eigentlich sollte VBA for i = 1 to 10 step 2 oder sowas kennen.
Duke Earthrunner
13.01.2007, 16:28
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!
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.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.