For-Schleife nach rechts springen
#1
Guten Mittag,

ich bräuchte mal eure Hilfe.

Ich möchte Labels Initial mit Werten aus einer Arbeitsmappe füllen.

Auf der Arbeitsmappe stehen immer 10 Werte horizontal nebeneinander.

 A10        B10       C10     
Wert1    Wert2    Wert 3



Ich möchte nun folgendes machen:

Label1.Caption = A10
Label2.Caption = B10
Label3.Caption = C10
usw.

Da das sehr viele Labels sind möchte ich die nicht einzeln zuweisen, sondern über eine Schleife gehen.
Ich weiß aber nicht, wie man in der Schleife um 1 Spalte nach rechts rutscht.

Code:
Private Sub DatenLaden()
Dim i As Integer
Dim a As Integer
a = 30

For i = 7 To 12
  Controls("Label" & i).Value = Worksheets("Grunddaten").Range("E" & a)
a = a + 1
Next
End Sub
Das habe ich scho nmal gebaut - das macht das Gleiche für Werte die vertikal stehen - das bekomme ich hin, weil ich auf die Zeilenzahl einfach 1 hinzurechnen kann.
Aber wie springe ich jedes mal nach rechts?
Das müsste mit Colums irgendwie gehen, aber wie?
Top
#2
Ich bin kein profi in Sachen VBA, aber ich denke anstatt eines .Range Befehls müsstest du einen .Cells befehl nehmen. 

Gruß
[-] Folgende(r) 1 Nutzer sagt Danke an EasY für diesen Beitrag:
  • DieMarie
Top
#3
Ich weiß aber nur, wie ich eine bestimmte Zelle anspreche. Kann ich mit cells + 1 eine nach rechts springen?
Top
#4
Cells besteht ja aus Zeile und Spalte. Also .Cells(1,2) wäre wie .Range("B1").
Wenn die Spalte variabel sein soll schreibst sowas wie .Cells(1,10+a)
Top
#5
Hi
Offset(0, 1) springt einen nach rechts.
Also Range("A1").Offset(0, 1)
Gruss Igel
Ich kann nicht alles wissen,
aber vieles lernen ! 19
[-] Folgende(r) 1 Nutzer sagt Danke an Igelbauer für diesen Beitrag:
  • DieMarie
Top
#6
Tut irgendwie nicht so richtig.

Code:
Private Sub WerteLaden()
Dim i As Integer
Dim a As Integer
a = 31

For i = 158 To 167
  Controls("Label" & i).Caption = Worksheets("Grunddaten").Range("F" & a).Offset(0, 1)
Next
End Sub
Wenn ich in der Arbeitsmappe bei F31 einen Wert eingetragen habe und dahinter nichts mehr, dann schreibt er den Wert in alle Zellen.
Das soll er natürlich nicht machen.
Er soll ja nur die Werte, die schon drin stehen in die Labels übernehmen.
Top
#7
Sorry, hab nicht viel Zeit.
Mit Offset kannst du beliebig springen.
Mit der ersten Zahl sagst du wie weit er nach unten (negativ nach oben) springen soll,
mit der Zweiten nach rechts (negativ nach links).
In Dein Offset müsste also wohl eine Variable, die mit hochzählt. (a=a+1 o.ä.)
Ciao
Ich kann nicht alles wissen,
aber vieles lernen ! 19
[-] Folgende(r) 1 Nutzer sagt Danke an Igelbauer für diesen Beitrag:
  • DieMarie
Top
#8
Hallo Marie.

Du kannst einfach


Code:
For i = 7 To 12
  Controls("Label" & i).Value = Worksheets("Grunddaten").Cells(5, i + 23)
Next


schreiben.

Gruß
Sebastian
[-] Folgende(r) 1 Nutzer sagt Danke an Bast4i für diesen Beitrag:
  • DieMarie
Top
#9
Code:
Private Sub DatenLaden()
Dim i As Integer
Dim a As Integer
a = 30
For i = 148 To 157
 Controls("TextBox" & i).Value = Worksheets("Grunddaten").Cells(5, i - 118)
Next

End Sub


Funktioniert leider auch nicht so recht.

Die Textfelder heißen Textfeld148 - Textfeld 157
In Textfeld 148 soll der Wert aus F30
In Textfeld 149 soll der Wert aus G30

Der Code oben macht aber überhaupt nichts. Die Methode hängt im Inizialize.
Top
#10
das hier müsste doch eigentlich gehen?

Code:
Private Sub DatenLaden()
Dim i As Integer
Dim a As Integer
a = 0
For i = 148 To 157
 Controls("TextBox" & i).Value = Worksheets("Grunddaten").Cells(5 + a, 30)
 a = a + 1
Next

End Sub
Tut aber auch nichts.
Top


Gehe zu:


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