Microsoft Excel

Herbers Excel/VBA-Archiv

Mehrere Funktionen auf einen Butten legen

Betrifft: Mehrere Funktionen auf einen Butten legen von: mike
Geschrieben am: 10.11.2014 15:24:19

Hallo Forum,

vielleicht kann mir jemand helfen...
Ich versuche, folgende Funktionen, die ich derzeit einzeln als Formel und Anweisung schon kapiert habe, auf einen Button zu legen. Zuerst mal die Struktur:

A1 = Auftragsnummer; A2 = Seriennummer; A3 = Hyperlink (hidden); A4 = Button

Struktur des Hyperlinks ist:
Link ins Intranet, über den ein Auftrag aufgerufen wird. Der Link geht bis zu einem "=".

Der Button soll nun folgendes machen:

• Verketten von A3 mit A1, so dass sich daraus ein kompletter Link ergibt. Aktuell gelöst über: =HYPERLINK(VERKETTEN("http://link/installation.aspx?anfId=";A3))
• Auslösen dieses Hyperlinks und damit öffnen eines Browserfensters (funktioniert momentan über Hyperlink im Klartext)
• Kopieren des Inhaltes von A2 in die Zwischenablage

So - wie bring ich das jetzt alles in dem Button unter? Das Ganze muss ca 50 x wiederholt werden, da es so viele Eingaben gibt.

Bin für jede Hilfe dankbar!

Viele Grüße - Mike

  

Betrifft: AW: Mehrere Funktionen auf einen Butten legen von: fcs
Geschrieben am: 10.11.2014 16:22:13

Hallo Mike,

im Prinzip wie folgt.
Allerdings ist nicht klar wie die 50 Wiederholungen abgewickelt werden sollen.
Wenn in 50 Spalten nebeneinander dann kann man die 1. Schaltfläche in jede der 50 Spalten kopieren.
Auf Basis der Position der aufrufenden Schaltfläche wird die Spalte ermittelt und daraus der Link.

Gruß
Franz

'Code in einem allgemeinen Modul der Datei
Sub Internet_Explorer_starten()
  'dieses Makro den Schaltflächen (aus den Formularsteuerelementen) zuweisen
  Dim varCaller
  Dim objIE As Object
  
  Dim Spalte As Long
  Dim strLink As String
  Dim wks As Worksheet, objShape As Shape
  
  Set wks = ActiveSheet
  varCaller = Application.Caller 'Name der Schaltfläche
  Set objShape = wks.Shapes(varCaller) 'Shape-Objekt der Schaltfläche
  Spalte = objShape.TopLeftCell.Column 'Spalte in der Schaltfläche plaziert ist
  
  'Link zusammenbasteln
'strLink = "https://www.herber.de" & wks.Cells(1, Spalte)
strLink = "http://link/installation.aspx?anfId=" & wks.Cells(1, Spalte)
  'Zelle in Zeile 2 kopieren
  wks.Cells(2, Spalte).Copy
  'IE Objekt kreieren und Link öffnen
  Set objIE = VBA.CreateObject("Internetexplorer.Application")
  objIE.Parent.Visible = True
  objIE.Navigate strLink
  
  Set objIE = Nothing
End Sub




  

Betrifft: AW: Mehrere Funktionen auf einen Butten legen von: mike
Geschrieben am: 11.11.2014 10:21:24

Hallo Franz,

vielen herzlichen Dank für Deinen Code! Ich verstehe allerdings nicht ganz, wie die Schaltfläche sich über die Position identifiziert... Geht das auch anstatt über die Spalte über die Zeile? Das Problem besteht aus meiner Sicht in der Struktur des Dokuments.
Ich habe mal die Datei angehängt. Ersatzweise für die spätere Funktion gibt es dort die Spalte "Google Suchbegriff". Dort nur einen Suchbegriff eingeben und dann auf den Link (!) klicken. (Button geht ja noch nicht... :)
Das Konzept mit den Buttons soll dann überall dort greifen, wo die Button in der Datei eingebunden sind.

https://www.herber.de/bbs/user/93668.xlsm

Schon jetzt vielen Dank!!!


  

Betrifft: AW: Mehrere Funktionen auf einen Butten legen von: fcs
Geschrieben am: 11.11.2014 11:02:27

Hallo Mike,

über die Anweisung

Application.Caller

kann man den Namen des Objektes (hier den Schaltflächen) ermitteln, das das Makro gestartet hat.
Dieser entspricht dem Namen des entsprechenden Shape-Objektes.
Über die TopLeftCell des Shapes (also der Zelle in der sich die obere linke Ecke der Schaltfläche befindet) kann man dann die Zeile und Spalte ermitteln in der die Schaltfläche plaziert ist.
Mit diesen Werten kann man die Zelle mit dem Link-Zusatz und die zu kopierende Zelle bestimmen und die Informationen verarbeiten.

Man muss beim Einfügen der Schaltflächen also "nur" darauf achten, dass diese immer in der gleichen Weise relativ zu den auszuwertenden Zellen plaziert werden. Dann kann man das gleiche Makro allen Schaltflächen zuweisen.

Gruß
Franz

'Code in einem allgemeinen Modul der Datei
Sub Internet_Explorer_starten()
  'dieses Makro den Schaltflächen (aus den Formularsteuerelementen) zuweisen
  Dim varCaller
  Dim objIE As Object
  
  Dim Spalte As Long
  Dim Zeile As Long
  Dim strLink As String
  Dim wks As Worksheet, objShape As Shape
  
  Set wks = ActiveSheet
  varCaller = Application.Caller 'Name der Schaltfläche
  Set objShape = wks.Shapes(varCaller) 'Shape-Objekt der Schaltfläche
  Spalte = objShape.TopLeftCell.Column 'Spalte in der Schaltfläche plaziert ist
  Zeile = objShape.TopLeftCell.Row 'Zeile in der Schaltfläche plaziert ist
  
  'Link zusammenbasteln
'strLink = "https://www.herber.de" & wks.Cells(Zeile, Spalte - 2)
  strLink = "https://www.google.de/webhp?hl=de&gws_rd=ssl#hl=de&q=" _
          & wks.Cells(Zeile, Spalte - 2)
  'Zelle mit SN in Zeile in Spalte links von Schaltfläche kopieren
  wks.Cells(Zeile, Spalte - 1).Copy
  'IE Objekt kreieren und Link öffnen
  Set objIE = VBA.CreateObject("Internetexplorer.Application")
  objIE.Parent.Visible = True
  objIE.Navigate strLink
  
  Set objIE = Nothing
End Sub



 

Beiträge aus den Excel-Beispielen zum Thema "Mehrere Funktionen auf einen Butten legen"