Syntax For .. Next
#1
Als Newbie bin ich ganz stolz auf mein erstes Programm, welches auch fehlerlos arbeitet. Allerdings würde ich natürlich gerne gewisse "Abläufe" verschönern, denn der Code sieht für euch Profis wohl ned soooo prickelnd aus.
Folgendes Code möchte ich mit einer For ... Next Schlaufe vereinfachen:

Frage1 = Worksheets(ListBox1.Value).Cells(2, 1)
Frage2 = Worksheets(ListBox1.Value).Cells(3, 1)
Frage3 = Worksheets(ListBox1.Value).Cells(4, 1)
Frage4 = Worksheets(ListBox1.Value).Cells(5, 1)
Frage5 = Worksheets(ListBox1.Value).Cells(6, 1)
Frage6 = Worksheets(ListBox1.Value).Cells(7, 1)
Frage7 = Worksheets(ListBox1.Value).Cells(8, 1)
Frage8 = Worksheets(ListBox1.Value).Cells(9, 1)
Frage9 = Worksheets(ListBox1.Value).Cells(10, 1)
Frage10 = Worksheets(ListBox1.Value).Cells(11, 1)
Frage11 = Worksheets(ListBox1.Value).Cells(12, 1)
Frage12 = Worksheets(ListBox1.Value).Cells(13, 1)

Ich habe es so umgesetzt, doch ist der Syntax nicht korrekt:

Dim f As Integer
f = 1
For f = 1 To 12
  Frage(f) = Worksheets(ListBox1.Value).Cells(f + 1, 1)       
Next

Ob mir da wieder jemand kurz behilflich sein kann? Ihr seid nämlich wirklich grossartig.
Liebe Grüsse
Matthias
Antworten Top
#2
Code:
DIM Frage (1 to 12) As Variant '(oder String oder Zahlentyp)
VBA arbeitet eigentlich mit nullbasierten Arrays - das solltest du dir auch angewöhnen. Ich war hier mal zu faul, den weiteren Code zu ändern, also lasse ich es ausnahmsweise so stehen.

F = 1 ist aber überflüssig.

Gewöhne dir bitte auch an, Fehlermeldungen zu lesen und bei Fragen wiederzugeben. Das hilft dir und uns.
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • matthias wehrli
Antworten Top
#3
Vielen Dank für die schnelle Antwort. Leider habe ich vergessen zu sagen, dass "Frage1" bis "Frage12" jeweils der Name einer Textbox ist, welche sich im UF befinden.
Deine Antwort ergibt zwar keine Fehlermeldung,  führt aber zu leeren Textboxen.

Die Fehlermeldungen kann ich nächstes Mal gerne auch widergeben.
Antworten Top
#4
(26.04.2024, 01:33)matthias wehrli schrieb: Die Fehlermeldungen kann ich nächstes Mal gerne auch widergeben.
Warum irgendwann und nicht sofort? 

Ja, diese winzige Information, dass es sich um Steuerelemente in einer Userform handelt, wäre gut gewesen. ;)

Code:
Me.Controls("Frage" & f).Text = …

Früher oder später wirst du Wege finden, wie es besser geht - aber für den Anfang reicht es.
[-] Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:
  • matthias wehrli
Antworten Top
#5
Touché!
Vielen Dank für die abermals schnelle und freundliche Antwort. Das hat mir sehr geholfen. Mein Code wurde grad um etwa 100 zeilen kürzer ;)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste