Office: (Office 2013) VBA in Verbindung mit Kombifeld

Helfe beim Thema VBA in Verbindung mit Kombifeld in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Guten Morgen, ich benutze in einem Tabellenblatt den nachfolgenden Code. Eingabe in Zelle C25 startet in Abhängigkeit der Eingabe jeweils ein... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von prex99!, 21. Dezember 2015.

  1. prex99! Erfahrener User

    VBA in Verbindung mit Kombifeld


    Guten Morgen,

    ich benutze in einem Tabellenblatt den nachfolgenden Code. Eingabe in Zelle C25 startet in Abhängigkeit der Eingabe jeweils ein anderes Makro. Das klappt so weit.

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target <> Range("C25") Then Exit Sub
    Select Case Target.Value
    Case "Müller"
    Call MakroMüller
    Case "Maier"
    Call MakroMaier
    ' .....usw
    End Select
    End Sub

    Es wäre komfortabler die jeweiligen Namen nicht einzugeben sondern aus einer Liste auszuwählen. Das würde ich gerne über ein Kombinationsfeld (Formularsteuerelement) erledigen. Also die Reihe von möglichen Eingaben (also Müller, Maier, Schulze, usw...) die in AV2:AV44 abgelegt sind anzeigen und dann über die Zellverknüfung als Ausgabe (1,2,3 usw...) in AU2 ablegen.

    Die Stelle an der ich nicht mehr weiterkomme (die ergoogleten Beispiele bekomme ich auch nicht zum laufen) ist, wie ich die Makros Müller, Maier usw starte je nachdem ob in AU2 die 1, 2, oder sonst eine Zahl steht. Also wenn AU1 = 1 dann Call MakroMüller, wenn AU2 = 2 dann Call MakroMaier usw..

    Das Kombinationsfeld hat bei mir den Namen Dropdown 26632.

    Vielen Dank für jeden Hinweis.
     
  2. Beverly
    Beverly Erfahrener User
    Hi,

    weise dem Steuerelement dieses Makro (in einem allgemeinen Modul) zu:

    Code:
    Sub MakroAuswahl()
        Dim strMakroname As String
        With ActiveSheet.Shapes(Application.Caller)
            strMakroname = "Makro" & ActiveSheet.Range(.ControlFormat.ListFillRange).Cells(.ControlFormat.ListIndex).Value
            Run strMakroname
        End With
    End Sub
    
    
    Bis später,
    Karin
     
  3. prex99! Erfahrener User
    Hallo Beverly,

    herzlichen Dank. Funktioniert wunderbar.
     
  4. prex99! Erfahrener User

    VBA in Verbindung mit Kombifeld

    Guten Morgen,

    in obigem Makro von Beverly wird der ausgewählte Wert der Dropdown Liste durch

    "ActiveSheet.Range(.ControlFormat.ListFillRange).Cells(.ControlFormat.ListIndex).Value"

    ausgelesen und benutzt um ein Makro in Abhängigkeit von der Auswahl zu starten.




    Ich versuche jetzt im nachfolgenden Code statt fest den Blattnamen "Müller" (oder Maier oder Schulze) zu referenzieren, dies variabel in Abhängigkeit von der DropDown Auswahl zu gestalten:
    Wie bekomme ich nun den Inhalt von "ActiveSheet.Range(.ControlFormat.ListFillRange).Cells(.ControlFormat.ListIndex).Value"
    statt "Müller" in das untenstehende Worksheet.Range Kommando?

    Worksheets("Konsolidierung").Range("B103").Copy _
    Destination:=Worksheets("Müller").Range("BJ8")

    Vielen Dank
     
  5. Beverly
    Beverly Erfahrener User
    Hi,

    der einfachste Weg: schreibe den Inhalt auf eine String-Variable und benutze diese dann

    Code:
        Dim strTab As String
        strTab = ActiveSheet.Range(.ControlFormat.ListFillRange).Cells(.ControlFormat.ListIndex).Value
        Worksheets("Konsolidierung").Range("B103").Copy _
            Destination:=Worksheets(strTab)
    
    
    Bis später,
    Karin
     
  6. prex99! Erfahrener User
    Hallo,

    vielen Dank für die schnelle Antwort. Leider läuft es noch nicht rund und ich finde meinen Fehler nicht. Ich benutze jetzt Deinen folgenden Code:

    1. Das MakroAuswahl() habe dem Steuerelement (im allgemeinen Modul zugeordnet)

    Sub MakroAuswahl()
    Dim strMakroname As String
    Dim AktiveSeite As String
    With ActiveSheet.Shapes(Application.Caller)
    strMakroname = "Makro" & ActiveSheet.Range(.ControlFormat.ListFillRange).Cells(.ControlFormat.ListIndex).Value
    AktiveSeite = ActiveSheet.Range(.ControlFormat.ListFillRange).Cells(.ControlFormat.ListIndex).Value
    Run strMakroname
    End With
    End Sub


    2. Bspw. MakroMüller

    Sub MakroMüller()

    Sheets("Konsolidierung").Select
    Range("AX2:AY2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents
    'MM Methode
    Worksheets("Konsolidierung").Range("B103").Copy _
    Destination:=Worksheets(AktiveSeite).Range("BJ8")

    'QF Methode
    .
    .
    .
    End Sub

    Makro bricht an kursiv markierter Stelle ab mit Laufzeitfehler 9: Index außerhalb des gültigen Bereichs. Mit "Müller" statt AktiveSeite läuft es problemlos durch.

    Danke für die Geduld und eventuell einen nochmaligen Hinweis.
     
  7. Beverly
    Beverly Erfahrener User
    Hi,

    wenn du die Variable "AktiveSeite" in einem anderen Makro weiterverwenden willst, dann darfst du sie nicht in der Sub MakroAuswahl() dimensionieren sondern musst, also am Beginn des Moduls:

    Code:
    Option Explicit
    Dim AktiveSeite As String
    
    Sub MakroAuswahl()
        Dim strMakroname As String
        With ActiveSheet.Shapes(Application.Caller)
            AktiveSeite = ActiveSheet.Range(.ControlFormat.ListFillRange).Cells(.ControlFormat.ListIndex).Value
            strMakroname = "Makro" & AktiveSeite
            Run strMakroname
        End With
    End Sub
    
    


    Frage: wird in jedem Unter-Makro derselbe Code ausgeführt (außer dass es unterschiedliche Tabellenblätter sind) oder unterscheidet er sich im Ablauf?

    Bis später,
    Karin
     
  8. prex99! Erfahrener User

    VBA in Verbindung mit Kombifeld

    Hallo Karin,

    die Definition der Variablen am Beginn des Moduls hat den Fehler beseitigt.

    Die Codes in den Unter-Makros unterscheiden sich, ansonsten würde ich nur ein Unter-Makro verwenden und eben jeweils das angesprochene Tabellenblatt anpassen. Ich glaube das ist der Hintergrund Deiner Frage?

    Deine Erläuterungen und der Code waren sehr hilfreich!
     
  9. Beverly
    Beverly Erfahrener User
    Hi,

    ja, du hast es richtig erkannt: das war der Grund meiner Frage.
    Aber auch wenn jedes Unter-Makro etwas anderes machen soll, kann man das alles vielleicht trotzdem in einem gemeinsamen Makro unterbringen. Man müsste allerdings den gesamten Code und die jeweiligen Unterschiede kennen, ob da vielleicht schon einfach eine Select Case-Unterscheidung die Lösung wäre.

    Bis später,
    Karin
     
Thema:

VBA in Verbindung mit Kombifeld

Die Seite wird geladen...
  1. VBA in Verbindung mit Kombifeld - Similar Threads - VBA Verbindung Kombifeld

  2. zeilenweise Zellen per VBA verbinden

    in Microsoft Excel Hilfe
    zeilenweise Zellen per VBA verbinden: Guten Morgen zusammen, ich möchte beginnend ab der Zeile/Zelle A29 den Bereich A29:E29 per MERGE verbinden sowie jeweils zeilenweise eine individuelle Anzahl an Zeilen im jeweils gleichen Bereich...
  3. Tabellenübersicht aus mehreren Tabellen nach Datum sortieren

    in Microsoft Excel Hilfe
    Tabellenübersicht aus mehreren Tabellen nach Datum sortieren: Hallo, ich habe eine Tabelle für die Autowartung erstellt und möchte nun eine Übersichtseite als "Deckblatt" erstellen auf dem man alle wichtigen Daten sehen kann. Es gibt für alles auf einem...
  4. ODBC Verbindung zu Oracle DB aus VBA

    in Microsoft Excel Hilfe
    ODBC Verbindung zu Oracle DB aus VBA: Hallo Ich will aus Excel 2010 (Windows 7 64bit) mittels VBA Daten aus einer Oracle Datenbank auslesen und in Excel einfügen. Der Oracle Client 32-bit ist installiert – trotzdem krieg ich eine...
  5. Verbindung zu SQL-Server mittels VBA

    in Microsoft Access Hilfe
    Verbindung zu SQL-Server mittels VBA: Hallo Allerseits, Anmerkung: Ich nutze Access 365. Ich hab mittlerweile viele Stunden im Forum gesucht und gegoogelt, komme aber nicht weiter. Deshalb hier ein neues Thema. Ich habe eine...
  6. ODBC SQL SERVER Verbindung per VBA erstellen

    in Microsoft Access Hilfe
    ODBC SQL SERVER Verbindung per VBA erstellen: Hallo Zusammen, habe folgende Code Übernommen, der soweit auch funktioniert, nur möchte ich nicht den Windows User als benutzer sondern einen anderen SQL User ohne Passwort Code: Option Explicit...
  7. Vba Zellen verbinden un eingegebene Daten speichern

    in Microsoft Excel Hilfe
    Vba Zellen verbinden un eingegebene Daten speichern: Grüß euch alles zusammen.. Ich habe da ein kleines Problem mit einem Makro und hoffe das Ihr mir dabei helfen könnt. Ich habe ein Makro bei dem sich ein Fenster öffnet wo ich Kundendaten...
  8. SQL ODBC String für VBA Verbindung

    in Microsoft Access Hilfe
    SQL ODBC String für VBA Verbindung: Hallo zusammen, ich habe ein Programm geschrieben - das bis dato nur mit ACCDB Tabellen verbunden war. Nun habe ich aber einen Kunden - der hin und wieder gewisse Daten auf seinen SQL Server...
  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