Guten Tag zusammen,
in einer Excelmappe habe ich zwei Makros angelegt. Geht es, diese per Hyperlink jeweils in einer dafür vorgesehenen Zelle zu starten?
Also: KLICK … und das Makro läuft.
Wär’ ganz nützlich. Danke
Ludwig
Guten Tag zusammen,
in einer Excelmappe habe ich zwei Makros angelegt. Geht es, diese per Hyperlink jeweils in einer dafür vorgesehenen Zelle zu starten?
Also: KLICK … und das Makro läuft.
Wär’ ganz nützlich. Danke
Ludwig
Hi,
ist schon ein weichen her dass ich mit VBA unterwegs war, aber ich würde folgenden gedankengang gehen:
in einer Excelmappe habe ich zwei Makros angelegt. Geht es,
diese per Hyperlink jeweils in einer dafür vorgesehenen Zelle
zu starten?
Das macht so wohl wenig Sinn, und ich wüsste auch nicht, dass das geht. Ein Klick auf einen Hyperlink öffnet eine Webseite, und ein Makro ist keine Webseite.
Aber man könnte nun natürlich hergehen, in die Zelle einen Text „Klick mich“ schreiben, ihn formatieren wie einen Hyperlink (Blau mit Unterstrich) und das Makro starten, wenn die zelle angeklickt wird.
Die entsprechende Routine heißt soweit ich mich erinnere Worksheet … SelectionChange.
In der würdest Du (da sie be Klick auf jede Zelle feuert) auf die Zellenadresse Deiner „heißen“ Zelle filtern, oder den Zelleninhalt auf Deinen Text testen, und ggf.
dein Makro mit Call starten.
Müsste so irgendwie gehen.
Gruss Armin
Hi Armin, vorweg schon mal danke!
Aber man könnte nun natürlich hergehen, in die Zelle einen
Text „Klick mich“ schreiben, ihn formatieren wie einen
Hyperlink (Blau mit Unterstrich) und das Makro starten, wenn
die zelle angeklickt wird.
Jetzt wird’s für mich richtig spannend: …
Die entsprechende Routine heißt soweit ich mich erinnere
Worksheet … SelectionChange.
Ob da jemand mir mit ein bisschen genaueren Tipps weiterhelfen kann?
Genau so was suche ich. Vielen Dank und danke für weitere Hilfe
Gruß
Ludwig
Grüezi Ludwig
Aber man könnte nun natürlich hergehen, in die Zelle einen
Text „Klick mich“ schreiben, ihn formatieren wie einen
Hyperlink (Blau mit Unterstrich) und das Makro starten, wenn
die zelle angeklickt wird.Jetzt wird’s für mich richtig spannend: …
Die entsprechende Routine heißt soweit ich mich erinnere
Worksheet … SelectionChange.Ob da jemand mir mit ein bisschen genaueren Tipps weiterhelfen
kann?
Kopere die folgenden Zeilen ins Code-Modul des betreffenden Tabellenblattes in dem der Code laufen soll (am Einfachsten kommst Du mit einem Rechtsklick auf den Tabellenblattreiter und ‚Code anzeigen‘ dorthin):
Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
If Not Target.Cells.Count \> 1 Then
If Target.Address(0, 0) = "A1" Then
MsgBox ("Zelle A1 wurde angeklickt")
End If
If Target.Address(0, 0) = "B10" Then
MsgBox ("Zelle B10 wurde angeklickt")
End If
End If
End Sub
Markierst Du nun (per Maus oder per Verschieben des Cursors mit den Pfeiltasten) eine der beiden Zellen A1 oder B10, dann wird eine Meldung angezeigt.
Anstelle der Meldung kommt dann halt der Aufruf deiner Makros.
Mit freundlichen Grüssen
Thomas Ramel
Grüezi Thomas,
wir kommen der Sache näher. Vielen Dank. Darf ich etwas nachfragen?
Angenommen, meine beiden Makros heißen „sortieren_1“ und „sortieren_2“.
Wo genau müssen diese in deiner Routine jeweils eingebaut werden?
Etwa so:
If Target.Address(0, 0) = „A1“ Then
MsgBox („Zelle A1 wurde angeklickt“)
run „sortieren_1“
End If
Vielen Dank, wenn du mir damit noch vollends helfen würdest.
Herzlichen Gruß
Ludwig
Kopere die folgenden Zeilen ins Code-Modul des betreffenden
Tabellenblattes in dem der Code laufen soll (am Einfachsten
kommst Du mit einem Rechtsklick auf den Tabellenblattreiter
und ‚Code anzeigen‘ dorthin):Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Target.Cells.Count > 1 ThenIf Target.Address(0, 0) = „A1“ Then
MsgBox („Zelle A1 wurde angeklickt“)
End IfIf Target.Address(0, 0) = „B10“ Then
MsgBox („Zelle B10 wurde angeklickt“)
End IfEnd If
End SubMarkierst Du nun (per Maus oder per Verschieben des Cursors
mit den Pfeiltasten) eine der beiden Zellen A1 oder B10, dann
wird eine Meldung angezeigt.
Anstelle der Meldung kommt dann halt der Aufruf deiner Makros.Mit freundlichen Grüssen
Thomas Ramel
- MVP für MS-Excel -
Grüezi Ludwig
wir kommen der Sache näher. Vielen Dank. Darf ich etwas
nachfragen?
Angenommen, meine beiden Makros heißen „sortieren_1“ und
„sortieren_2“.
Wo genau müssen diese in deiner Routine jeweils eingebaut
werden?
Das hatte ich doch deutlich geschrieben - anstelle der MsgBoxen kommen deine Aufrufe für die Makros.
Was genau hast Du daran nicht verstanden?
Hast Du es ausprpbiert?
Bist Du auf Fehler gestossen - wenn ja auf welche?
…oder fragst Du einfach mal prophylaktisch nach…?
Wenn deine Makros in einem allgemeinen Modul abgelegt sind, dann ganz einfach so:
Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
If Not Target.Cells.Count \> 1 Then
If Target.Address(0, 0) = "A1" Then
Sortieren\_1
End If
If Target.Address(0, 0) = "B10" Then
Sortieren\_2
End If
End If
End Sub
Vielen Dank, wenn du mir damit noch vollends helfen würdest.
…eigentlich machen wir hier ja Hilfe zur Selbsthilfe, was keinen pfannenfertigen Code einschliesst…
Mit freundlichen Grüssen
Thomas Ramel
Das hatte ich doch deutlich geschrieben - anstelle der
MsgBoxen kommen deine Aufrufe für die Makros.
Siehst du, dass da die Aufrufe hinmüssen, war mir freilich klar. Ich wusste aber leider nicht, wie.
Wenn deine Makros in einem allgemeinen Modul abgelegt sind,
dann ganz einfach so:Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Target.Cells.Count > 1 ThenIf Target.Address(0, 0) = „A1“ Then
Sortieren_1
End IfIf Target.Address(0, 0) = „B10“ Then
Sortieren_2
End IfEnd If
End Sub…eigentlich machen wir hier ja Hilfe zur Selbsthilfe, was
keinen pfannenfertigen Code einschliesst…
Warum bist du so streng mit mir? Ich wusste eben die Syntax nicht und hatte an etwas wie „run …“ gedacht. Insofern bin ich für diese deine Hilfe wiederum dankbar und war darauf angewiesen. Jetzt erst komme ich weiter. Und „pfannenfertig“ ist es deswegen auch noch nicht.
Dankbar, aber ob des Tadels etwas verunsichert grüßend
Ludwig
Nochmals Hallo Thomas,
so wie nachstehend einkopiert läuft die Routine. Die zweite und die vorletzte Zeile habe ich (zunächst testweise) deaktiviert, sonst wäre außer einer Fehlermeldung nichts Erkennbares geschehen.
Das mit dem Code einfügen über Rechtsklick auf Tabellenreiter war mir übrigens auch neu. Eigene Makros habe ich schon viele angelegt und über Hotkeys tausende Male gestartet, über bestimmt schon 15 Jahre hinweg, aber über „Hyperlinks/Mausklick“ war es mir neu.
Jetzt funzt es bestens. Danke. Gruß
Ludwig
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'If Not Target.Cells.Count > 1 Then
If Target.Address(0, 0) = „E1“ Then
A_nur_sortieren
End If
If Target.Address(0, 0) = „G1“ Then
B_nach_Namen_sortieren_für_Outlook
End If
'End If
End Sub
Grüezi Ludwig
so wie nachstehend einkopiert läuft die Routine. Die zweite
und die vorletzte Zeile habe ich (zunächst testweise)
deaktiviert, sonst wäre außer einer Fehlermeldung nichts
Erkennbares geschehen.
Das kann ich so nicht nachvollziehen - diese Abfrage prüft, dass nur eine einzelne Zelle markiert ist und kann IMO keine Fehlermeldung verursachen.
Hattest Du denn Fehlermeldungen?
Wenn ja, welche genau waren das?
Einen Zusammenhang könnte ich mir (ungeprüft) mit verbundenen Zellen noch vorstellen…
Das mit dem Code einfügen über Rechtsklick auf Tabellenreiter
war mir übrigens auch neu. Eigene Makros habe ich schon viele
angelegt und über Hotkeys tausende Male gestartet, über
bestimmt schon 15 Jahre hinweg
…siehst Du und genau darum war ich so streng mit dir.
Bei dieser Erfahrung mit Makros und VBA-Code muss/will ich einfach davon ausgehen, dass Du selbst etwas versuchst und dich so weiter bringst, statt alles auf dem Serviertablett präsentiert zu kriegen.
Melden bei Problemen und nach deren Schilderung ist allemal OK, aber wenn ich nicht darauf schliessen kann, dann weise ich halt deutlich(er) darauf hin.
Jetzt funzt es bestens. Danke. Gruß
Bitte, immer gerne
Mit freundlichen Grüssen
Thomas Ramel