Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1848to1852
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

Commandbutton ansprechen

Commandbutton ansprechen
22.09.2021 22:36:29
Dieter
Hallo,
Ich erstelle mir über ein Suche Button ein neues Tabellenblatt mit dem Namen "Gefunden".
Dabei wird in dem neuen Blatt "Gefunden" gleichzeitig ein neuer CommandButton erstellt.
Frage: Wie kann ich jetzt diesen neuen erstellen CommandButton im Blattnamen "Gefunden" aktivieren um dann weiter damit zu arbeiten ?
zB. eine Userform aufrufen ?
zu beachten wäre noch wenn ich mit den Daten im neuen Blatt gearbeitet habe lösche ich dieses neue Blatt "Gefunden" wieder zur Sicherheit.
Also muss der Button immer wieder neu aktiviert werden da das neue Blatt gelöscht wird.
Bin für jede Hilfe dankbar
Mfg.
Dieter

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Commandbutton ansprechen
22.09.2021 22:56:13
Daniel
Hi
am einfachsten ist, du legst ein Vorlangenblatt an, das den Button und den Code bzw die Verknüpfung zum Makro bereits enthält und kopierst dann diese Vorlage mit Sheets.Copy.
Dann wird alles mit kopiert, was auf diesem Blatt ist, sowie die Codes im Modul.
Um die Erstellung es Buttons brauchst du dich dann nicht weiter kümmern.
wenn du alles komplett neu erstellen willst, solltest du:
- das Makro in einem allgemeinen Modul erstellen
- als Button einen aus der Gruppe "Formularfeldsteuerelemente" verwenden und ihm das Makro aus dem allgemeinen Modul zuweisen.
Die Erstellung des Buttons kannst du komplett mit dem Markorecorder aufzeichnen, daher gehe ich mal davon aus, dass ich den Code dazu nicht posten muss.
Gruß Daniel
Anzeige
AW: Commandbutton ansprechen
22.09.2021 23:07:54
Piet
Hallo
Frage zu einer ganz anderen Idee, ich bin einfach zu faul mir alles ständig neu zu erstellen!
Wenn du öfters Daten suchen must kannst du das Suchblatt ja ausblenden und wieder einblenden. Dann must du nichts löschen. Ist das eine Alternative?
mfg Piet
AW: Commandbutton ansprechen
23.09.2021 11:26:41
Dieter
Hey Piet,
Das Problem ist nicht die Faulheit, da wenn es funkt brauchst Du ja nicht wieder neu erstellen.
Mit dem Blatt ein und ausblenden war auch ein Gedanke, aber ich muss mit den Gefundenen Daten weiter arbeiten wie zB. drucken, filtern usw.
deswegen wollte ich über den neuen Button zB. eine Userform aufmachen wo ich dann weitere Dinge erledigen kann.
zu Daniel,
so was ähnliches hatte ich versucht, aber mein VBA ist doch nicht soweit das ich das hinbekomme bis jetzt. Ich baue mir meine Dinge
aus verschiedenen Dingen zusammen und bearbeite Sie dann bis es passt.
Kurz zum Code, Erst suchen, dann wird Blatt erstellt, dann wird das gefundene kopiert ins neue Blatt, dann wird der Button erstellt u. umbenannt.
Da der Button doch ganz am Ende erstellt wird mit dem Blatt ? dachte ich, das ich den Button auch dann aktivieren kann
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
, DisplayAsIcon:=False, Left:=Range("E1").Left, Top:=Range("E1").Top, Width:=150, _
Height:=50).Select
ActiveSheet.OLEObjects("CommandButton1").Object.Caption = "Bearbeiten !!!"
End Sub
Dachte sowas. Sheets(1).CommandButton1.Enabled = True ' geht nicht damit zu aktivieren
Trotzdem danke der Anregung, aber hoffe mal auf weitere Hilfe
Mfg.
Dieter
Anzeige
AW: Commandbutton ansprechen
23.09.2021 11:45:49
Daniel
Hi
So erstellt du einen ActiveX-Commandbutton.
Meine Beschreibung bezug sich auf einen Formurlarfeld-Button.
ActiveX-Controls benötigen jedoch Makros, die im Modul des jeweiligen Tabellenblatts liegen, du müsstest, wenn du ein neues Blatt erstellt, nicht nur den Button erzeugen, sondern auch den Code dazu.
Code per Makro zu schreiben ist zwar machbar, aber umständlich und nicht mehr "VBA bescheiden".
Ich würde dir empfehlen, einfach ein weiteres Blatt als Vorlage anzulegen, welches den Button und den Code enthält, und dann dieses Vorlagenblatt zu kopieren, anstatt ein neues Blatt zu erstellen.
Gruß Daniel
Anzeige
AW: Commandbutton ansprechen
23.09.2021 12:00:27
Daniel
"deswegen wollte ich über den neuen Button zB. eine Userform aufmachen wo ich dann weitere Dinge erledigen kann."
Wenn sowas dein Ansinnen ist, dann gehts auch noch ganz anders und viel einfacher:
Geh ins Modul "DieseArbeitsmappe" und erzeuge dir dort das EventMakro "BevoreDoubleClick" (bitte für korrekte Erstellung über die rechte Combobox gehen)
Mit diesem Event lässt du dann folgenden Code ausführen:

