Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1624to1628
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
in der Userform if elseIf
30.05.2018 14:46:21
Jasmin.azarmin
Hallo, da mir hier immer so toll geholfen wurde wäre ich dankbar wenn Ihr nochmal Zeit hättet.
Ich habe eine Userform mit 4 Checkboxen (at1350s,dd45s,hda300,einstecks) und einen CommandButton. Ich möchte dass das Programm mehrere Bedingungen durchgeht. Hier mein Programm:
Private Sub CommandButton1_Click()
''__Sprachaudiometrie__
Dim Zeile1
Dim Zeile2
Dim tausch1
Dim tausch2
Dim Quelltab As Worksheet
Dim Zieltab As Worksheet
'Kombi 1: Nur At1350
If Me.at1350s Then
''Überschrit
Range("A185").Formula = "AT1350"
With Range("A185")
.Font.Name = "Arial"
.Font.Size = 7
.Font.Bold = True
End With
''Gc-GF Werte
Zeile1 = 188 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "C153:C159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch1 In Quelltab.Range("C153:C159")
Zieltab.Cells(Zeile1, 6) = tausch1
Zeile1 = Zeile1 + 1
Next tausch1
''Tabelle 2 löschen
Range("A198:K211").EntireRow.Delete
''Kombi 2: Nur DD45
ElseIf Me.dd45s Then
''Überschrit
Range("A185").Formula = "DD45"
With Range("A185")
.Font.Name = "Arial"
.Font.Size = 7
.Font.Bold = True
End With
''Gc-GF Werte
Zeile1 = 188 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "B153:B159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch1 In Quelltab.Range("B153:B159")
Zieltab.Cells(Zeile1, 6) = tausch1
Zeile1 = Zeile1 + 1
Next tausch1
''Tabelle 2 löschen
Range("A198:K211").EntireRow.Delete
''Kombi 3: Nur Einsteck
ElseIf Me.einstecks Then
''Überschrit
Range("A185").Formula = "Einsteckhörer"
With Range("A185")
.Font.Name = "Arial"
.Font.Size = 7
.Font.Bold = True
End With
''Gc-GF Werte
Zeile1 = 188 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "E153:E159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch1 In Quelltab.Range("E153:E159")
Zieltab.Cells(Zeile1, 6) = tausch1
Zeile1 = Zeile1 + 1
Next tausch1
''Tabelle 2 löschen
Range("A198:K211").EntireRow.Delete
''Kombi 4: Nur HDA300
ElseIf Me.einstecks Then
''Überschrit
Range("A185").Formula = "HDA300"
With Range("A185")
.Font.Name = "Arial"
.Font.Size = 7
.Font.Bold = True
End With
''Gc-GF Werte
Zeile1 = 188 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "D153:D159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch1 In Quelltab.Range("D153:D159")
Zieltab.Cells(Zeile1, 6) = tausch1
Zeile1 = Zeile1 + 1
Next tausch1
''Tabelle 2 löschen
Range("A198:K211").EntireRow.Delete
''Kombi 5: AT1350 und DD45
ElseIf Me.at1350s And Me.dd45s Then
''Überschrit
Range("A185").Formula = "AT1350"
Range("A200").Formula = "DD45"
With Range("A185,A200")
.Font.Name = "Arial"
.Font.Size = 7
.Font.Bold = True
End With
Zeile1 = 188 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "C153:C159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch1 In Quelltab.Range("C153:C159")
Zieltab.Cells(Zeile1, 6) = tausch1
Zeile1 = Zeile1 + 1
Next tausch1
Zeile2 = 203 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "B153:B159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch2 In Quelltab.Range("B153:B159")
Zieltab.Cells(Zeile2, 6) = tausch2
Zeile2 = Zeile2 + 1
Next tausch2
''Kombi 6: AT1350 und Einsteck
ElseIf Me.at1350s And Me.einstecks Then
''Überschrit
Range("A185").Formula = "AT1350"
Range("A200").Formula = "Einsteckhörer"
With Range("A185,A200")
.Font.Name = "Arial"
.Font.Size = 7
.Font.Bold = True
End With
Zeile1 = 188 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "C153:C159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch1 In Quelltab.Range("C153:C159")
Zieltab.Cells(Zeile1, 6) = tausch1
Zeile1 = Zeile1 + 1
Next tausch1
Zeile2 = 203 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "E153:E159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch2 In Quelltab.Range("E153:E159")
Zieltab.Cells(Zeile2, 6) = tausch2
Zeile2 = Zeile2 + 1
Next tausch2
'Kombi 7: AT1350 und HDA300
ElseIf Me.at1350s And Me.hda300s Then
''Überschrit
Range("A185").Formula = "AT1350"
Range("A200").Formula = "HDA300"
With Range("A185,A200")
.Font.Name = "Arial"
.Font.Size = 7
.Font.Bold = True
End With
Zeile1 = 188 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "C153:C159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch1 In Quelltab.Range("C153:C159")
Zieltab.Cells(Zeile1, 6) = tausch1
Zeile1 = Zeile1 + 1
Next tausch1
Zeile2 = 203 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "D153:D159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch2 In Quelltab.Range("D153:D159")
Zieltab.Cells(Zeile2, 6) = tausch2
Zeile2 = Zeile2 + 1
Next tausch2
'Kombi 8: Einsteck und DD45
ElseIf Me.einstecks And Me.dd45s Then
''Überschrit
Range("A185").Formula = "Einsteckhörer"
Range("A200").Formula = "DD45"
With Range("A185,A200")
.Font.Name = "Arial"
.Font.Size = 7
.Font.Bold = True
End With
Zeile1 = 188 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "E153:E159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch1 In Quelltab.Range("E153:E159")
Zieltab.Cells(Zeile1, 6) = tausch1
Zeile1 = Zeile1 + 1
Next tausch1
Zeile2 = 203 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "B153:B159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch2 In Quelltab.Range("B153:B159")
Zieltab.Cells(Zeile2, 6) = tausch2
Zeile2 = Zeile2 + 1
Next tausch2
'Kombi 9: HDA300 und DD45
ElseIf Me.hda300s And Me.dd45s Then
''Überschrit
Range("A185").Formula = "HDA300"
Range("A200").Formula = "DD45"
With Range("A185,A200")
.Font.Name = "Arial"
.Font.Size = 7
.Font.Bold = True
End With
Zeile1 = 188 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "D153:D159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch1 In Quelltab.Range("D153:D159")
Zieltab.Cells(Zeile1, 6) = tausch1
Zeile1 = Zeile1 + 1
Next tausch1
Zeile2 = 203 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "B153:B159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch2 In Quelltab.Range("B153:B159")
Zieltab.Cells(Zeile2, 6) = tausch2
Zeile2 = Zeile2 + 1
Next tausch2
'Kombi 10: HDA300 und Einsteck
ElseIf Me.hda300s And Me.einstecks Then
''Überschrit
Range("A185").Formula = "HDA300"
Range("A200").Formula = "Einsteckhörer"
With Range("A185,A200")
.Font.Name = "Arial"
.Font.Size = 7
.Font.Bold = True
End With
Zeile1 = 188 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "D153:D159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch1 In Quelltab.Range("D153:D159")
Zieltab.Cells(Zeile1, 6) = tausch1
Zeile1 = Zeile1 + 1
Next tausch1
Zeile2 = 203 ''ab welcher Zeile die Werte eingefügt werden
Bereich = "E153:E159"
Set Quelltab = ActiveWorkbook.Worksheets("MP1")
Set Zieltab = ActiveWorkbook.Worksheets("AT1000")
For Each tausch2 In Quelltab.Range("E153:E159")
Zieltab.Cells(Zeile2, 6) = tausch2
Zeile2 = Zeile2 + 1
Next tausch2
'Kombi 11: Keine Sprachaudiometrie
Dim Auswahl As Boolean
Auswahl = Auswahl Or hda300s
Auswahl = Auswahl Or einstecks
Auswahl = Auswahl Or dd45s
Auswahl = Auswahl Or at1350s
ElseIf Not Auswahl Then
Range("A166:K219").EntireRow.Delete
End If
Unload Me
End Sub

