Ich frage mich, ob es einen einfachen Weg für ein Word-Makro gibt zu bestimmen, welche Taste gerade gedrückt wurde? Ich habe eine Dokumentvorlage mit mehreren Schaltflächen, die alle ein Makro auslösen sollten. Die Sache ist, ich möchte ein Makro erstellen, das in jeder Taste aufgerufen wird. Ich will nicht Tonnen von Makros für jeden Knopf.Bestimmen Sie, welche Taste gedrückt wurde?
Nun, dieses Makro, wenn die Taste gedrückt wird, fügt ein Bild ein und die Größe dieses Bildes wird basierend auf der Größe der Tasten ausgewählt. Das heißt, das endet als Bildplatzhalter. Aber ich möchte das Makro dynamisch schreiben, so dass der gleiche Code für jede Schaltfläche funktioniert, ohne mehr als nur das Makro aufzurufen.
Das vollständige Makro ist bereits fertig, ich muss nur noch eine letzte Sache wissen, wenn jemand Informationen darüber hat, wie dies zu erreichen ist? :) Danke im Voraus!
UPDATE: Dies ist der Code zur Zeit
Private Sub ImageButton1_Click() PicturePlaceholder ImageButton1 End Sub
Private Sub ImageButton2_Click() PicturePlaceholder ImageButton2 End Sub
Public Sub PicturePlaceholder(ByVal oButton As CommandButton)
Dim oShape As Word.Shape
Dim Dlg As Office.FileDialog
Dim strFilePath As String
Dim oDoc As Document
Dim rgePlace As Range
Dim buttonHeight As String
Dim buttonWidth As String
Set Dlg = Application.FileDialog(msoFileDialogFilePicker)
Set oDoc = ActiveDocument
Set rgePlace = Selection.Range.Fields(1) _
.Result.Paragraphs(1).Range
Response = MsgBox("Do you want to delete the button/Picture?", vbYesNoCancel, "Do you want an image here?")
If Response = vbYes Then rgePlace.Fields(1).Delete
If Response = vbCancel Then Exit Sub
If Response = vbNo Then
With Dlg
.AllowMultiSelect = False
If .Show() <> 0 Then
strFilePath = .SelectedItems(1)
End If
End With
If strFilePath = "" Then Exit Sub
Set oShape = oDoc.Shapes.AddPicture(FileName:=strFilePath, _
LinkToFile:=False, SaveWithDocument:=True, _
Anchor:=rgePlace)
With oShape
.Height = oButton.Height
.Width = oButton.Width
End With
rgePlace.Fields(1).Delete
End If
End Sub
Ok danke! :) Aber wie extrahiere ich den Namen des Buttons aus dem geteilten Code? Zum Beispiel, die einzige Sache, die ich benötige, ist, die Höhe und Breite der geklickten Schaltfläche zu extrahieren. –
Ich habe die Antwort bearbeitet, um zu zeigen, wie Sie die Schaltfläche als Parameter an die gemeinsame Funktion übergeben und somit auf ihre Eigenschaften zugreifen können. –
Wow, das funktioniert ganz gut! :) Aber könnten Sie einen kurzen Blick auf den Code werfen, den ich im ersten Post aktualisiert habe? Ich sehe, dass mein Code Bilder als oShapes einfügt, so dass sie viel einfacher bewegt werden können. Aber die Schaltfläche ist tatsächlich inline, also ist die Position, in der das Bild endet, die genaue Position der Schaltfläche. Ist es möglich, den Code leicht zu ändern, damit die Schaltflächen auch oShapes sind? Probieren Sie den Code aus und sehen Sie selbst, es funktioniert, aber das Bild endet oben auf dem Text im Dokument, da es oShape und nicht inLine-Form ist, wie die Schaltfläche war, bevor es gelöscht wurde. –