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

Forumthread: VBA DoubleClick und Befehlsschaltfläche zusammen

VBA DoubleClick und Befehlsschaltfläche zusammen
24.09.2016 23:16:26
Andreas
Guten Abend,
Wollte in meiner Userform eine Befehlsschaltfläche für einen Befehl, den ich bereits mit DoubleClick ausführen kann, auch dort ausführen.
Wie kann ich dies programmieren?
Dies geht schon wunderbar- jedoch muss ich dazu immer die Userform schließen.
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 3 Then
Range(Cells(Target.Row, 2), Cells(Target.Row, Columns.Count)).Insert Shift:=xlDown, _
CopyOrigin:=xlFormatFromLeftOrAbove
'      Target.Offset(-1, 0).Formula = "=Row()-4"
Cancel = True
End If
End Sub
Danke im Vorraus.
Mit freundlichen Grüßen, Andreas D.
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA DoubleClick und Befehlsschaltfläche zusammen
25.09.2016 01:07:33
Mullit
Hallo,
z.B. so, Deine Event-Prozedur mußt Du dafür Public oder Friendly stellen:
Option Explicit
Private Sub CommandButton1_Click()
Call Tabelle1.Worksheet_BeforeDoubleClick(Target:=ActiveCell, Cancel:=False)
End Sub
Option Explicit

Friend Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 3 Then
        Range(Cells(Target.Row, 2), Cells(Target.Row, Columns.Count)).Insert Shift:=xlDown, _
CopyOrigin:=xlFormatFromLeftOrAbove
  '      Target.Offset(-1, 0).Formula = "=Row()-4"
        Cancel = True
    End If
End Sub

Gruß, Mullit
Anzeige
AW: VBA DoubleClick und Befehlsschaltfläche
25.09.2016 10:17:02
Andreas
Hallo Mullit, danke für die Lösung.
Zur Zeit aber funktioniert das ganze nur, wenn ich folgendes- was in einem Modul gespeichert ist- Kopiere und in die Excel Objekte unter meiner erstellten Tabelle "Bearbeiten" Einfüge.
Jedoch soll die Funktion immer in der Tabelle"Bearbeiten" verfügbar sein. Die Tabelle wird immer erst Erzeugt.
Option Explicit
Public Sub Worksheet_BeforeDoubleClick1(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 3 Then
Range(Cells(Target.Row, 2), Cells(Target.Row, Columns.Count)).Insert Shift:=xlDown, _
CopyOrigin:=xlFormatFromLeftOrAbove
'      Target.Offset(-1, 0).Formula = "=Row()-4"
Cancel = True
End If
End Sub

Wo und wie muss denn das Modul hin, das es immer gleich aktiv ist, wenn die Tabelle "Bearbeiten" erstellt wurde.
Danke für Eure Hilfe.
LG Andreas D.
Anzeige
AW: VBA DoubleClick und Befehlsschaltfläche
25.09.2016 15:19:53
Mullit
Hallo,
okidoki, von erzeugten TabBlättern haste vorher nichts geschrieben, aber im Prinzip so:
Option Explicit
Private Sub CommandButton1_Click()
Call DieseArbeitsmappe.Workbook_SheetBeforeDoubleClick( _
Sh:=ActiveSheet, Target:=ActiveCell, Cancel:=False)
End Sub

Code in Dein Arbeitsmappen-Modul:
Option Explicit
Friend Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As  _
Boolean)
If Sh.Name = "Bearbeiten" Then
If Target.Column = 3 Then
Range(Cells(Target.Row, 2), Cells(Target.Row, Columns.Count)).Insert Shift:=xlDown, _
CopyOrigin:=xlFormatFromLeftOrAbove
'      Target.Offset(-1, 0).Formula = "=Row()-4"
Cancel = True
End If
End If
End Sub

Gruß, Mullit
Anzeige
AW: VBA DoubleClick und Befehlsschaltfläche
25.09.2016 15:25:17
D,
War mein Fehler- jetzt geht es. Danke
AW: VBA DoubleClick und Befehlsschaltfläche
25.09.2016 16:11:39
Mullit
Hallo Andreas,
null Problemo, alles klar, Danke für die Rückmeldung...
Gruß, Mullit
AW: VBA DoubleClick und Befehlsschaltfläche
25.09.2016 17:05:12
Mullit
Hallo,
hmmm ich sehe mein Dank war verfrüht, Du warst woanders schon im Geschäft , doppelte Arbeit is nich so mein Ding, merk ich mir für die Zukunft...
Gruß, Mullit
Anzeige
AW: VBA DoubleClick und Befehlsschaltfläche
25.09.2016 17:26:26
Andreas
Aber Deine Lösung hat mir geholfen- Mullit. Und Bedankt hab ich mich auch. Du hattest keine doppelte Arbeit. Die hatte ich- Nee - Spaß beiseite- Super Arbeit und Danke nochmal.
;

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

VBA DoubleClick und Befehlsschaltfläche in Excel


Schritt-für-Schritt-Anleitung

Um eine Befehlsschaltfläche in Deiner Userform zu erstellen, die denselben Befehl wie das DoubleClick-Ereignis ausführt, kannst Du folgenden VBA-Code verwenden:

  1. Öffne den VBA-Editor (Alt + F11).

  2. Füge eine Userform hinzu und platziere eine Befehlsschaltfläche (CommandButton).

  3. Füge den folgenden Code in das Codefenster der Userform ein:

    Option Explicit
    
    Private Sub CommandButton1_Click()
       Call Tabelle1.Worksheet_BeforeDoubleClick(Target:=ActiveCell, Cancel:=False)
    End Sub
  4. Füge den DoubleClick-Code in das Arbeitsblatt-Modul ein (z.B. in "Tabelle1"):

    Option Explicit
    
    Friend Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       If Target.Column = 3 Then
           Range(Cells(Target.Row, 2), Cells(Target.Row, Columns.Count)).Insert Shift:=xlDown, _
           CopyOrigin:=xlFormatFromLeftOrAbove
           Cancel = True
       End If
    End Sub

Jetzt kannst Du die Befehlsschaltfläche verwenden, um denselben Befehl auszuführen, den Du mit dem DoubleClick-Vorgang erreicht hast.


Häufige Fehler und Lösungen

Fehler 1: Die Funktion wird nicht ausgeführt, wenn die Befehlsschaltfläche gedrückt wird.
Lösung: Stelle sicher, dass die Event-Prozedur Public oder Friend deklariert ist, damit sie von der Userform aus aufgerufen werden kann.

Fehler 2: Das DoubleClick-Ereignis wird nur auf einem bestimmten Blatt ausgeführt.
Lösung: Füge den Code in das Arbeitsmappen-Modul ein, um sicherzustellen, dass die Funktion in allen relevanten Blättern verfügbar ist.


Alternative Methoden

Eine weitere Möglichkeit, um das vba doubleclick-Ereignis zu verwenden, ist die Implementierung von Workbook_SheetBeforeDoubleClick. Füge diesen Code in das Arbeitsmappen-Modul ein:

Option Explicit

Friend Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    If Sh.Name = "Bearbeiten" Then
        If Target.Column = 3 Then
            Range(Cells(Target.Row, 2), Cells(Target.Row, Columns.Count)).Insert Shift:=xlDown, _
            CopyOrigin:=xlFormatFromLeftOrAbove
            Cancel = True
        End If
    End If
End Sub

Diese Methode sorgt dafür, dass die Funktion immer aktiv ist, wenn die Tabelle "Bearbeiten" erstellt wird.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du das vba excel double click event für eine bestimmte Zelle nutzen kannst:

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Address = "$A$1" Then
        MsgBox "Du hast die Zelle A1 doppelt angeklickt!"
        Cancel = True
    End If
End Sub

Dieses Beispiel zeigt eine Nachricht, wenn die Zelle A1 mit einem Doppelklick aktiviert wird.


Tipps für Profis

  • Nutze Application.EnableEvents = False und Application.EnableEvents = True, um temporär die Ereignisse zu deaktivieren, wenn Du mehrere Änderungen an Zellen vornimmst.
  • Überlege, ob Du Workbook_SheetBeforeDoubleClick verwenden möchtest, um die Funktionalität auf alle Blätter auszudehnen.
  • Teste Deine VBA-Codes regelmäßig, um sicherzustellen, dass alles wie erwartet funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich das DoubleClick-Ereignis für mehrere Zellen aktivieren?
Du kannst eine Schleife verwenden, um durch die gewünschten Zellen zu iterieren und die Bedingungen entsprechend anzupassen.

2. Was ist der Unterschied zwischen Private und Public in VBA?
Private beschränkt die Sichtbarkeit auf das Modul, in dem es definiert ist, während Public die Prozedur in anderen Modulen zugänglich macht.

3. Wie kann ich das dblclick vba-Ereignis für ein Diagramm verwenden?
Für Diagramme gibt es spezielle Ereignisse, die Du in den Diagrammobjekten definieren musst. Diese sind jedoch nicht identisch mit den Zellen.

4. Warum wird mein Befehl nicht ausgeführt?
Überprüfe, ob das Cancel-Argument auf True gesetzt ist und ob der Code in der richtigen Prozedur eingefügt wurde.

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