Das Problem ist, dass wenn ich AT1350 UND z.B. DD45 auswähle, nur die erste Anweisung ausgelöst wird. Das heißt Nur AT1350 und DD45 ignoriert er. Die Tabelle für AT1350 wird ausgefüllt und für DD45 nicht. Könnt ihr mir da weiterhelfen?
lg Jasmin

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: in der Userform if elseIf
30.05.2018 16:01:56
ChrisL
Hi Jasmin
Wenn eine Bedingung separat gilt, dass musst du es aus dem If-/End-If raus nehmen.
If Bedingung Then
'Code
ElseIf Bedingung Then
'Code
ElseIf Bedingung Then
'Code
End If
If Bedingung-Separat Then
'Code
End If
cu
Chris
AW: in der Userform if elseIf
30.05.2018 16:11:33
Daniel
Hi
Bei ElseIF ist es so das sobald eine Bedingung WAHR wurde und der entsprechende Block ausgeführt wurde, der gesamte IF-Block verlassen wird und die weitern Bedingungen nicht mehr geprüft werden.
wenn es möglich ist, dass mehrere Blöcke ausgeführt werden müssen, solltest du eigenständige IF-Blöcke erstellen.
oder du musst wirklich jeden der 16 möglichen Fälle abbilden und die Prüfung so schreiben, dass es keine Überschneidungen gibt:
If Ch1 and Not Ch2 and not Ch3 and not Ch4 then
...
ElseIF Ch1 and Ch2 and not Ch3 and not Ch4 then
...
ElseIf Ch1 and Ch2 and Ch3 and not ch4 then
...
ElseIf Ch1 and Ch2 and Ch3 and Ch4 then
...
ElseIf not Ch1 and Ch2 and not Ch3 and not Ch4 then
...
usw
Gruß Daniel
Anzeige
AW: in der Userform if elseIf
30.05.2018 18:24:51
Jasmin.azarmin
Hallo nochmal, danke für die tollen Tipps. Haben alle geholfen und ich hab es sogar verstanden haha
lg Jasmin
AW: in der Userform if elseIf
30.05.2018 20:39:09
Gerd
Hallo Jasmin,
bliebe für mich noch zu fragen, was du bei drei oder vier Haken machst?
Gruß Gerd
AW: in der Userform if elseIf
30.05.2018 16:24:26
KlaWet
Hi Jasmin,
eventuell bringt es dich schon weiter, wenn du die Reihenfolge des Codes änderst.
Setze die Doppel-Bedingungen an den Anfang und die einfachen dahinter.
Wenn die Doppel-Bedingungen dann nicht passen arbeitet der Code die Einzelnen durch.
Gruß
KlaWet

90 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige