Anzeige
Archiv - Navigation
900to904
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
900to904
900to904
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehlermeldung

Fehlermeldung
24.08.2007 15:56:34
Birgit
Hallo VBA-Meister!
Ich habe gleich noch eine 2. Baustelle _ Fehlermeldung "End With ohne With". Kann mir bitte jemand diese Fehlermeldung erklären?
Der Code soll folgendes bewirken: über verschiedene Optionbuttens kann eine Kategorie ausgewählt werden. Danach sollen alle zu dieser Kategorie gehörenden Artikel in der Listbox angezeigt werden. Anscheinend habe ich mich irgendwo "verdaddelt". Im Moment verstehe ich jedenfalls absolut nicht, was der Compiler von mir will.... Hilfe!
Gruß Birgit
Hier ist der Code:

Private Sub cmdArtGruppeSuchen_Click()
'Suchen nach Artikeln einer Artikelgruppe
Dim s As String
Dim i As Integer
With UserFormSuchen
.ListBox1.Clear
If OptionButton1.Caption = True Then
s = OptionButton1.Caption
If OptionButton2.Caption = True Then
s = OptionButton2.Caption
If OptionButton3.Caption = True Then
s = OptionButton3.Caption
If OptionButton4.Caption = True Then
s = OptionButton4.Caption
If OptionButton5.Caption = True Then
s = OptionButton5.Caption
If OptionButton6.Caption = True Then
s = OptionButton6.Caption
If OptionButton7.Caption = True Then
s = OptionButton7.Caption
If OptionButton8.Caption = True Then
s = OptionButton8.Caption
If OptionButton9.Caption = True Then
s = OptionButton9.Caption
If OptionButton10.Caption = True Then
s = OptionButton10.Caption
End If
Sheets("Artikel-DB_VKF").Activate
Range("E9").Select
i = 0
Do Until ActiveCell.Value = ""
If InStr(ActiveCell.Value, s) > 0 Then
.ListBox1.AddItem ActiveCell.Value
.ListBox1.Column(1, i) = ActiveCell.Offset(0, -1).Value
.ListBox1.Column(2, i) = ActiveCell.Offset(0, 2).Value
.ListBox1.Column(3, i) = ActiveCell.Offset(0, 3).Value
.ListBox1.Column(4, i) = ActiveCell.Offset(0, 4).Value
.ListBox1.Column(5, i) = ActiveCell.Offset(0, 8).Value
.ListBox1.Column(6, i) = ActiveCell.Offset(0, 9).Value
.ListBox1.Column(6, i) = ActiveCell.Offset(0, 10).Value
i = i + 1
Else
End If
ActiveCell.Offset(1, 0).Select
Loop
End With
End Sub


7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehlermeldung
24.08.2007 16:03:11
Peter
Hallo Birgit,
deine 10 If sind nicht mit einem End If zufrieden, jeder möchte sein eigenes End If haben.
sonst müsstest du ElseIf verwenden.
Gruß Peter

AW: Fehlermeldung
24.08.2007 16:03:00
Hajo_Zi
Halo Birgit,
Du hast so ca. 9x End if vergessen.
Option Explicit

Private Sub cmdArtGruppeSuchen_Click()
'Suchen nach Artikeln einer Artikelgruppe
Dim s As String
Dim i As Integer
With UserFormSuchen
.ListBox1.Clear
If OptionButton1.Caption = True Then
s = OptionButton1.Caption
ElseIf OptionButton2.Caption = True Then
s = OptionButton2.Caption
ElseIf OptionButton3.Caption = True Then
s = OptionButton3.Caption
ElseIf OptionButton4.Caption = True Then
s = OptionButton4.Caption
ElseIf OptionButton5.Caption = True Then
s = OptionButton5.Caption
ElseIf OptionButton6.Caption = True Then
s = OptionButton6.Caption
ElseIf OptionButton7.Caption = True Then
s = OptionButton7.Caption
ElseIf OptionButton8.Caption = True Then
s = OptionButton8.Caption
ElseIf OptionButton9.Caption = True Then
s = OptionButton9.Caption
ElseIf OptionButton10.Caption = True Then
s = OptionButton10.Caption
End If
Sheets("Artikel-DB_VKF").Activate
Range("E9").Select
i = 0
Do Until ActiveCell.Value = ""
If InStr(ActiveCell.Value, s) > 0 Then
.ListBox1.AddItem ActiveCell.Value
.ListBox1.Column(1, i) = ActiveCell.Offset(0, -1).Value
.ListBox1.Column(2, i) = ActiveCell.Offset(0, 2).Value
.ListBox1.Column(3, i) = ActiveCell.Offset(0, 3).Value
.ListBox1.Column(4, i) = ActiveCell.Offset(0, 4).Value
.ListBox1.Column(5, i) = ActiveCell.Offset(0, 8).Value
.ListBox1.Column(6, i) = ActiveCell.Offset(0, 9).Value
.ListBox1.Column(6, i) = ActiveCell.Offset(0, 10).Value
i = i + 1
Else
End If
ActiveCell.Offset(1, 0).Select
Loop
End With
End Sub


In VBA kann zu 99,9% auf select und Activate verzichtet werden.

Anzeige
AW: Fehlermeldung
24.08.2007 16:27:40
Birgit
Hallo Hajo, Hallo Renee!
ich hätte auch selbst drauf kömmen müssen, dass Endif die richtige variante ist. Sorry. Verzeiht einem Anfänger diese dämlichen Fehler. Leider hängt sich das ganze jetzt daran auf, dass in der 1. If-Zeile eine Typenunverträglichkeit angezeigt wird. Wieso dass? Optionbutton.caption wird jedesmal richtig ausgewertet...
Gruß Birgit

AW: Fehlermeldung
24.08.2007 16:32:41
Hajo_Zi
Hallo Birgit,
ich baue das nicht nach.
Gruß Hajo

AW: Fehlermeldung
24.08.2007 16:37:45
Renee
Hallo Birgit,
Die .Caption Eigenschaft ist ein String, den kannst Du nicht auf einen Wahrheitswert (True/False) abfragen. Den Optionbutton (ob gesetzt oder nicht ) fragst Du einfach so ab:

If OptionButton1 Then s = OptionButton1.Caption


Greetz Renee

Anzeige
AW: Fehlermeldung
24.08.2007 16:41:00
fcs
Hallo Birgit,
du muss immer auf die Eigenschaft Value prüfen, um den Schaltzustand der Buttons abzufragen

If OptionButton1.Value = True Then
s = OptionButton1.Caption
end if


Ein Optionbutton gibt als Wert immer False oder True zurück.
Gruß
Franz

AW: Fehlermeldung
24.08.2007 16:05:02
Renee
Hallo Birgit,
Alle diese Zeilen:

If OptionButton1.Caption = True Then
s = OptionButton1.Caption


müssten so geschrieben sein:


If OptionButton1.Caption = True Then s = OptionButton1.Caption


Siehe dazu die Online-Hilfe (Cursor im VBEditor auf If und F1)!
Greetz Renee
Bemerkung: auf der Baustelle wird zwar viel gearbeitet, aber die Produktivität ist miserabel.

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige