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

Forumthread: Button nach Klick in in danach aktivierte Zelle

Button nach Klick in in danach aktivierte Zelle
24.11.2017 13:38:27
Dieter(Drummer)
Guten Tag, Spezialisten,
ich möchte den Commandbutton3 durch den Klick in eine andere Zelle setzen.
Wichtig ist, das erst nach dem Klick auf CommandButton3 die Zelle aktiviert wird, in die der Button dann eingefügt werden soll.
Mein Versuche hatten bisher keinen Erfolg und im Netz konnte ich auch nichts finden.
Mit der Bitte um Hilfe,
grüßt, Dieter(Drummer)
Mein bisgeriger Code:
  • 
    Private Sub CommandButton3_Click()
    Dim rng As Range
    Set rng = ActiveCell
    Worksheets("Tabelle1").Activate
    If Not rng Is Nothing Then
    With ActiveSheet.OLEObjects("CommandButton3")
    .Top = rng.Top
    .Left = rng.Left
    .Width = rng.Width
    .Height = rng.RowHeight 'für 1 Zelle
    End With
    End If
    End Sub
    

  • Anzeige

    19
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    Du brauchst doch die Zielzelle ...
    24.11.2017 14:01:14
    Matthias
    Hallo,
    wenn Du erst eine Ziel-Zelle aktivieren willst nachdem der Button gedrückt wird,
    was hat das für einen Sinn? Dann ist der Code doch schon durch.
    Was also hast Du genau vor?
    Gruß Matthias
    AW: Du brauchst doch die Zielzelle ...
    24.11.2017 14:07:48
    Dieter(Drummer)
    Danke Mathias für Rückmeldung,
    ich möchte NACH dem Klick auf Button3, anschliessend eine Zelle aktivieren in die der Button3 dann gesetzt wird.
    Gruß, Dieter(Drummer)
    Anzeige
    warum willst Du dann erst aufs Button klicken?
    24.11.2017 14:26:39
    Matthias
    Hallo,
    dann nimm doch gleich das
    Worksheet_SelectionChange-Ereignis
    Gruß Matthias
    AW: warum willst Du dann erst aufs Button klicken?
    24.11.2017 14:32:22
    Dieter(Drummer)
    Hallo Matthias,
    auf dem Sheet sind viele (25) Buttons, die je nach dem Buttonklick auf die DANACH gewählte, neue Zelle gesetzt werden sollen.
    Gruß, Dieter(Drummer)
    AW: warum willst Du dann erst aufs Button klicken?
    24.11.2017 14:50:18
    Peter(silie)
    Hallo,
    bei der Anzahl brauchst du Klassenprogrammierung.
    Wo ist der Sinn von 25 OleObjekten auf einem Tabellenblatt, die ihre Position ändern...?
    Bei Basiskenntnisse VBA rate ich dir ab, Controls zur Laufzeit zu bewegen zu ändern etc.
    Wenn du nicht zu 100% weißt was abläuft und alles unter Kontrolle hast, dann lieferst du
    deinen Leuten ein Produkt, wo keiner weiß was als nächstes passiert.
    Generische Codes sind schön und gut, aber nunmal nicht ganz simpel und einfach.
    Hier ein Beispiel Code der mit DoubleClick funzt, geht aber genauso mit SelectionChange:
    (Ohne Klassenprogrammierung...)
    Option Explicit
    Private lastAddress As Variant
    Private wasClicked As Boolean
    Private Sub CommandButton3_Click()
    If Not wasClicked Then wasClicked = True
    End Sub
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If lastAddress  Target.Address And wasClicked Then
    Cancel = True
    wasClicked = False
    With ActiveSheet.OLEObjects("CommandButton3")
    .Top = Target.Top
    .Left = Target.Left
    .Width = Target.Width
    .Height = Target.RowHeight 'für 1 Zelle
    End With
    lastAddress = Target.Address
    End If
    End Sub
    

    Anzeige
    AW: warum willst Du dann erst aufs Button klicken?
    24.11.2017 15:09:52
    Dieter(Drummer)
    Danke Peter(silie),
    ich habe deinen Code eingefügt (Testdatei mit 3 Buttons anbei). Bei Klick auf Button3 passiert nichts, wenn ich anschliessend irgendeine Zelle anklicke.
    Erläuterung, warum ich das überhaupt so möchte.
    Jeder einzelne Button soll nach dem Buttonklick in eine nachträglich ausgewählte Zelle eingefügt werden.
    Wenn dann alle Buttons in einer Zelle eingefügt sind, kann ich sehen, ob der entsprechende Button in der richtigen Zelle eingefügt wurde. Wenn nur einer nicht richtig sitzt, wurde es falsch gemacht.
    Wo die Buttons eigentlich sitzen sollten, ist mir bekannt, aber es soll halt geshen werden, ob sie richtig gesetzt wurden.
    Danke erstmal für Geduld, meine Vorstellung evtl. realiseren zu können.
    Gruß, Dieter(Drummer)
    In der Testdatei anbei passiert nicht nach Klick auf Button3: https://www.herber.de/bbs/user/117895.xlsm
    Anzeige
    AW: Button nach Klick in in danach aktivierte Zelle
    24.11.2017 15:08:25
    Nepumuk
    Hallo Dieter,
    ein Beispiel für die ersten 2 Buttons, den Rest kannst du selbst ergänzen:
    Option Explicit

    Private mobjButton As MSForms.CommandButton

    Private Sub CommandButton1_Click()
        Set mobjButton = CommandButton1
    End Sub

    Private Sub CommandButton2_Click()
        Set mobjButton = CommandButton2
    End Sub

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Not mobjButton Is Nothing Then
            With Target
                mobjButton.Left = .Left
                mobjButton.Top = .Top
            End With
            Set mobjButton = Nothing
        End If
    End Sub

    Gruß
    Nepumuk
    Anzeige
    AW: Danke Nepumuk, eine perfekte ...
    24.11.2017 15:14:18
    Dieter(Drummer)
    ... Lösung für mich und die Erweiterung für die anderen Buttons bekomme ich hin.
    Danke nochmal und für die Geduld meiner Wünsche.
    Gruß, Dieter(Drummer)
    Die Größenanpassung an die Zelle fehlt noch ...
    24.11.2017 15:19:45
    Matthias
    Hallo
    aber das kannst Du ja noch anpassen
    Meine Variante behalte ich dann eher für mich, denn die wäre viel länge als die von Nepumuk.
    Gruß Matthias
    Anzeige
    AW: Die Größenanpassung an die Zelle fehlt noch ...
    24.11.2017 15:45:23
    Dieter(Drummer)
    Hallo Mathias L,
    ich hoffe es gibt keine Unstimmigkeiten, weil ich mit dir und Nepumuk eine Lösung suche.
    Das mit der fehelenden Größenaanpassung hatte ich schon bemerkt und an Nepumuk jetzt auch gesendet.
    Deine Lösung interessiert mich ebenfalls, denn da könnte ich ja auch etwas dazu lernen.
    Würde mich freuen, wenn es nicht zu Ärger führt und ich deine Lösung ebenfalls bekäme.
    Gruß, Dieter(Drummer)
    Anzeige
    das gibts doch keine Unstimmigkeiten ...
    24.11.2017 16:26:58
    Matthias
    Hallo Dieter,
    es gibt doch keine Unstimmigkeiten. Warum auch?
    Meine VersuchsDatei habe ich schon wieder gelöscht
    und hätte Dich allerdings auch nur verwirrt.
    Gruß Matthias
    AW: Danke für Rückinfo. Gruß owT
    24.11.2017 16:50:08
    Dieter(Drummer)
    AW: Button nach Klick in in danach aktivierte Zelle
    24.11.2017 15:40:48
    Dieter(Drummer)
    Hallo Nepumuk,
    leider fehlt da noch die Größenanpassung des Buttons an die neue Zelle.
    Könntest du da bitte nochmal helfen.
    Gruß, Dieter(Drummer)
    Jetzige Testdatei: https://www.herber.de/bbs/user/117897.xlsm
    Anzeige
    AW: Habe Anpassung geschafft ...
    24.11.2017 15:57:54
    Dieter(Drummer)
    ... Nepumuk,
    so funktioniert alles wie gewünscht:
    Private mobjButton As MSForms.CommandButton
    Private Sub CommandButton1_Click()
    Set mobjButton = CommandButton1
    End Sub
    

    Private Sub CommandButton2_Click()
    Set mobjButton = CommandButton2
    End Sub
    

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not mobjButton Is Nothing Then
    With Target
    mobjButton.Left = .Left
    mobjButton.Top = .Top
    mobjButton.Height = .Height
    mobjButton.Width = .Width
    End With
    Set mobjButton = Nothing
    End If
    End Sub
    
    Danke nochmal für Hilfe und einen schönen Resttag.
    Gruß, Dieter(Drummer)
    Anzeige
    ..wie oft "hüpfst" Du noch durchs Forum?
    24.11.2017 18:13:02
    robert
    robert, robert, memento morituri! ;-]
    25.11.2017 03:42:59
    Luc:-?
    Bringt doch nichts, außer Ärger…!
    Hajo soll übrigens auch mal so wie DD angefangen haben, war und ist nur jünger (und trotzdem schon wunderlich)…
    Gruß & schöWE, Luc :-?
    OT-Hi Luc.
    25.11.2017 18:32:35
    robert
    ich ärgere mich nicht, ich wundere mich nur über die Beiträge von DD-sinnlose,wiederkehrende
    Fragen(Probleme) und die Helfer stürzen sich auf Ihn.
    Es ist schon gut, wenn einem geholfen wird, aber was DD da anfragt-naja...
    Und er gibt immer noch Basiskenntnisse als Level an.
    Zig mal hüpft da ein Button in der Tabelle herum und ein Ende ist nicht in Sicht :-)
    Dann das bedanken bei jedem Helfer( schleimig )-Beiträge werden ellenlang-
    "Danke an alle die mir geholfen haben"-sollte ja auch genügen-oder?
    Und zu Deinem-"Bringt doch nichts"-was spielt sich bei Luc und Daniel ab? :-))
    So hat halt ein jeder seine Macken, mich eingeschlossen,aber mich zu ändern-dazu ist es zu spät:-)
    Gruß und ein eben solches schöWE
    robert
    Anzeige
    hat eben alles Vor- und Nachteile, robert
    25.11.2017 19:18:35
    Matthias
    Hallo,
    ich habe z.B. durch Dieters Frage ein Schachspielanalyse programmiert
    Genau nach der Art der Frage die Button zu bewegen.
    Userbild
    Ohne die Frage von Dieter hätte ich die Idee nie gehabt.
    Hier im Bild gehts nur darum eine Partie nachzustellen und verschiedene
    Spielzug-Varianten zu testen und ich habe keine Ahnung von Schach.
    Meine Bitte an Dich robert, lass doch den Dieter in Zukunft einfach in Ruhe.
    Es ist doch sein gutes Recht Fragen zu stellen. Es stürzt sich auch niemand drauf.
    Es wird gelesen und es gibt eine Antwort! So solls doch sein, oder?
    Schönes WE ...
    Gruß Matthias
    Anzeige
    Eben, bringt auch nur Ärger, ...
    26.11.2017 00:34:42
    Luc:-?
    …robert,
    aber noch nicht den, den ich gemeint hatte ;-]
    Gruß, Dank & schöSo, Luc :-?
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Entdecke relevante Threads

    Schau dir verwandte Threads basierend auf dem aktuellen Thema an

    Alle relevanten Threads mit Inhaltsvorschau entdecken
    Anzeige
    Anzeige

    Infobox / Tutorial

    Button nach Klick in danach aktivierte Zelle


    Schritt-für-Schritt-Anleitung

    Um einen CommandButton in eine Zelle zu verschieben, nachdem dieser angeklickt wurde, kannst du den folgenden VBA-Code verwenden. Stelle sicher, dass du in Excel die Entwicklertools aktiviert hast.

    1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
    2. Füge einen CommandButton zu deinem Arbeitsblatt hinzu.
    3. Kopiere und füge den folgenden Code in das entsprechende Modul ein:
    Option Explicit
    Private mobjButton As MSForms.CommandButton
    
    Private Sub CommandButton1_Click()
        Set mobjButton = CommandButton1
    End Sub
    
    Private Sub CommandButton2_Click()
        Set mobjButton = CommandButton2
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Not mobjButton Is Nothing Then
            With Target
                mobjButton.Left = .Left
                mobjButton.Top = .Top
                mobjButton.Height = .Height
                mobjButton.Width = .Width
            End With
            Set mobjButton = Nothing
        End If
    End Sub
    1. Schließe den VBA-Editor und kehre zu deinem Arbeitsblatt zurück.
    2. Klicke auf einen der CommandButtons und wähle dann eine Zelle aus, um den Button dorthin zu verschieben.

    Häufige Fehler und Lösungen

    • Fehler: Der Button bewegt sich nicht nach dem Klick.

      • Lösung: Stelle sicher, dass der Worksheet_SelectionChange-Ereignis korrekt implementiert ist. Vergewissere dich, dass der Button im richtigen Kontext angesprochen wird und dass er richtig gesetzt wird.
    • Fehler: Die Größe des Buttons wird nicht angepasst.

      • Lösung: Überprüfe, ob die Height und Width des Buttons im Worksheet_SelectionChange-Ereignis nach der Auswahl des Ziels korrekt gesetzt werden.

    Alternative Methoden

    Eine alternative Methode zur Bewegung des Buttons ist die Verwendung des BeforeDoubleClick-Ereignisses. Hier ein Beispiel:

    Private Sub CommandButton3_Click()
        ' Button-Klick-Logik hier
    End Sub
    
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Cancel = True
        If Not mobjButton Is Nothing Then
            With mobjButton
                .Top = Target.Top
                .Left = Target.Left
                .Height = Target.RowHeight
                .Width = Target.Width
            End With
            Set mobjButton = Nothing
        End If
    End Sub

    Diese Methode kann nützlich sein, wenn du nicht möchtest, dass der Button die Zelle bei einem einfachen Klick bewegt.


    Praktische Beispiele

    Angenommen, du hast drei Buttons auf deinem Arbeitsblatt. Du kannst jeden Button so konfigurieren, dass er beim Klicken in eine beliebige Zelle verschoben wird. Nutze dazu den obenstehenden Code, um sicherzustellen, dass jeder Button in die gewählte Zelle eingefügt wird und die Größe anpasst.


    Tipps für Profis

    • Verwende Klassen: Wenn du viele Buttons hast, kann es sinnvoll sein, Klassenmodule zu erstellen, um die Verwaltung der Buttons zu erleichtern.
    • Debugging: Wenn etwas nicht funktioniert, verwende Debug.Print im Code, um den Status oder die Werte von Variablen zu überprüfen.
    • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Probleme während der Ausführung zu vermeiden.

    FAQ: Häufige Fragen

    1. Frage
    Wie kann ich die Position und Größe mehrerer Buttons gleichzeitig ändern?
    Antwort: Du kannst eine Schleife verwenden, um durch alle Buttons zu iterieren und ihre Eigenschaften anzupassen.

    2. Frage
    Warum funktioniert der Code nicht in Excel Online?
    Antwort: Der VBA-Code funktioniert nur in der Desktop-Version von Excel, da Excel Online keine Makros unterstützt.

    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