If Target.Value = "Userform starten" then
Cancel = True
Userform1.Show
End if
Damit hast du ein Makro erstellt, dass immer ausgeführt wird, wenn du einen Doppelklick auf irgendeine Zelle in irgendeinem Tabellenplatz machst, das gilt auch für neu erstellte Blätter.
Das gezeigte Makro sorgt dann dafür, dass die Userform nur dann gestartet wird, wenn dieser Text in der Zelle steht.
Somit kannst du jede Zelle zum Startbutton für die Userform machen einfach indem du diesen Text in die Zelle schreibst.
Wäre das einfachste, um für zusätzlich erzeugte Blätter Startmöglickeiten für Makros zu erzeugen.
Gruß Daniel
Anzeige
AW: Commandbutton ansprechen
23.09.2021 13:11:19
Dieter
Hey Daniel
Das ist eine coole Sache, und es klappt auch wunderbar.
Frage, kann ich mir das auch sofort in die Zelle zB. F2 reinschreiben lassen wenn ich das neue Blatt erstellt habe ?
Dann wäre es noch einfacher. Da ich sonnst immer erst schreiben müsste und dann den Doppelklick drauf machen.
Aber sonst prima von Dir vielen Dank erst mal.
Mfg.
Dieter
AW: Commandbutton ansprechen
23.09.2021 13:53:33
Pierre
Hallo Dieter,
ohne richtigen Test anhand deiner Mappe, z. B. nach dem Einfügen des neuen Blattes, mit diesem Block:

With Sheets(2)          'die 2 anpassen, oder du schreibst hier With Worksheets("Tabelle2"), Name an neu erstelltes Blatt anpassen
Range("F2").Value = "Userform öffnen"
End With
Schau mal, ob das funktioniert.
Gruß Pierre
Anzeige
AW: Commandbutton ansprechen
23.09.2021 14:14:34
Rudi
Hallo,
ändere den Befehl zum einfügen in

Worksheets.Add.Range("F2")="Userform öffnen"
Gruß
Rudi
AW: Commandbutton ansprechen
23.09.2021 23:29:56
Dieter
Hallo Rudi,
Leider funkt Dein Befehl nicht. aber trotzdem Danke der Mühe
auch der Code von Pierre funkt leider nicht.
aber auch Danke Deiner Mühe
Hey Daniel
Am besten ist Deiner der funkt bis jetzt prima. hab damit schon einiges versucht.
noch eine Kleinigkeit hätte ich gerne noch, wenn jemand die Lösung weiß.
Ich habe mit Recorder die Farbe auf der Zeile F2 (Grün) geändert mit dem Code
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274 ' hell grün
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Der klappt aber nicht, hab versucht die Anweisung in mehrere Unterteilungen vom Code einzubinden.
Also wenn der Code richtig ist, an welcher stelle oder in welchem Modul muss der stehen ?
Auch dafür schon mal vielen Dank der Mühe
Mfg.
Dieter
Anzeige
AW: Commandbutton ansprechen
23.09.2021 23:33:07
Dieter
Hallo Rudi,
Leider funkt Dein Befehl nicht. aber trotzdem Danke der Mühe
auch der Code von Pierre funkt leider nicht.
aber auch Danke Deiner Mühe
Hey Daniel
Am besten ist Deiner der funkt bis jetzt prima. hab damit schon einiges versucht.
noch eine Kleinigkeit hätte ich gerne noch, wenn jemand die Lösung weiß.
Ich habe mit Recorder die Farbe auf der Zeile F2 (Grün) geändert mit dem Code
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274 ' hell grün
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Der klappt aber nicht, hab versucht die Anweisung in mehrere Unterteilungen vom Code einzubinden.
Also wenn der Code richtig ist, an welcher stelle oder in welchem Modul muss der stehen ?
Auch dafür schon mal vielen Dank der Mühe
Mfg.
Dieter
Anzeige
AW: Commandbutton ansprechen
24.09.2021 00:12:40
Daniel
Hi
Das musst du doch wissen.
Ich weiß doch nicht, wann und wo du dein Blatt einfügst.
Das man das Färben der Zelle ausführen muss, kurz nachdem man das Blatt erstellt hat auf dem man die Zelle färben will, sollte doch logisch sein, wenn man sich den Ablauf vorstellt.
Du hast geschafft, einen Button auf dem Blatt zu erstellen und jetzt scheitert du daran, eine Zelle zu befüllen?
Gruß Daniel
AW: Commandbutton ansprechen
24.09.2021 13:55:59
Dieter
Hey Daniel,
Ich arbeite daran es zwischen den richtigen Ablauf zu machen. es klappt aber nur teilweise, Warum ?
Dachte aber auch mit Deinen Kenntnissen das Du den Code kürzer erstellen könntest, deshalb meine Frage.
Habe ja mit dem Recorder für die Zeile F2 noch mehr, damit es vernünftig aussieht.
Hier mal das vom Recorder was nur mit der Zelle F2 zu tun hat
Rows("1:1").RowHeight = 27
With ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
ActiveWindow.FreezePanes = True
ActiveSheet.Range("F1").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Und nachfolgend der bis jetzt ganze Code der funkt

Private Sub CommandButton2_Click()
Dim ws As Worksheet, _
rErg As Range, _
strSearch As String, _
StrFirstFound As String, _
iFound As Integer
strSearch = InputBox("wonach wollen Sie suchen?", , "")
If strSearch = "" Then Exit Sub
Worksheets.Add Before:=Worksheets(1)   ' wird ein Tabellenblatt ganz rechts erstellt
ActiveSheet.Name = "Gefunden"
For Each ws In ThisWorkbook.Worksheets
If ws.Index > 1 Then
Set rErg = ws.Range("C:C").Find(strSearch)
If Not rErg Is Nothing Then
StrFirstFound = rErg.Address
Do
iFound = iFound + 1
'Ausgabe Fundzeile
rErg.EntireRow.Copy (ThisWorkbook.Worksheets(1).Cells(iFound, 1))
Set rErg = ws.Range("C:C").FindNext(rErg)
Loop While Not rErg Is Nothing And rErg.Address  StrFirstFound
End If
End If
Next ' ws
With Worksheets("Gefunden")     'Blattname anpassen
.Columns("A:A").ColumnWidth = 14    ' Zeilenbreite anpassen
.Columns("B:B").ColumnWidth = 14
.Columns("C:C").ColumnWidth = 120
End With
ActiveSheet.Range("F1").Value = "Userform"
ActiveSheet.Range("A3").Select
End Sub
Hoffe mal das es nicht zu viel ist für ein Freitag 'lol
Wie gesagt nur wenn es Dir keine Mühe macht mal darüber zu schauen.
Aber trotzdem vielen Danke wie Du mir bis jetzt geholfen hast.
Mfg.
Dieter
Anzeige
AW: Commandbutton ansprechen
24.09.2021 17:40:37
Dieter
Hey Daniel, und all
Das mit Der Farbe und Fenster Fixieren klappt jetzt auch.
Jetzt habe ich noch ein kleines Problem, und zwar wenn er gesucht und gefunden hat, soll er mir das erst in ab Zeile A2 im neuen Blatt einfügen,
Da ich in allen Tabellen Beschriftungen habe von A1 bis E1
Bekomme das leider nicht hin in meinem Code, auch nicht mit Recorder.
Hier der Auszug wo ich denke muss geändert werden

For Each ws In ThisWorkbook.Worksheets
If ws.Index > 1 Then
Set rErg = ws.Range("C:C").Find(strSearch)
If Not rErg Is Nothing Then
StrFirstFound = rErg.Address
Do
iFound = iFound + 1
'Ausgabe Fundzeile
rErg.EntireRow.Copy (ThisWorkbook.Worksheets(1).Cells(iFound, 1))
Set rErg = ws.Range("C:C").FindNext(rErg)
Loop While Not rErg Is Nothing And rErg.Address  StrFirstFound
End If
End If
Next ' ws
Bin für jede Hilfe dankbar
Gruß
Dieter
Anzeige
AW: Commandbutton ansprechen
27.09.2021 12:54:03
Rudi

iFound = 1
For Each ws In ThisWorkbook.Worksheets
...

AW: Commandbutton ansprechen einfügen in A2
27.09.2021 13:46:35
Dieter
Hey Rudi,
Danke der Antwort, aber das klappt gar nicht.
Gr.
Dieter
AW: Commandbutton ansprechen
28.09.2021 23:53:39
Peter
Hallo Dieter,
ich habe mal eine Mappe - wie schon empfohlen - mit Formularsteuer-Elementen gestaltet. Mit dem Active-X-Steuerelement klappt es leider nicht, weil dazu ein Makrobefehl auf dem einzufügenden Arbeitsblatt erstellt werden müsste.
https://www.herber.de/bbs/user/148337.xlsm
Mit freundlichem Gruß
Peter Kloßek

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige