PDA

Vollständige Version anzeigen : Methode oder Datenobjekt nicht gefunden


pmüller
02.07.2014, 08:55
Hallo,

bin neu hier im Forum und Grund dafür ist, das ich bei einem VBA Problem einfach nicht mehr weiter komme.

Und zwar habe ich mehrere Listboxen in zwei verschiedenen Auswahlfenstern.
Im DIN Auswahlfenster werden sämtliche Listboxen richtig gefunden.

In dem zweiten Auswahlfenster (das lilane) jedoch werden sie meist nicht korrekt gefunden.

Speicher ich ab und öffne es wieder kommt meist Fehler beim kompilieren und die Meldung "Methode oder Datenobjekt nicht gefunden".

Der Code funktioniert danach dennoch bloß die Fehlermeldung sollte abgestellt werden.

Vielleicht könnt ihr mir helfen. :)

chris-kaiser
02.07.2014, 09:09
Hi,

dem Programm ist nicht klar das es sich um ein Tabellenblatt handelt, wenn die Tabelle nicht gerade das aktive ist.

Dim sh As Worksheet
Set sh = AuswahlA
sh.ListBox5.Clear


ich würde nicht nur den Codenamen einfach ohne Deklaration und Initialisierung verwenden.

in der Form müsste es ohne Fehlermeldung gehen, bzw. würde ich das überall in der Form empfehlen.

pmüller
02.07.2014, 09:15
Muss ich das dann bei allen Methoden einzeln deklarieren oder kann ich das Global für das gesamte Workbook machen?

EDIT:


Private Sub ListBox2_Click()

Set sh = AuswahlA

sh.ListBox5.Clear

count = sh.ListBox2.ListIndex + 1

Bauteil = sh.ListBox3.ListIndex + 1

If Bauteil = 1 Or Bauteil = 2 Then
sh.ListBox4.ListFillRange = "Nennweite" & "_A" & count
Else
sh.ListBox4.ListFillRange = ""
End If

End Sub

Fehler bleibt bestehen :/ findet die Listboxen dennoch nicht.

chris-kaiser
02.07.2014, 09:27
Hi,

Global habe ich selten etwas liegen^^
dies wäre zu testen, ob das geht.

Ich persönlich würde Variablen auch nicht in der Form verwenden wie du diese im Moment im Einsatz hast...

Beispiel:
im Blatt AuswahlD
Variable Material, Bauteil, usw, für das gesamte Blatt gesetzt, und dann bei einem Klick- Ergebnis noch einmal als lokale Variablen mit gleichem Namen.

Das wäre für mich jetzt zu verwirrend.
Soll nicht heißen das es nicht funktioniert!
Nur jetzt die ganze Zeit zu debuggen um zu sehen wo jetzt welche Variable welchen Wert hat....

Private Sub ListBox2_Click()
dim sh as Worksheet
Set sh = AuswahlA

sh.ListBox5.Clear

count = sh.ListBox2.ListIndex + 1

Bauteil = sh.ListBox3.ListIndex + 1

If Bauteil = 1 Or Bauteil = 2 Then
sh.ListBox4.ListFillRange = "Nennweite" & "_A" & count
Else
sh.ListBox4.ListFillRange = ""
End If

End Sub

pmüller
02.07.2014, 09:44
Hi,


Ich persönlich würde Variablen auch nicht in der Form verwenden wie du diese im Moment im Einsatz hast...

Beispiel:
im Blatt AuswahlD
Variable Material, Bauteil, usw, für das gesamte Blatt gesetzt, und dann bei einem Klick- Ergebnis noch einmal als lokale Variablen mit gleichem Namen.

Das wäre für mich jetzt zu verwirrend.
Soll nicht heißen das es nicht funktioniert!
Nur jetzt die ganze Zeit zu debuggen um zu sehen wo jetzt welche Variable welchen Wert hat....




Wie würdest du denn empfehlen die Variablen einzusetzen?

Naja ich weiß ja wo welche Variable welchen Wert hat, und alles was mit den Variablen zutun hat funktioniert ja auch wie ich es will.

Das Problem ist wie gesagt lediglich das er die ListBoxes im Auswahlblatt (Auswahl ASME) nicht erkennt bzw. findet wenn ich drauf zugreifen will.


Wenn ich die Sheets direkt anspreche mit

AuswahlA.ListBox5.Clear

dann kommt bloß beim Start der Excel die Fehlermeldung aber der Code der drin liegt funktioniert danach dennoch.

Sehr verwirrend

chris-kaiser
02.07.2014, 09:52
Hi,

so geht es bei mir, Off2013

pmüller
02.07.2014, 10:04
Und wenn du es z.B. einmal im DIN Auswahlfenster abspeicherst und dann wieder öffnest?

dann kommt bei mir wieder die Fehlermeldung.

Das bringt mich hier noch um :D


Der Code in AuswahlD funktioniert ja auch einwandfrei, aber in AuswahlA funktioniert exakt derselbe Code nicht.

chris-kaiser
02.07.2014, 10:37
Hi,

hmm, was ist überhaupt Listbox2?
das kann ich gar nicht finden!

daran liegt es!
deine Steuerlemente heißen zum Teil anders als im Code

teste das mal auf dem jeweiligen Blatt

Sub elemente()
Dim sh
For Each sh In ActiveSheet.Shapes
MsgBox sh.Name
Next
End Sub

kommt da Listbox2 vor ?

pmüller
02.07.2014, 10:42
Das hab ich jetzt auch abgeändert gehabt.

nun sind die Listboxes von links nach rechts nummeriert.


Auffällig ist, dass wenn beim Start des Blattes keine Fehlermeldung kommt und ich dann abspeichere und wieder öffne dann immer die oben genannte Meldung kommt.


Aber wenn ich dann die ListBox anklicke und der Code ausgeführt wird meckert er nicht rum.
Also kann der Code ja nicht falsch sein.

chris-kaiser
02.07.2014, 11:14
Hi,

Ich habe mal alles aufgeräumt,
danach kam aber immer noch eine Fehlermeldung.
Dann alle NAMEN aus dem Listfillrange entfernt und nun geht es keine Fehlermeldung, aber natürlich sind die Listboxen ohne Inhalt.

Warum auch immer....,

pmüller
02.07.2014, 12:47
Ich hab jetz den Such Code mal entfernt und nur das mit den Listboxen reingemacht.

Ich möchte das in Abhängigkeit von der Nennweite und dem Bauteil in der Varianten Listbox eine andere Liste angezeigt wird.

heißt bei Bauteil Reduzier und T-Stück werden in Listbox 4 alle dafür erhältlichen Varianten angezeigt.

Dies funktioniert auch sobald ich alle Fehlermeldungen weggeklickt habe.

Ich möchte aber die Fehlermeldungen nicht erst wegklicken müssen.