146 Aufrufe
Gefragt in Tabellenkalkulation von addeguddi Experte (2.6k Punkte)
Hallo und guten Tag,

besteht die Möglichkeit, in Zelle H12 steht die 1 dann soll er mir das VBA für Ohne im Tabellenblatt übernehmen; wenn ich per Doppelklick in Zelle H12 klicke und die 2 erscheint soll er mir das VBA für Doppel in im gleichen Tabellenblatt übernehmen, Bei H12 di3 dann das VBA Doppel in out und wenn 4 steht dann VBA für DO IIN DO out übernehmen. Ist das machbar und auf was müsste ich achten oder habt ihr einen Vorschlag wie man das gestalten könnte?

Gruß Adde

7 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Adde,

alle Spielarten in einem Blatt zu vereinen dürfte schwierig werden, da es ja für alle Spielarten z.B. ein eigenes Before_Doppelklick-Makro gibt. Du kannst zwar per VBA mit dem Call-Befehl auf andere Makros zugreifen, aber das bringt dich hier nicht weiter, da pro Tabelle immer nur ein Doppelklick-Makro stehen kann.

Ich würde für jede Spielart ein eigenes Blatt in eine Mappe kopieren, dann kannst du dort auswählen.

Gruß

M.O.
0 Punkte
Beantwortet von addeguddi Experte (2.6k Punkte)
Hallo M.O.

hoffe dir geht es gut. Vielen Dank für deine Antwort. Hatte halt eine Idee und dachte es wäre irgendwie  möglich, dies zu bewerkstelligen. Habe für jede Spielart eine eigene Tabelle erstellt und mit einem Klick auf Link komme ich zu jeder Spielart, ist auch OK.

Gruß Adde
0 Punkte
Beantwortet von vbastler Mitglied (228 Punkte)
Bearbeitet von vbastler

Moin Adde,

man kann durch die Abfrage des Targets auch innerhalb einer Tabelle selbstverständlich und sehr einfach verschiedene Makros (auch mehrere in Folge) aufrufen. Kopier das Beispiel in den Code Deiner Tabelle:

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True

Select Case Target.Address
    Case "$A$1"
        test1
    Case "$E$5"
        test2
        test3
End Select
End Sub

Auf call kannst Du  in aktuellem XL-Versionen verzichten. Und dann in ein normales Modul diese Spielerei:

Option Explicit

Sub test1()
MsgBox "test1"
End Sub

Sub test2()
MsgBox "test2"
End Sub

Sub test3()
MsgBox "test3"
End Sub

Das dürfte als Einstieg genügen.

@M.O. Das mit dem pro Makro eine Tabelle war doch ein Scherz, oder?

Grüße

d'r Bastler von den VBAsteleien.de

0 Punkte
Beantwortet von addeguddi Experte (2.6k Punkte)
Vielen Dank für deine Antwort VBAasteleien

ich weiß nicht wie und was ich machen soll, ich verstehe sehr wenig von VBA, wie ich den Bezug auf die Tabellenblätter erstelle du schreibst Sub Test, müsste ich dann einen Bezug auf die Tabellenblätter erstellen? oder soll ich den 2ten Abschnitt in ein Model einpflegen.

Zum 1ten Teil: wenn Kopieren nur ab Sub Test 1 da Doppelklick schon vorhanden.

Gruß Adde
+1 Punkt
Beantwortet von vbastler Mitglied (228 Punkte)

Moin Adde,

wenn Du schon einen Code für einen DblClk in einer Tabelle hast, stell diese Sub hier einfach mal ein. Ich kann Dir dann die beiden Ideen zusammenstricken.

In den Test-Subs (die wie beschrieben in ein Allg. Modul gehören) kannst Du generell machen, was Du willst. Wenn es Bezug zur Aktiven Tabelle haben soll, hilft With ActiveSheet ... Bsp.:

Sub test1()
    With ActiveSheet
        .Cells(1, 1) = "Ich wurde per Makro gefüllt"
    End With
End Sub

Meine Msgboxen oben stehen jeweils nur als Stellvertreter für Deine Makros.

Grüße d'r Bastler von den VBAsteleien.de

0 Punkte
Beantwortet von vbastler Mitglied (228 Punkte)

Noch ein weiteres Beispiel wie Du mehrere Makros innerhalb einer Tabelle auf DblClk reagieren lassen kannst:

Du gibst dem Aufruf von test1 Target.Address als Parameter mit:

​    Case "$A$1"
        test1 Target.Address

Im Modul änderst Du dann die Sub test1 folgendermaßen um:

Sub test1(sCell As String)
    With ActiveSheet
        If .Range(sCell) = "" Then
            .Range(sCell) = "Ich wurde per Makro gefüllt"
        Else
            .Range(sCell) = ""
        End If
    End With
End Sub

Alles andere bleibt unverändert. Einfach mal ausVBAsteln ;-)

Tipp: Wenn Du in Deinen Posts auch nur ein Satzzeichen aus meinem Text zitierst, bekomme ich eine E-Mail und reagiere dann auch schneller. Viel Spaß noch!

0 Punkte
Beantwortet von vbastler Mitglied (228 Punkte)

Moin allerseits,

ich habe das Thema noch einmal aufgegriffen und etwas gebastelt. Hier bekommt man eine Beispielmappe, wie man sehr, sehr viele Events in nur einem Arbeitsblatt abfangen kann.

Schönes Wochenende! wünscht ...

d'r Bastler von den VBAsteleien.

...