Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Verschachtelte If-Schleifen

Forumthread: Verschachtelte If-Schleifen

Verschachtelte If-Schleifen
28.02.2004 16:27:55
Benjamin Gaus
ich habe eine Eingabe programmiert, wo die fehlenden vom Lehrabend eingetragen werden können:
Aber wenn ich jetzt 3 Eingebe, macht er 2 neue Zeilen. Es würde eine reichen. Weil in der ersten hat einer Platz und in der 2 Zeile 2! Dann sollte die 2 IF-Schleife greifen, das macht diese aber nicht. warum denn nicht?
Abwesend_SR = 3 (Eingabe)
prompt2 = "davon Abwesend geltende Gruppen-SR?"
Abwesend_SR = Application.InputBox(prompt2)
If Abwesend_SR = Falsch Then
Tabelle1.Cells(27, 6).Value = 0
ElseIf Abwesend_SR > 0 Then
zeile = 29
spalte = 4
zaehler1 = 1
For i = 1 To Abwesend_SR
prompt21 = "Namen der Abwesenden geltenden Gruppen-SR? (Einzel Eingabe der Personen!)"
Namen_Abwesend = Application.InputBox(prompt21)
Tabelle1.Cells(zeile, spalte).Value = Namen_Abwesend
If spalte = 4 Then
diese IF --> If zaehler1 = Abwesend_SR Then
Else
zeile = zeile + 1
spalte = 1
Range("A" & zeile).Select
Selection.EntireRow.Insert
Range("A" & zeile, "G" & zeile).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Font.Bold = False
With Selection.Font
.Name = "Arial"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
End If
zaehler1 = zaehler1 + 1
ElseIf spalte = 1 Then
spalte = spalte + 3
zaehler1 = zaehler1 + 1
End If
Tabelle1.Cells(20, 10).Value = Abwesend_SR
Tabelle1.Cells(20, 11).Value = zaehler1
Tabelle1.Cells(20, 12).Value = spalte
Tabelle1.Cells(20, 13).Value = zeile
Next i
Tabelle1.Cells(27, 6).Value = Abwesend_SR
Else
Tabelle1.Cells(27, 6).Value = Abwesend_SR
End If
Excel-Tabelle, so sollte es aussehen:
29: Namen x
30: y z
so ist es falsch:
29: Name x
30: y z
31:
also hat die Zeile 31 erstellt und das sollte mit der markierten IF-Schleife (If zaehler1 = Abwesend_SR Then) Abgefangen werden, was das Programm nicht macht!
was ist falsch?
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verschachtelte If-Schleifen
28.02.2004 19:32:32
Dieter Klemke
Hallo Benjamin,
wenn ich in deinem Programm-Fragment die eine auskommentierte If-Abfrage so ersetze, wie im folgenden Programm zu ersehen, dann wird bei 3 Abwesenden keine zusätzliche 2. Zeile mehr eingefügt.
Das Problem liegt m.E. daran, dass aufgrund der nicht spezifizierten Datentypen der Vergleich "Abwesend_SR = zaehler1" nie zu dem Wert "wahr" führt.

Sub test()
Dim Abwesend_SR As Long
Dim txt As String
'Abwesend_SR = 3 (Eingabe)
Tabelle1.UsedRange.Clear
prompt2 = "davon Abwesend geltende Gruppen-SR?"
txt = Application.InputBox(Prompt:=prompt2, Type:=2)
If txt = "Falsch" Then
' Abbruch
Tabelle1.Cells(27, 6).Value = 0
Else
Abwesend_SR = txt
If Abwesend_SR > 0 Then
' positiver Eingabewert
zeile = 29
spalte = 4
zaehler1 = 1
For i = 1 To Abwesend_SR
prompt21 = "Namen der Abwesenden geltenden Gruppen-SR? (Einzel Eingabe der Personen!)"
Namen_Abwesend = Application.InputBox(prompt21)
Tabelle1.Cells(zeile, spalte).Value = Namen_Abwesend
If spalte = 4 Then
If zaehler1 = Abwesend_SR Then
Else
zeile = zeile + 1
spalte = 1
Range("A" & zeile).EntireRow.Insert
With Range("A" & zeile, "G" & zeile)
With .Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With .Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
End With
With .Font
.Name = "Arial"
.Size = 11
End With
End With
End If
zaehler1 = zaehler1 + 1
ElseIf spalte = 1 Then
spalte = spalte + 3
zaehler1 = zaehler1 + 1
End If
Tabelle1.Cells(20, 10).Value = Abwesend_SR
Tabelle1.Cells(20, 11).Value = zaehler1
Tabelle1.Cells(20, 12).Value = spalte
Tabelle1.Cells(20, 13).Value = zeile
Next i
Tabelle1.Cells(27, 6).Value = Abwesend_SR
Else
' negativer Eingabewert
Tabelle1.Cells(27, 6).Value = Abwesend_SR
End If
End If
End Sub

MfG
Dieter
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige