Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1320to1324
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 zellenabhängig

Schaltfläche zellenabhängig
10.07.2013 08:35:09
Stefan
Guten Morgen zusammen, ich möchte mir mit VBA eine Schaltfläche in einer Zelle erstellen. Die Schaltfläche einfügen, zuordnen, usw. bekomme ich alles hin. Da ich die Spaltenbreiten mit einem AutoFit veränder und ich das Blatt zu Beginn leer machen muß möchte die Schaltfläche gerne zellenabhängig erstellen (also ähnlich dem Erstellen mit gedrückter [Alt]-Taste), z.B. in die Zelle L2. Ist dies irgendwie möglich?
Gruß Stefan

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schaltfläche zellenabhängig
10.07.2013 08:46:06
Klaus
Hi Steffan,
das Sub "Test" bewegt dir den "CommandButton1" (wenn es ihn gibt!) in Tabelle1 in die Zelle A1 und macht ihn da exakt so groß wie A1:
Option Explicit
Sub Test()
Call MoveButton("CommandButton1", "Tabelle1", "A5")
End Sub
Sub MoveButton(sButton As String, sWks As String, sCell As String)
Dim rng As Range
Set rng = Sheets(sWks).Range(sCell)
With Sheets(sWks).OLEObjects(sButton)
.Top = rng.Top
.Left = rng.Left
.Width = rng.MergeArea.Width
.Height = rng.MergeArea.Height
End With
End Sub
heisst moveButton, geht aber auch mit ComboBoxes, Listboxes usw ...
Grüße,
Klaus M.vdT.

Anzeige
AW: Schaltfläche zellenabhängig
10.07.2013 09:27:04
Stefan
Hallo Klaus, leider hat es bei mir eine Fehlermeldung gegeben, das das Programm nicht auf das Objekt zugreifen kann. Ich habe aber eine andere Möglichkeit versucht, die etwas anders fuzzt.
Sub SchaltflächeInfo_einfügen()
Dim objButton   As Object
Dim strObjekt   As String
Dim cTop        As Currency
Dim cLeft       As Currency
Dim cHeight      As Currency
Dim cWidth      As Currency
Dim sheet       As Worksheet
Set sheet = ThisWorkbook.Worksheets("Einkauf")
With Range("L2")
cTop = .Top
cLeft = .Left
cHeight = .Height
cWidth = .Width
End With
Set objButton = ActiveSheet.Buttons.Add(cLeft, cTop, cWidth, cHeight)
objButton.OnAction = "info"
objButton.Caption = "Info"
objButton.Placement = xlMoveAndSize
objButton.Name = "btnInfo"
End Sub
Ich danke dir trotzdem für die schnelle Antwort, denn dadurch bin ich erst auf den anderen Weg gekommen. Noch einen schönen Tag.
Gruß Stefan

Anzeige
Danke für die RÜ! Mit Text
10.07.2013 09:35:15
Klaus
Hallo Steffan,
freut mich geholfen zu haben!
Ja klar - du "kennst" ja den Namen noch nicht, wenn du den Button erstellst. Ich benutze den "MoveButton" Code gerne, um bei Workbook-Open einmal alle Buttons zurück auf ihren Platz zu stellen. Für deine Anwendung ist deine Lösung natürlich besser.
Nur eine Frage: du referenzierst L2 nicht auf das "Einkauf"-Sheet. Die Höhe und Position stimmt also eher zufällg, oder bist du eh "aktiv" im Sheet "Einkauf"? Ansonsten müsste das besser sein:

With sheet.Range("L2")
cTop = .Top
cLeft = .Left
cHeight = .Height
cWidth = .Width
End With

Der Form halber: Variablen sollte man nicht mit bereits belegten Begriffen wie "sheet, Name, Range" benennen, um Verwechslungen zu vermeiden, aber das nur am Rande. Ich hätte das jetzt "MySheet" statt "sheet" genannt.
Grüße,
Klaus M.vdT.

Anzeige
AW: Danke für die RÜ! Mit Text
10.07.2013 09:55:06
Stefan
Hallo Klaus, da gebe ich dir natürlich recht. Ich habe das Programm gestartet und weil ich die Variable noch nicht deklariert habe, habe ich schnell Dim sheet hinzugefügt und dann vergessen es umzubenennen. Danke für den Hinweis. Jetzt heißt es sAktSheet, welches ich gerne benutze.
Gruß Stefan

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige