Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Fehlermeldung

Forumthread: 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


Anzeige

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

Anzeige
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

Anzeige
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
;

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