Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1604to1608
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schleifen in VBA

Schleifen in VBA
02.02.2018 18:20:12
Peer
Hallo.
Ich würde mich gern intensiver mit Programmiersprachen beschäftigen.
Ich lese öfters, dass VBA hier ideal zum Einstieg geeignet ist.
Es wird viel über Schleifen gesprochen und geschrieben.
Ich habe auch schon viel darüber gelesen, nur entweder bin ich zu blöd es zu verstehen oder ich sollte es komplett lassen, weil es für mich zu hoch ist.
Nun dachte ich mir, weil hier viele Profis sind und der ein oder/und andere auch schon viel geholfen hat, es mir vielleicht zu erklären, für was man es braucht und wie damit gearbeitet wird.
So wie "Schleifen für dumme blöde Dummies".
Vielen Dank für jede Hilfe.
LG
Peer

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleifen in VBA
02.02.2018 18:53:17
Peer
Hallo Bernd.
Das verstehst du oder auch einige andere hier.
Aber ich habe viele diese Erklärungen gelesen und nicht verstanden.
Schon gar nicht in englisch.
Ich hätte gern eine einfache Erklärung.
Ich weiß, das es verschiedene Schleifen gibt.
Aber speziell die For, For each, Do while-Schleifen sind für mich noch böhmische Dörfer.
Anzeige
AW: Schleifen in VBA
02.02.2018 19:06:30
onur
For Next Schleifen sind die einfachsten.
Am Anfang:
For n=1 to 5
Heisst für alle n zw. 1 und 5
Dann kommt, was damit gemacht wird. Man kann mit der Laufvariablen n weiterarbeiten:
z.B. Debug.Print n (drucke im Direktfenster n aus)
oder einfach einen Befehl 5 mal wiederholen:
MsgBox "Test"
oder was auch immer zw. For .... und Next n steht.
dann kommt am Ende Next n - hier wird n um 1 erhöht und zu "For n=..." zurückgesprungen, solange n nicht größer als 5 ist, dann erst geht es mit dem code normal weiter.
zig Beispiele im Internet zu finden...owT
02.02.2018 18:55:59
robert
AW: zig Beispiele im Internet zu finden...owT
02.02.2018 19:10:45
Peer
Hallo Robert.
Ich weiß.
Keines davon konnte ich bis jetzt verstehen.
Oder hast du für Anfänger Links zu solchen Beispielen.
Ich frage mal anders.
Ich habe im VBA Code meines Excel-Sheets folgenden Code.
Option Explicit
Private Sub btn_OK_Click()
' schreibe Wert aus UF-Textbox in Zelle von Parameter-Tabelle (CCur() = Währungsformat  _
Zelle)
Sheets("Parameter").Range("C4").Value = CCur(Me.curr_FAE)
Sheets("Parameter").Range("D4").Value = CCur(Me.curr_Theorie)
Sheets("Parameter").Range("E4").Value = CCur(Me.curr_Praxis)
Sheets("Parameter").Range("F4").Value = CCur(Me.curr_Fahren)
Sheets("Parameter").Range("G4").Value = CCur(Me.curr_Sonst)
Sheets("Parameter").Range("H4").Value = CCur(Me.curr_PTZ1)
Sheets("Parameter").Range("I4").Value = CCur(Me.curr_PTZ2)
Sheets("Parameter").Range("J4").Value = CCur(Me.curr_081)
Sheets("Parameter").Range("K4").Value = CCur(Me.curr_091)
Sheets("Parameter").Range("L4").Value = CCur(Me.curr_WD1)
Sheets("Parameter").Range("M4").Value = CCur(Me.curr_WD2)
Sheets("Parameter").Range("N4").Value = CCur(Me.curr_WD3)
Sheets("Parameter").Range("O4").Value = CCur(Me.curr_WD4)
Sheets("Parameter").Range("H6").Value = CCur(Me.curr_Quali2)
Sheets("Parameter").Range("O6").Value = CCur(Me.curr_ZN4)
Sheets("Parameter").Range("M6").Value = CCur(Me.curr_ZN2)
Sheets("Parameter").Range("N6").Value = CCur(Me.curr_Feier)
Sheets("Parameter").Range("L6").Value = CCur(Me.curr_Sa)
' schließe UF
Unload Me
End Sub
Private Sub UserForm_Activate()
' lese den Wert aus Tabelle Parameter Zelle im UF-Textbox
' z.b. UF_TextBox "currFAE" Inhalt = Tabelle "Parameter" Zelle C4.Inhalt (hier Wä _
hrungsformat)
Me.curr_FAE.Text = Sheets("Parameter").Range("C4").Text
Me.curr_Theorie.Text = Sheets("Parameter").Range("D4").Text
Me.curr_Praxis.Text = Sheets("Parameter").Range("E4").Text
Me.curr_Fahren.Text = Sheets("Parameter").Range("F4").Text
Me.curr_Sonst.Text = Sheets("Parameter").Range("G4").Text
Me.curr_PTZ1.Text = Sheets("Parameter").Range("H4").Text
Me.curr_PTZ2.Text = Sheets("Parameter").Range("I4").Text
Me.curr_081.Text = Sheets("Parameter").Range("J4").Text
Me.curr_091.Text = Sheets("Parameter").Range("K4").Text
Me.curr_WD1.Text = Sheets("Parameter").Range("L4").Text
Me.curr_WD2.Text = Sheets("Parameter").Range("M4").Text
Me.curr_WD3.Text = Sheets("Parameter").Range("N4").Text
Me.curr_WD4.Text = Sheets("Parameter").Range("O4").Text
Me.lst_Verwendung.List = Sheets("Parameter").Range("Verwendung").Value
Me.cbx_SZ1.List = Sheets("Parameter").Range("Schichtzulage1").Value
Me.curr_Quali2.Text = Sheets("Parameter").Range("H6").Text
Me.curr_ZN4.Text = Sheets("Parameter").Range("O6").Text
Me.curr_ZN2.Text = Sheets("Parameter").Range("M6").Text
Me.curr_Feier.Text = Sheets("Parameter").Range("N6").Text
Me.curr_Sa.Text = Sheets("Parameter").Range("L6").Text
End Sub
Nun kann ich mir vorstellen, dass hier vielleicht das "Wirre" mit Schleifen besser geregelt werden kann.
Das alle Textboxen in diesem UF anhand einer Schleife ausgelesen und dann die Werte wieder in die Zellen zurück geschrieben werden können.
Oder täusche ich mich da?
LG
Anzeige
statt Range("C4"), Cells(4,3)
02.02.2018 19:40:51
robert
Hi,
wobei zB. bei Cells(4,3) die 3 durch einen Spaltenzähler ersetzt wird...
Aber Sepp hat Dir einige Beispiele zusammengestellt, das sollte weiterhelfen :-)
Gruß
robert
AW: Schleifen in VBA
02.02.2018 19:22:19
Sepp
Hallo Peer,
hier mal ein ganz einfaches Beispiel.
Modul Modul3
Option Explicit 
 
Sub peer() 
  Dim lngIndex  As Long       'Zählindex 
  Dim dblOutput As Double     'Variable zum rechnen 
  Dim objWS     As Worksheet  'Objektvariable für Worksheets=Tabellenblätter 
 
  'For-Next Schleife 1 
  'Schreibt die Zahlen 1 bis 10 in die Zellen A1:A10 des aktiven Tabellenblattes. 
  For lngIndex = 1 To 10 
    Cells(lngIndex, 1) = lngIndex 
  Next 
 
  'For-Next Schleife 2 
  'Schreibt den Schleifenzähler (lngIndex) in jede 2. Zelle im Bewreich B1:B9 des _
   aktiven Tabellenblattes. 
  For lngIndex = 1 To 10 Step 2 'Step gibt die Schrittweite an, hier also 1,3,5,... 
    Cells(lngIndex, 2) = lngIndex 
  Next 
 
  'For-Each Schleife über alle Tabellenblätter. 
  'Schreibt die Eigenschaft .Name aller Tabellenblätter in die Zellen C1:Cn. 
  For Each objWS In ThisWorkbook.Worksheets 'Schleife über die Aufzählung 'Worksheets' _
    der Mappe, die Zeile wird durch den Index des Tabellenblattes festgelegt. 
    Cells(objWS.Index, 3) = objWS.Name 
  Next 
 
  'Do-Loop Schleife 1 
  'Schreib den Wert von lngIndex in die Zellen D1:D10. 
  lngIndex = 1 
  Do While lngIndex <= 10 'Ausstiegsbedingung ist lngIndex 
    Cells(lngIndex, 4) = lngIndex 
    lngIndex = lngIndex + 1 'Zähler erhöhen 
  Loop 
 
  'Do-Loop Schleife 2 
  'Schreibt den Wert von dblOutput in die Zellen E1:En. 
  lngIndex = 1 
  Do 
    dblOutput = dblOutput + 0.1 
    Cells(lngIndex, 5) = dblOutput 
    lngIndex = lngIndex + 1 
  Loop While dblOutput < 2 'Ausstiegsbedingung ist dblOutPut 
 
