Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1272to1276
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schaltfläche per Makro erzeugen

Schaltfläche per Makro erzeugen
Claus
Hallo
Folgendes: Gegeben sei eine X- und eine Y-Koordinate (z. B. kox = 3, koy = 5, das wäre die Zelle C5) Das könnte an einer bestimmten Stelle als Zelleninhalt stehen oder auch (als Variable?) aus einem anderen Makro kommen.
Innerhalb dieser Zelle soll mir ein Makro eine Schaltfläche erzeugen
Größe der Schaltfläche wäre idealer Weise ein Kreis 10 % kleiner wie die Zelle (x-Ausdehnung) oder auch gleich wie die Zelle, wenn das aber aufwändig ist auch eine feste Größe als Kreis.
Die nächste Herausforderung wäre dann, dass ein Klick auf diese Schaltfläche (von denen ich mehrere erzeugen will) wiederum die Koordinaten dieser Zelle irgendwo hin schreibt oder an einen anderen Makro übergibt.
Geht sowas? und wenn Ja würde mich natürlich interessieren wie...
Vielen Dank schon mal
Grüßle Claus

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Schaltfläche per Makro erzeugen
21.07.2012 17:25:43
Josef

Hallo Claus,
wofür das wohl wieder gut sein soll ;-))
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub test()
  Dim lngX As Long, lngY As Long
  
  lngY = 3
  lngX = 5
  
  With Cells(lngX, lngY)
    prcAddShape .Left + .Width * 0.05, .Top + .Height * 0.05, .Width * 0.9, "'theAction ""Zeile - " & .Row & vbLf & "Spalte - " & .Column & """'"
  End With
End Sub


Sub test2()
  Dim lngRow As Long, lngCol As Long
  
  With ActiveSheet
    .Shapes.SelectAll
    Selection.Delete
    For lngRow = 1 To 10
      For lngCol = 1 To 10
        With .Cells(lngRow, lngCol)
          prcAddShape .Left + .Width * 0.05, .Top + .Height * 0.05, .Width * 0.9, "'theAction ""Zeile - " & .Row & vbLf & "Spalte - " & .Column & """'"
        End With
      Next
    Next
  End With
  
End Sub


Sub prcAddShape(x_ As Double, y_ As Double, size_ As Double, OnACtion_ As String)
  Dim objShp As Shape
  
  Set objShp = ActiveSheet.Shapes.AddShape(msoShapeOval, x_, y_, size_, size_)
  
  With objShp
    .Fill.ForeColor.RGB = vbYellow
    .Line.ForeColor.RGB = vbRed
    .Line.Weight = 1
    .OnAction = OnACtion_
    End With
  
  Set objShp = Nothing
End Sub


Sub theAction(Message As String)
  MsgBox Message
End Sub



« Gruß Sepp »

Anzeige
AW: Schaltfläche per Makro erzeugen
21.07.2012 18:03:37
Claus
Vielen Dank Sepp.
Tja, ich kann halt keine Programmiersprache, deshalb versuche ich es mit VB (obwohl ich es eben nicht kann) Sorry. Es soll den Nachbau eines kleinen Internetspiels geben, um trainieren und etwas ausprobieren zu können. (Karopapier.de)
Ich hoffe, dass es dir auch Spaß macht solche Dilettanten wie mich zu beraten. Wenn nicht, ignoriere mich bitte. (Allerdings hole ich mir hier auch ab und zu Lösungen für Probleme die ich auf Arbeit brauche, dies hier ist eben reines Freizeitvergnügen.)
Mein Problem: Ich komme mit den Rahmenbedingungen noch nicht klar. Was ist z. B. gemeint mit "Modul: Modul1 Typ: Allgemeines Modul"? Wohin muss ich das "Option Explicit" schreiben?
Also ich versuche mal deine Codes irgenwie einzubauen, würde mich aber über eine weitere Unterstützung sehr freuen.
Anzeige
AW: Schaltfläche per Makro erzeugen
21.07.2012 18:08:52
Josef

Hallo Claus,
einfach den gesamten Code kopieren und ein Standardmodul (Einfügen > Modul) einfügen.
Dann das Makro "Test" oder "Test2" ausführen.

« Gruß Sepp »

AW: Schaltfläche per Makro erzeugen
21.07.2012 20:14:38
Claus
Hallo Sepp,
prima, jetzt schaffe ich es, die Schaltfläche mit entsprechenden Variablen da hin zu bekommen, wo ich es will. (Startpunkte, und später die Zugmöglichkeiten im Spiel)
Das wieder Auslesen klappt aber noch nicht. Wo hat die Messagebox (die ja die richtigen Werte ausgibt) ihre Werte her? Kann ich die x- und Y-Koordinaten in dem Tabellenblatt wo der Makro gestartet wird, einfach in zwei nebeneinanderliegende Zellen schreiben?
Wäre superspitze, wenn du mir das auch noch zeigen könntest.
Danke + Grüßle Claus
Anzeige
AW: Schaltfläche per Makro erzeugen
21.07.2012 21:15:53
Josef

Hallo Claus,
die Ausgabe erfolgt in A1/B1.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub test()
  Dim lngX As Long, lngY As Long
  
  lngY = 3
  lngX = 5
  
  With Cells(lngX, lngY)
    prcAddShape .Left + .Width * 0.05, .Top + .Height * 0.05, .Width * 0.9, "theAction"
  End With
End Sub



Sub prcAddShape(x_ As Double, y_ As Double, size_ As Double, OnACtion_ As String)
  Dim objShp As Shape
  
  Set objShp = ActiveSheet.Shapes.AddShape(msoShapeOval, x_, y_, size_, size_)
  
  With objShp
    .Fill.ForeColor.RGB = vbYellow
    .Line.ForeColor.RGB = vbRed
    .Line.Weight = 1
    .OnAction = OnACtion_
    End With
  
  Set objShp = Nothing
End Sub



Sub theAction()
  With ActiveSheet.Shapes(Application.Caller)
    Cells(1, 1) = .TopLeftCell.Row
    Cells(1, 2) = .TopLeftCell.Column
  End With
End Sub



« Gruß Sepp »

Anzeige
AW: Schaltfläche per Makro erzeugen
22.07.2012 01:43:45
Claus
Endlich zum Ausprobieren gekommen. Jaaa, es klappt! Vielen Dank und liebe Grüße
Claus

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige