Befehl funktioniert nicht

Hallo.

Ich möchte gerne zu von den Befehlen Select und activate wegkommen (Tipp von Reinhard, danke dafür)
Aber ich komme da nicht weiter, da ich immer wieder einen Fehler bekomme (Programm bricht immer bei dieser Zeile ab).
Was mache ich da falsch?

Windows(„Lagerverwaltung.xls“).Sheets(„Formel“).Range(„C65“) = ComboBox3

Danke

Ich möchte gerne zu von den Befehlen Select und activate
wegkommen (Tipp von Reinhard, danke dafür)
Aber ich komme da nicht weiter, da ich immer wieder einen
Fehler bekomme (Programm bricht immer bei dieser Zeile ab).

Hallo Anton,

vielleicht so:
Workbooks(„Lagerverwaltung.xls“).Sheets(„Formel“).Range(„C65“) =ComboBox3

Ich persönlich nehme seltenst bis gar nicht „Windows()“, auch in Code von Profis sehe ich das nahezu nie.

Gruß
Reinhard

Hall Reinhard.
Danke für deine Antwort.

Ich bekomme aber auch so (Workbooks(„Lagerverwaltung.xls“).Sheets(„Formel“).Range(„C65“)
=ComboBox3) eine Fehlermeldung:
Laufzeitfehler 9
Index ausserhalb des gültigen Bereichs

Wenn ich es so schreibe :

Windows(„Lagerplatzverwaltung.xls“).Activate
Sheets(„Formel“).Select
Range(„C65“) = ComboBox3

dann funktioniert alles ohne Probleme.

Weißt du wieso?

Danke

Mfg Anton

Hallo Anton,

ich kann das hier schon nachstellen, aber dann läuft ja mein Code über meine nachgestellte Tabelle, was bedeutet ggfs. läuft er bei mir, bei dir aber nicht.

Lade also bitte eine Kopie deiner Datei hoch mit FAQ:2861
Prinzipiell brauche ich nur die vorhandenen Codes, die Combobox und evtl die Zellen die die Combobox befüllen. Alles andere kannste j löschen.
Wichtig ist einzig daß in der abgespeckten Mappe der gleiche Fehler auftritt.

Oftmals kommt deine Fehlermeldung wenn etwas nicht existiert mit dem Namen, also falsche Schreibweise eines Blattnamens o.ä…
Da dein zweiter Codeschnipsel funktioniert ist das wohl nicht der Fall.

Gruß
Reinhard

Hallo Reinhard.

Hier der Link von meinem Programm:
http://www.hostarea.de/server-03/Maerz-b5795b69ba.xls

In VBA Editor das UF „Anlieferung“
Code von der Combobox3

Hier ist eben das Problem, welches ich dir schon letzte Woche geschildert habe, das mir das Programm dort abbricht.

Wenn ich in meiiner alten Schreibweise (activate usw…) habe ich zumindest im ersten Teil (ausfüllen des Userforms Anlieferung keine Probleme.
Nur sobald ich auf den Button „Übernehmen“ klicke, bekomme ich den Fehler ab den Zeitpunkt, wo er von die Zeile von der Datei (Vorgabe.xls) löscht.
Bei diesem Befehl hüpft er zum Makro von der ComboBox3
(Wie du mir geschildert hast, muss er das machen, da die Liste der ComboBox3 dadurch geändert wird. Du hast mir da zwar einen Tip gegeben, das ich den Inhalt der ComboBox in de´r Variable „Merker“ setzen lassen soll, nur das hat nicht funktioniert. Vieleicht siehst du, welchen Fehler ich dabei gemacht habe (Habe deinen Tip auskommandiert))
und hier bekomme ich dann den Fehler (Ich hoffe, das dieser Fehler mit der anderen Schreibweise ausgemerzt wird (Oder es funktioniert mit der Variable „Merker“, damit das Makro beim löschen nicht mehr zur ComboBox hüpft).

Ich währe dir wirklich sehr dankbar, wenn du mir hier weiterhelfen könntest, da ich jetzt schon eine Woche versuche dieses Problem im Griff zu bekommen.

Danke

Mfg Anton

Hallo Anton,

beim Öffnen kommt gleich eine Abfrage nach einem Namen, sicher, ich krieg da schon raus welchen Namen ich da eingeben muß, wäre aber besser du hättest ihn genannt.

Mit dem Weglassen von Select meine ich nicht hur das bei dir:

Sheets(„Formel“).Select
Range(„C68:C69“).Select
Selection.ClearContents

was so besser ist:

Sheets(„Formel“).Range(„C68:C69“).ClearContents

sondern auch die Erschwernis längeren Code mit vielen Select und Selection… flüssig zu lesen.
Schau mal hier:
/t/diagramm-per-makro-formatieren/5060041/10
wie ich da im oberen Makro die Selects dezimiert habe und urteile selbst welcher Code übersichtlicher ist.

Das ist jetzt Null Vorwurf an dich oder Christian, so habe ich auch mal angefangen, völlig normal, durch den Makrorekorder kommt das.

Ich sehe an deiner mappe daß du da viel, sehr viel Zeit und Mühe investiert hast.

Zur Arbeitserleichterung, mache im Editor einen Haken bei Extras–Optionen „Variablendeklaration erforderlich“.
Das spart langfristig viel Zeit bei Fehlersuchen in langen Code wenn du mal anstatt „letzte“ „letze“ geschrieben hast, sowas ist schwer zu entdecken aber Option Explicit findet das sofort.

Dann benutze unbedingt konsequenter sprechende Namen. Jetzt weißt du vielleicht noch was denn CommandButton28 ist, in 2 Wochen ist das weg.

Das wird dich schon einmalig Zeit kosten alle Userforms durchzugehen und dann via F4 Namen zu vergeben für die Steuerelemente, aber es lohnt sich dicke langfristig.

Zu deinem Problem weshalb du anfragtest kam ich noch nicht, mußte erstmal einen Grobüberblick über die Mappe gewinnen und dabei fiel mir das halt auf.

Gruß
Reinhard

Hallo Anton,
vielleicht ist es ja wirklich ein fehlendes Element, wie Reinhard beschrieben hat. Einmal suchst du „Lagerverwaltung.xls“, das andere Mal „Lagerplatzverwaltung.xls“.

Gruß

Hannes

Hallo Reinhard.

Das mit den Login habe ich vergessen zu erwähnen.
Benutze zb. User2000

Ich danke dir für deine Tipps
So kann ich es beim nächstenmal (oder auch beim jetzigen weiterarbeiten) mich verbessern.
Deine Tipps und Hilfen haben mir schon sehr viel geholfen.

Du schreibst das ich mit Option Explicit die die vergebenen Variablen (Fehler) leicht finden lässt, wenn die Option "Variablendeklaration erforderlich"angewählt ist.
Wie benutze ich den Befehl Open Explicit?
(Hast du da vieleicht ein kleines Beispiel?)

Ich danke dir nochmal und hoffe, das du dich bei meinen wahrscheinlich für dich sehr caotischen Programm durchsiest

Mfg Anton

Frage
Hallo Reinhard.

Hast du schon Zeit gehabt, dir das Programm anzusehen?

Mfg Anton

Hallo Anton,

Du schreibst das ich mit Option Explicit die die vergebenen
Variablen (Fehler) leicht finden lässt, wenn die Option
"Variablendeklaration erforderlich"angewählt ist.
Wie benutze ich den Befehl Open Explicit?
(Hast du da vieleicht ein kleines Beispiel?)

Option Explicit gehört ganz oben einmalig pro Modul.
Um sich das Schreiben zu ersparen wird das automatisch durch den Editor eingefügt durch Setzen des Hakens in Optionen.

Bei alten Modulen/Mappen mußt du es manuell einfügen.

Wenn Option Explicit dort steht tut sich ertsmal gar nix. Aber startest du beliebigen Code markiert der Editor sofort falschgeschriebene variablennamen oder Variablennamen die oben in der jeweiligen Prozedur nicht deklariert wurden mit Dim, Const usw. oder irgendwo als globale Variable.

Und zum Schreiben von langen Variablennamen, wenn du oben in der Prozedur stehen hast

Sub Test()
Dim MeinelangeVariable as String

dann gib mal im Code dann ein

mei oder mein oder meine und drücke Strg+Leertaste.

Gruß
Reinhard

Hast du schon Zeit gehabt, dir das Programm anzusehen?

Hallo Anton,

warum? Hannes sagte ja auch schon die Lösung:

Workbooks(„Dateiname.xls“).Sheets(„Formel“).Range(„C65“) = ComboBox3

klappt problemlos, du mußt nur Dateiname korrekt schreiben.

Gruß
Reinhard