End Sub 
 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Gruß Sepp

Anzeige
AW: Schleifen in VBA
02.02.2018 19:40:43
Peer
Hallo Sepp.
Danke für deine Beispiele.
Schau ma mal, ob ich die wenigstens verstehe.
LG
Peer
AW: Schleifen in VBA
02.02.2018 19:49:33
Sepp
Hallo Peer,
noch kurz zu deinem Code.
Man kann das in Schleifen packen, aber dabei muss man folgendes beachten.
Alle Textboxen haben 'sprechende' Namen, ist zwar gut für die Übersichtlichkeit, aber schlecht für eine Schleife.
Man müsste also ein Array erstellen, das alle Namen enthält und in der Schleife darauf zugreifen.
Nummeriert man die Textboxen durch, dann kann man zwar einfach mit der Schleife darauf zugreifen, verliert aber die Übersichtlichkeit.
In deinem Fall würde ich es so lassen wie es ist, eine Schleife bringt da kaum Vorteile.
Gruß Sepp

Anzeige
Danke Sepp für deinen Tipp (owT)
02.02.2018 20:01:47
Peer
AW: Schleifen in VBA
02.02.2018 20:07:32
Gerd
Hallo Peer,
für den Anfang hast du m.E. mit den Textboxen zuviel angestellt.
Mit den Standardname würde bspw. dies gehen.
Private Sub CommandButton1_Click()
Dim X As Long
For X = 1 To 3
Sheets("Tabelle1").Cells(X, 4) = CCur(Controls("TextBox" & X))
Next
End Sub
cu Gerd
AW: Schleifen in VBA
02.02.2018 22:23:42
Peer
Hallo Gerd.
Ich dachte es mir schon.
Bedeutet es, dass die Schleife 3 mal durchlaufen muss?
Und wenn ja, warum?
LG
Peer
AW: Schleifen in VBA
02.02.2018 21:27:08
onur
Anscheinend hapert es bei dir nicht nur in Sachen VBA-Kenntnisse, sondern auch in Sachen guten Benehmens.
Wenn jemand sich schon die Mühe macht, dir zu antworten, solltest du wenigstens diese Antwort lesen und (wie auch immer) darauf reagieren.
Anzeige
AW: Schleifen in VBA
02.02.2018 22:20:55
Peer
Hallo onur.
Entschuldige, dass ich dir nicht gleich antworte.
Glaube mir, ich besitze schon Benehmen. Ich konnte nur deine Antwort nicht so schnell verstehen. Und ich tue es immer noch nicht.
Und dass meine VBA Kenntnisse nicht deinen Vorstellungen entsprechen, war auch der Grund meiner Anfrage.
Wenn ich gute VBA Kenntnisse hätte, würde ich wahrscheinlich nicht (für dich) so einfache Fragen stellen.
Und damit du siehst, dass ich Benehmen habe, beende ich ich diesen Artikel mit einem Gruß.
LG
Peer

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige