Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1264to1268
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

Schleifenproblem

Schleifenproblem
Berni
Guten Morgen Excellenzen!
Ich bin gerade dabei, ein Planungsformular für die nächsten Jahre zusammenzubasteln. Habe das für ein Jahr auch noch ganz gut hingekriegt. Nur bei der Schleife habe ich ein Problem, dass er die nächste Zeile auswählt. Habe ich vielleicht den Zeilenzähler an die falsche Stelle gesetzt?
Vielleicht kann mir jemand hier weiterhelfen. Ich lege einmal das file bei.
https://www.herber.de/bbs/user/80346.xls
Schöne Grüße Berni

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Schleifenproblem
30.05.2012 08:00:51
Reinhard
Hallo Berni,
meinst du so:
Option Explicit
Sub MehrereEingabenErfassen()
Dim i As Long
Dim zl As Integer
Dim Zeile As Long
Dim Zeilemax As Long
With Tabelle1
Zeilemax = .UsedRange.Rows.Count
zz = .Range("A65536").End(xlUp).Row + 1
'äußere Schleife
For Zeile = 2 To Zeilemax
For zl = 2 To 13
i = Application.InputBox(prompt:="Zahl eingeben:", Type:=1)
If i Then
.Cells(Zeile, zl).Value = i
Else
Exit Sub
End If
Next zl
Next Zeile
End With
End Sub

Gruß
Reinhard
AW: Schleifenproblem
30.05.2012 10:14:47
Berni
Danke Reinhard!
Code funktioniert (fast) perfekt. Ich muss nur noch in den Griff bekommen, dass ich nicht raus fliege, wenn ich in einem Monat nichts (bzw. 0) eingebe. Lässt sich das etwa mit dem exit sub bewerkstelligen?
schöne Grüße aus Tirol
Berni
Anzeige
AW: Schleifenproblem
30.05.2012 10:49:27
Rudi
Hallo,
Sub MehrereEingabenErfassen()
Dim i
Dim Spalte As Integer
Dim Zeile As Long
Dim Zeilemax As Long
With Tabelle1
Zeilemax = .UsedRange.Rows.Count
zz = .Range("A65536").End(xlUp).Row + 1
'äußere Schleife
For Zeile = 2 To Zeilemax
For Spalte = 2 To 13
i = Application.InputBox( _
prompt:="Zahl eingeben:", _
Title:="Eingabe " & Cells(Zeile, Spalte).Address(0, 0), _
Type:=1)
If VarType(i) = vbBoolean Then Exit Sub 'Klick auf Abbruch
.Cells(Zeile, Spalte).Value = i
Next Spalte
Next Zeile
End With
End Sub
Gruß
Rudi
AW: Schleifenproblem
30.05.2012 11:26:47
Berni
Danke Rudi!
Code lässt jetzt keine Wünsche mehr übrig. Ich habe vergessen zz als Dimension zu benennen. Aber das ist ja ein Mini-Problem.
Danke und schöne Grüße
Berni
Anzeige
? Du brauchst kein zz, lösche die Zeile o.w.T.
30.05.2012 11:36:42
Reinhard

AW: Schleifenproblem
30.05.2012 11:26:29
Reinhard
Hallo Berni,
Rudi hat ja schon gelöst.
Lösche mal die Zeile
zz = .Range("A65536").End(xlUp).Row + 1
hatte ich vergessen zu löschen.
Und bitte stelle im Vba-Editor bei Optionen "Variablendeklaration erforderlich" ein.
Dann hast du bei Nuecode immer pro Modul oben "Option Explicit" stehen.
Dadurch wäre "zz" aufgeflogen und der Debugger hätte gemeckert.
(Ich hatte ohne Option Explicit getestet deshalb stand da noch zz=...)
Rudi war so nett und hat deine Variablenbezeichnung verbessert, Spalte ist ein sprechender name,
Zeile auch, aber zl nicht.
Wenn du wieder mal die Zeilennummer der untersten belegten Zelle einer Spalte brauchst,
benutze nicht
zz = .Range("A65536").End(xlUp).Row + 1
sondern
zz = .Cells(Rows.count, 1).End(xlUp).Row + 1
bzw.
zz = .Cells(Rows.count, "A").End(xlUp).Row + 1
DEnn die erste Formel versagt wenn A 100.000 gefüllte Zellen hat.
Gruß
Reinhard
Anzeige
AW: Schleifenproblem
30.05.2012 11:31:41
Berni
Danke Reinhard!
Ist ein guter Tipp. Ich bin es immer noch gewohnt im .xls herum zu basteln. Wenn ich aber tatsächlich einmal das file im .xlsx oder .xlsm abspeichere, dann ist dein Befehl auf alle Fälle wasserdicht.
Danke nochmals und
schöne Grüße
Berni
AW: Schleifenproblem
30.05.2012 08:02:56
UweD
Hallo Berni
hier liegt der Fehler.
Sheets("Tabelle1").Cells(Zeile, zl).Value = i
Gruß UweD

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige