Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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?
Antworten 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
Antworten Top
#3
Ich weiß aber nur, wie ich eine bestimmte Zelle anspreche. Kann ich mit cells + 1 eine nach rechts springen?
Antworten 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)
Antworten 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
Antworten 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.
Antworten 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
Antworten 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
Antworten 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.
Antworten 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.
Antworten Top


Gehe zu:


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