Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
388to392
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
388to392
388to392
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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?

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige