Office: Werteübergabe der Combobox

Helfe beim Thema Werteübergabe der Combobox in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe mal wieder ein Problem, wo ich echt nicht seit Stunden nicht weiterkomme und auf eure Hilfe angewiesen bin. Ich habe mit... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Master_MP, 11. April 2017.

  1. Werteübergabe der Combobox


    Hallo zusammen,

    ich habe mal wieder ein Problem, wo ich echt nicht seit Stunden nicht weiterkomme und auf eure Hilfe angewiesen bin.

    Ich habe mit Hilfe von Makros Comboboxen erstellt, die in einer anderen Mappe Spalten zur Auswahl einlesen. Funktioniert alles wunderbar. Nächster Schritt war jetzt der, dass ich mir die Zeile des ausgewählten ComboBox-Elements in der anderen Datei ausgeben lassen möchte, um auf weitere Daten der Zeile zurückgreifen zu können.

    In einem Testdokument funktioniert eigentlich alles einwandfrei, wenn ich allerdings das in ein reales Dokument mit der gleichem Aufbau übernehme, bekomme ich immer ein Laufzeitfehler 91 ausgespuckt, obwohl der Aufbau der Mappen identisch ist. Einziger Unterschied ist der, dass im realen Dokument die 3.Spalte, in der der String gesucht wird, kein Textfeld ist sondern aus verketteten Strings besteht.

    Kann es sein, dass genau das mein Problem ist? Any ideas?

    Hier mal mein simpler Code...

    Code:
    So funktioniert das Makro einwandfrei, ändere ich die Quelldatei, funktioniert es nicht mehr...wiesooooo?!*entsetzt *entsetzt

    Danke für eure Anregung und Hilfe!
    Mark

    :)
     
    Master_MP, 11. April 2017
    #1
  2. Die Fehlermeldung ist folgende:

    Laufzeitfehler '91':

    Objektvariable oder With-Blockvariable nicht festgelegt
     
    Master_MP, 12. April 2017
    #2
  3. Hi Mark,

    das gleiche Problem hattest Du hier doch auch schon.
    Es kann doch nicht so schwer sein, die vielen Hinweise auch umzusetzen.

    Noch einmal:
    Code:
    geht nicht!

    Warum?

    Pfad1 ist keine gültige Pfadangabe!
    Eine Pfadangabe sieht beispielsweise so aus: C:\Ordner\

    Wenn der Pfad in einer Variablen gespeichert wird dann so:
    Code:
    Hier (bei der Zuweisung des Wertes an die Variable) gehört die Pfadangabe in Anführungszeichen. Verwendest Du aber die Variable, dann dürfen keine Anführungszeichen gesetzt werden!

    So ist es falsch:
    Code:
    Und so richtig:
    Code:
    Du verknüpfst also den Wert einer Variablen (über die Variable) mit einem String (den Dateinamen), der selbstverständlich in Anführungszeichen gehört.
    Hättest Du den Dateinamen ebenfalls in einer Variablen gespeichert, dann könntest Du beide Variablen ebenfalls verknüpfen, aber... wie gesagt, die Variablennamen gehören nicht in Anführungszeichen!
     
  4. Werteübergabe der Combobox

    geht nicht!

    Warum?

    Pfad1 ist keine gültige Pfadangabe!
    Eine Pfadangabe sieht beispielsweise so aus: C:Ordner

    Wenn der Pfad in einer Variablen gespeichert wird dann so:
    Code:
    Hier (bei der Zuweisung des Wertes an die Variable) gehört die Pfadangabe in Anführungszeichen. Verwendest Du aber die Variable, dann dürfen keine Anführungszeichen gesetzt werden!

    So ist es falsch:
    Code:
    Und so richtig:
    Code:
    Du verknüpfst also den Wert einer Variablen (über die Variable) mit einem String (den Dateinamen), der selbstverständlich in Anführungszeichen gehört.
    Hättest Du den Dateinamen ebenfalls in einer Variablen gespeichert, dann könntest Du beide Variablen ebenfalls verknüpfen, aber... wie gesagt, die Variablennamen gehören nicht in Anführungszeichen!

    Siehe PM...die kopierten Pfaddateien sind immer mit Backslash, die hier im Forum gelöscht werden. Daher als "Ersatz" die Umschreibung...wusste mir nicht anders für das Forum hier zu helfen!

    Grüße!
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    Master_MP, 12. April 2017
    #4
  5. ...weshalb Du meinen kompletten Thread zitierst, der wirklich nix mit Deiner Antwort zu tun hat, wird wohl ein Geheimnis bleiben.

    Meine Antwort bezog sich auf die falsch gesetzten Anführungszeichen, Deine Antwort auf die fehlenden Backslashes.
    Was Du dagegen machen kannst und warum das so ist steht hier

    Das ist trotzdem nicht der Grund, weshalb Dein Code nicht funktioniert. Lies Dir noch einmal meine erste Antwort durch und beachte die Worte Anführungszeichen und Variablen.
     
  6. ...und in welcher Zeile tritt der Fehler auf? Hier? Debug.Print ComboBox3.Value
    Dann überlege folgendes:
    In welchem Modul stand der Code, als er funktionierte?
    In welchem Modul steht der Code, als er nicht funktionierte?
    Wozu gehört Combobox3?

    Allgemein und im Besonderen:
    Steht Option Explicit in jedem Deiner Module? Wenn nein: Schreib's hin. Welche Fehlermeldungen kommen jetzt hoch?
    Wo und wie sind die Variablen deklariert?

    anstelle:
    Code:
    dies verwenden:
    Code:
     
    EarlFred, 12. April 2017
    #6
  7. ...Ja, genau hier wird der Fehler ausgespuckt *Smilie

    Beide Codes stehen in dem selben private Sub, einmal versuche ich das mit dem 1. Pfad -> funktioniert. Auskommentieren und Versuch mit dem 2. Pfad -> funktioniert nicht mehr

    Der 2. Pfad liegt allerdings in einem komplett anderen Verzeichnis, liegt es vielleicht daran?

    Die Combobox ist in dem Sheet "Makrosheet" der Originaldatei enthalten


    Der Befehl steht ganz oben zu meinem Code-Beginn, allerdings nicht in den Modulen, da ich alles in dem Verzeichnis des Makrosheets programmiert habe

    Die Variablen sind wie der Befehl ganz am Anfang des Codes global deklariert.



    dies verwenden:
    Code:
    Habe ich jetzt so übernommen, wieso ist es besser mit dieser Syntax?

    Danke für deine Hilfe!!!
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    Master_MP, 13. April 2017
    #7
  8. Werteübergabe der Combobox

    ... Variablen gehören nicht in Anführungszeichen, Pfade schon. Das meine ich jetzt auch so beachtet zu haben...

    Code:
    Funktionieren tut der Code mit dem 2. Pfad trotzdem noch nicht!

    Danke dir für deie Einwände, zumindest das Backslashproblem meine ich jetzt schon einmal gelöst zu haben *wink.gif*
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    Master_MP, 13. April 2017
    #8
  9. schreib's das nächste Mal bitte gleich hin. Fehlernummer, -beschreibung und -zeile gehören immer zusammen.

    Was meinst Du damit? Was für ein Verzeichnis?

    MODUL! Ich meinte: MODUL! In welchem Modul steht bzw. stand der Code?

    "funktioniert nicht mehr" - siehe Hinweis zuvor: Das ist keine brauchbare Fehlerbeschreibung! Beschreibe klar und deutlich, wie sich das "Nichtfunktionieren" zeigt!
    Pfade interessieren hier zudem 'nen feuchten Kehricht - die haben bei der fehlerhaften Zeile null Auswirkung. Das ist wenn ein anderes Problem.

    Aha. Ich wollte hier aber keine Beschreibung, sondern Dich zum Denken animieren: WO teilst Du dem Code denn mit, dass eben genau das der Fall ist? Und da sind wir wieder bei der ersten Frage: In welchem MODUL steht der Code?

    Ürghs. Mieser Stil, miese Nachvollziehbarkeit des Codes. Nicht machen.

    Weil du
    - den Mappennamen nur einmal im Code erwähnst - spart Zeit und Fehler bei Änderungen
    - weil Du die Mappe direkt an das Objekt bindest. Es sind also keine sinnlosen Zwischenschritte notwendig
    Wenn Du ein Objekt direkt bei der Erstellung (bzw. hier beim Öffnen) greifen kannst, nutze das aus (die Möglichkeit hast Du leider nicht immer, da manche Methoden bedauernswerterweise kein Objekt der passenden Klasse zurückgeben).
     
    EarlFred, 13. April 2017
    #9
  10. Das Backslashproblem (den BS doppelt eingeben, damit er hier einmal zu sehen ist), gilt nur für die Darstellung in diesem Forum! Im VBA Editor darf es aber nur einmal stehen.
    Lediglich bei Verwendung von Variablen solltest Du darauf achten, ob er vorhanden ist oder nicht, damit dann bei der Zusammensetzung nichts schiefläuft.

    Was für eine klare Ansage... an welcher Stelle denn?

    Wenn diese Anweisung:
    Code:
    in einem allgemeinen Modul steht, dann funktioniert er selbstverständlich nicht. Denn woher soll der Compiler wissen, welche Combobox3 Du meinst?
    Entweder, Du verschiebst den Code in das Modul der Userform oder Du gibst im Code den Ort der Combobox an.

    Bsp.:
    Code:
     
  11. Gut, jetzt lichtet sich langsam der Urwald. Da ich den Quellcode in meinem Modul 1 stehen habe, die Comboboxen aber in einem Tabellenplatt initialisiert sind, muss ich natürlich dem Compiler noch mitteilen, wo die Comboboxen angesteuert werden sollen.
    Wenn ich ihm jetzt aber versuche bspw. die Box mit shQuelle.Combobox1 anzusteuern, klappt das noch nicht. Wie steuer ich denn Comboboxen in einem Tabellenblatt richtig an?



    Das habe ich aufgrund meiner fehlenden Programmierkenntnisse in VBA so gelöst, da manche Variablen auf andere Subs zurückgreifen sollten. Gibt es auch hier eine Möglichkeit, in einer Sub Variablen als global weiterzugeben?

    Abermals danke für deine Hilfe *Smilie

    Mark
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    Master_MP, 17. April 2017
    #11
  12. in einem allgemeinen Modul steht, dann funktioniert er selbstverständlich nicht. Denn woher soll der Compiler wissen, welche Combobox3 Du meinst?
    Entweder, Du verschiebst den Code in das Modul der Userform oder Du gibst im Code den Ort der Combobox an.

    Bsp.:
    Code:
    Genau dort steht sie, in einem allgemeine Modul. Ergo muss ich also noch dem Compiler mitteilen, dass die Combobox im Sheet "Makrosheet" zu finden ist. Aber wie genau mache ich das? Ich habe auch keine Userform oder dergleichen, sondern fürs erste eine einfache Combobox im Tabellenblatt kreiert

    Danke dir ebenfalls für deine Unterstützung *Smilie
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    Master_MP, 17. April 2017
    #12
  13. Werteübergabe der Combobox

    Hallo Mark,

    hatten wir uns nicht darauf geeinigt, dass "Klappt nicht" keine brauchbare Beschreibung eines Problems ist?

    Wenn Du eine Variable für das Worksheet anlegst, weiß VBA nicht, ob diese (mit jedem beliebigen Arbeitsblatt belegbare) Variable später auch tatsächlich das Objekt "Combobox1" besitzt.
    Das kann man allerdings, wenn man nicht eine Variable, sondern das automatisch angelegte Klassenobjekt des Worksheets selbst übergibt (siehe Beispiel, dort steht auch, wie man an das Objekt rankommt). Das Vorgehen funktioniert aber nur, wenn Du innerhalb der gleichen Mappe arbeitest - sonst gilt das vorgesagte hier auch sinngemäß und muss ebenso anders gelöst werden.

    Variablen übergibt man als Argument (sinnbefreiter Code, nur zur Demo...):
    Code:
    Grüße
    EarlFred
     
    EarlFred, 17. April 2017
    #13
  14. Du hast ein Blatt mit einer ComboBox1 und willst auf Änderungen darin reagieren. Dann kommt der gesamte Code in das Blatt, in welchem sich die Box befindet.

    Code:
     
  15. die Anforderung habe ich wohl überlesen.

    Dann muss der Code allerdings nicht zwingend in das Klassenmodul des Worksheets (wenn auch empfehlenswert).

    Als (absolut nicht empfehlenswerte Variante, dient aber als Anschauung, wie man auch bei einem variablen Worksheet an eine Combobox rankommt):
    Code:
    Code:
    Aber nochmal, wie Ralf sagte: Wenn Du auf Ereignisse reagieren willst, pack die besser in das Modul des Objektes, in dem sich die Combobox befindet.
     
    EarlFred, 17. April 2017
    #15
Thema:

Werteübergabe der Combobox

Die Seite wird geladen...
  1. Werteübergabe der Combobox - Similar Threads - Werteübergabe Combobox

  2. Auswahl über Combobox dann Werte kopieren

    in Microsoft Excel Hilfe
    Auswahl über Combobox dann Werte kopieren: Hallo in die Runde, Für euch VBA Profis ist die Lösung dieser Problematik nur ein Klacks, mir als Anfänger bringt es nur graue Haare. In der Tabelle Lager stehen in der Spalte A alle vorhandenen...
  3. Textbox aus Combobox nach Änderung befüllen

    in Microsoft Excel Hilfe
    Textbox aus Combobox nach Änderung befüllen: Hallo zusammen Ich habe ein Problem mit dem automatischen befüllen der Textbox. Sobald ich das von mir Fett markierte aktiviere, bekomme ich den Fehler "Die XLookup Eigenschaft des...
  4. Combobox immer wenigere Daten anzeigen

    in Microsoft Excel Hilfe
    Combobox immer wenigere Daten anzeigen: Hallo zusammen, ich bin's mal wieder. Folgende Problematik: ich befülle eine Combobox mit gefilterten Daten. (ZählerNr vom Vorjahr) z.B ZählerNr 1-10 Zählerstände zum 31.12.21 Wenn ich nun die...
  5. wert aus ComboBox prüfen dann hinzufügen

    in Microsoft Excel Hilfe
    wert aus ComboBox prüfen dann hinzufügen: Gutn Morgen zusammen, mit folgendem Code fülle ich meine ComboBox Private Sub UserForm_initialize() With ComboBox1 For Repeatings = 2 To...
  6. ComboBox zeigt Inhalt nicht mehr an

    in Microsoft Excel Hilfe
    ComboBox zeigt Inhalt nicht mehr an: Guten Morgen, nachdem ich gestern hier an anderer Stelle eine Frage eingestellt hatte, gab man mir den Tipp von der Verwendung mehrerer UserFormen Abstand zu nehmen. Das habe ich mir zu Herzen...
  7. Werteübergabe an Formular

    in Microsoft Access Hilfe
    Werteübergabe an Formular: Anfängerfrage zur Werteübergabe Formular an Formular. Ich versuche nun schon einige Stunden diese Übergabe und komme auf kein Ergebnis. 1. Aufruf aus aktuellem Formular: Private Sub...
  8. Excel VBA - Unterschied zwischen Sub & Function (beides mit Werteübergabe im Aufruf)

    in Microsoft Excel Hilfe
    Excel VBA - Unterschied zwischen Sub & Function (beides mit Werteübergabe im Aufruf): Hallo Forum, in einem aktuellen Projekt (Excel 2010) beschäftige ich mich endlich mal mit dem Thema "Function mit Werteübergabe", um immer wiederkehrenden Code nur einmal schreiben zu müssen....
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden