Herbers Excel-Forum - das Archiv

Doppeklick auf Zellen oder Bereiche beschränken.

Bild

Betrifft: Doppeklick auf Zellen oder Bereiche beschränken.
von: Horst

Geschrieben am: 22.03.2005 16:18:35
Hallo liebe VBA-Gemeinde,
mit Application.Doppelklick = "Name" kann man den Doppelklick einer anderen Funktion zuordnen (statt der direkten Zellbearbeitung).
Nun meine Frage:
Kann man das auch auf eine bestimmte Zelle oder Bereich beschränken ?
Schwierige Frage, oooderrrr ? Falls nicht, gibt es einen "Workaround" ?
Gruß,
Horst
Bild

Betrifft: AW: Doppeklick auf Zellen oder Bereiche beschränken.
von: ransi

Geschrieben am: 22.03.2005 16:53:07
hallo horst
schau mal ob du hiermit was anfangen kannst.
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(ActiveCell, Range("a1:b10")) Is Nothing Then Exit Sub
Cancel = True
Call makro
End Sub


Public Sub makro()
MsgBox "Ich bin ein Makro"
End Sub
der code muss in ein tabellenblatt. Nicht in ein modul.
ransi
Bild

Betrifft: AW: Doppeklick auf Zellen oder Bereiche beschränke
von: Horst

Geschrieben am: 22.03.2005 17:50:47
Hallo Ransi, (cc. Boris)
schön, dass Du mir wieder antwortest.
Was meinst Du mit: "der code muss in ein tabellenblatt. Nicht in ein modul."
In meiner ersten selbst ausgetüftelten Version hatte ich den ersten Teil des Codes:
"Application.OnDoubleClick = "Get_Chart" ... usw " als Event-Trigger in "Tabelle1"
und das aufzurufende Sub in "Modul1". Das hat funktioniert, allerdings für alle Zellen.
Wenn ich jetzt Dein:
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(ActiveCell, Range("a1:b10")) Is Nothing Then Exit Sub
Cancel = True
Call Get_Chart
End Sub

in "Tabell1" lege, und meine Call-Prozedur in "Modul1" belasse, dann reagiert VBA nicht.
Ähnlich geht es mir mit dem Vorschlag von Dir, Boris. Deinen Code habe ich allerdings in "Klassenmodul1" kopiert und meine Call-Prozedur wieder in "Modul1".
Beide Varianten erzeugen keine Reaktion beim Doppelklick auf eine Zelle in dem angegebenen Bereich, statt dessen wird die Zellbearbeitung aktiviert.
Was kann ich falsch gemacht haben ?
Horst
Bild

Betrifft: AW: Doppeklick auf Zellen oder Bereiche beschränke
von: Boris

Geschrieben am: 22.03.2005 18:01:18
Hi Horst,
Ähnlich geht es mir mit dem Vorschlag von Dir, Boris. Deinen Code habe ich allerdings in "Klassenmodul1" kopiert und meine Call-Prozedur wieder in "Modul1".
Letzteres (Modul1) ist korrekt, das "Klassenmodul1" wiederum nicht.
Links im Projektexplorer findest du deine Arbeitsmappe - und zudem die Namen der vorhandenen Tabellenblätter.
Doppelklick auf DAS Tabellenblatt, in dem der Code laufen soll. Und diese Tabellenblätter nennt man eben auch "Klassenmodule".
Grüße Boris
Bild

Betrifft: AW: Doppeklick auf Zellen oder Bereiche beschränke
von: Horst

Geschrieben am: 22.03.2005 18:22:36
Hallo Ihr Beiden,
das kommt davon, wenn man keine Ahnung hat ! Jetzt habe ich eine Version für Sonntags und eine für die Woche (hihi). Beide laufen perfekt.
Vielen Dank für Eure prompte Hilfe (bis zur nächsten Hürde).
Gruß,
Horst
Bild

Betrifft: AW: Doppeklick auf Zellen oder Bereiche beschränken.
von: Boris

Geschrieben am: 22.03.2005 17:00:26
Hi Horst,
im Klassenmodul der entsprechenden Tabelle:
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim str As String
str = "A1,C1:C10,E5,F1:G5" 'Bereiche, für die sonst_was aufgerufen werden soll
Cancel = Not Intersect(Target, Range(str)) Is Nothing
If Cancel Then Call sonst_was 'sonst_was ist irgendeine Sub
End Sub

Grüße Boris
 Bild
Excel-Beispiele zum Thema "Doppeklick auf Zellen oder Bereiche beschränken."
Makros in Abhängigkeit vom Zellennamen aufrufen Zellen auf Kommentar überprüfen
Spalten bedingt summieren und Zellen formatieren Text aus Textbox in Zellen aufteilen
Zellen vergleichen und markieren Zählen formatierter Zellen
Daten aus Textdatei gezielt in Zellen übernehmen Zellen verbinden und trennen
Zellen bei Minuswerten schraffieren Zeilen oberhalb der markierten Zellen einfügen