Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1284to1288
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

vorhandene Schaltfläche per VBA kopieren

vorhandene Schaltfläche per VBA kopieren
20.11.2012 10:44:50
Wilson
Hallo Community,
ich habe mal wieder ein Problem und ihr habt mir bisher immer weitergeholfen.
Habe eine Excel- Tabelle "Tabelle1" in dieser stehen unzählige Daten drin. Auf dieser Tabelle habe ich die Schaltflächen "Aktualisieren" und "Suchen".
Schaltfläche "Aktualisieren" erstellt mir weiter sechs neue Tabellen und teilt die Inhalte aus der "Tabelle1" entsprechend auf.
Mit Schaltfläche "Suchen" kann man die "SpalteB" in "Tabelle1" komplett durchsuchen.
Nun habe ich probiert die Schaltfläche "Suchen" zu kopieren/ oder neu zu erstellen, wenn ich über Schaltfläche "Aktualisieren" die Tabellen erstelle.
Kurz gesagt, will ich die Schaltfläche "Suchen" samt ihrer Funktion in in die neuen Tabellen einfügen die erstellt werden. Dies kriege ich bisher leider nicht hin.
Ich hoffe ich konnte mich vertändlich ausdrücken und ihr werdet mir wie bisher auch wieder helfen.
Danke im Voraus.
Grüße Wilson

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vorhandene Schaltfläche per VBA kopieren
20.11.2012 12:23:41
Beverly
Hi Wilson,
was für eine Schaltfläche: Formular-Steuerelement oder ActiveX-Steureelement?


AW: vorhandene Schaltfläche per VBA kopieren
21.11.2012 07:55:04
Wilson
Hallo Beverly,
danke für deine Antwort, es handelt sich um ein Formularsteuerelement.
Sorry für die verspätete Antwort.
Grüße

AW: vorhandene Schaltfläche per VBA kopieren
21.11.2012 08:47:38
Beverly
Hi Wilson,
mit dem folgenden Code kann man einen definierten Schalter ("Button 2") aus dem aktiven Tabellenblatt kopieren, in Tabelle2 einfügen und auf Position der Zelle C12 legen:
   ActiveSheet.Shapes("Button 2").Copy
With Worksheets("Tabelle2")
.Paste
.Shapes(.Shapes.Count).Top = .Range("C12").Top
.Shapes(.Shapes.Count).Left = .Range("C12").Left
End With
Dabei wird auch das verknüpfte Makro mit kopiert.
Aus deinem ersten Beitrag geht allerdings nicht eindeutig hervor, ob der kopierte Schalter nun in dem neuen Tabellenblatt oder nach wie vor in der Ursprungstabelle (Tabelle1) suchen soll. Falls damit in dem neuen Tabellenblatt gesucht werden soll, dann müsstest du das dem Schalter "Suchen" zugewiesene Makro so schreiben, dass im aktiven Tabellenblatt gesucht wird.


Anzeige
AW: vorhandene Schaltfläche per VBA kopieren
21.11.2012 10:46:51
Wilson
Hey Beverly,
danke für die schnelle Hilfe.
Stimmt, dass hätte ich erwähnen sollen. Ich suche dann immer in der aktuellen Tabelle in welcher die Suchen- Schaltfläche sich auch befindet.
Da ich ja noch relativ grün hinter den Ohren bin, habe ich jetzt nicht ganz verstanden was ich genau ändern soll und an welcher Stelle im Code. ^^
Grüße

AW: vorhandene Schaltfläche per VBA kopieren
21.11.2012 12:27:30
Beverly
Hi Wilson,
du hast deinen Code, der mit der Schaltfläche "Suchen" verknüpft ist, nicht gepostet, sodass ich leider nichts genaueres sagen kann.


Anzeige
AW: vorhandene Schaltfläche per VBA kopieren
22.11.2012 07:15:35
Wilson
Hallo Beverly,
Mit dem Klick auf dier Schaltfläche öffne ich erst eine UserForm die ich mir auf meine Bedürfnisse erstellt habe und hinter dieser UserForm befindet sich dann der Code.
Ist villeleicht nicht gut programmiert, aber mir kam es so am logischsten vor. Wie gesagt, bin halt ganz neu auf dem Gebiet.
Ich markiere mir immer die gefundene Zelle. Schrift wird fett markiert und blau gefärbt und die Zelle wir gelb eingefärbt. Beim nächsten oder vorherigen Suchergebnis wird die Formatierung immer weitergegeben und in der vorherigen zurückgesetzt.
1. Code Schaltfläche:
Private Sub cmbSuchenSNR_Click()
Dim wks As Worksheet
Dim xlEnd As Long
Set wks = ActiveWorkbook.ActiveSheet
With wks
xlEnd = .Cells(.Rows.Count, 2).End(xlUp).Row
'Schrift fett rückgängig
.Range("B4:B" & xlEnd).Font.Bold = False
'Schrift Farbe der Zelle rückgängig
.Range("B4:B" & xlEnd).Interior.ColorIndex = xlNone
End With
UserForm1.Show
End Sub

2. UserForm
Option Explicit
Private Sub TextBox1_Enter()
With TextBox1
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
Call fktMarkierungenImTabellenblattZuruecksetzen
End If
End Sub

Private Sub UserForm_Initialize()
TextBox1.SetFocus
End Sub

Private Sub cmbSuchen_Click()
Call fktMarkierungenImTabellenblattZuruecksetzen
End Sub
'Zur Info! cmbWeiter_Click und cmbZurueck_Click sind exakt gleich nur Befehle .FindNext
'und .FindPrevious sind unterschiedlich.
Private Sub cmbWeiter_Click()
Dim rngEingabe As Range
Dim xlEnd As Integer
Dim wks As Worksheet
Dim strTest As String
Set wks = ActiveWorkbook.ActiveSheet
With wks
xlEnd = .Cells(.Rows.Count, 2).End(xlUp).Row
strTest = .Name
'Schrift fett rückgängig
.Range("B4:B" & xlEnd).Font.Bold = False
'Schrift Farbe der Zelle rückgängig
.Range("B4:B" & xlEnd).Interior.ColorIndex = xlNone
'Eingabe der gewünschten Sachnummer in die TextBox1
If TextBox1 = "" Then Exit Sub
Set rngEingabe = .Columns(2).FindNext(After:=ActiveCell)
If Not rngEingabe Is Nothing Then
'Gefundene Sachnummer wird ausgewählt
rngEingabe.Select
'Gefundene Sachnummer wird fett markiert
rngEingabe.Font.Bold = True 'Fett
'Zelle mit gefundener Sachnummer wird gelb eingefärbt
With rngEingabe.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535       'oder hier eine andere Farbe
'.TintAndShade = 0
'.PatternTintAndShade = 0
End With
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Else
MsgBox "Eingegebene Sachnummer ist nicht vorhanden", vbExclamation, "Fehler"
End If
End With
End Sub

Private Sub cmbZurueck_Click()
Dim rngEingabe As Range
Dim xlEnd As Integer
Dim wks As Worksheet
Dim strTest As String
Set wks = ActiveWorkbook.ActiveSheet
With wks
xlEnd = .Cells(.Rows.Count, 2).End(xlUp).Row
strTest = .Name
'Schrift fett rückgängig
.Range("B4:B" & xlEnd).Font.Bold = False
'Schrift Farbe der Zelle rückgängig
.Range("B4:B" & xlEnd).Interior.ColorIndex = xlNone
'Eingabe der gewünschten Sachnummer in die TextBox1
If TextBox1 = "" Then Exit Sub
Set rngEingabe = .Columns(2).FindPrevious(After:=ActiveCell)
If Not rngEingabe Is Nothing Then
'Gefundene Sachnummer wird ausgewählt
rngEingabe.Select
'Gefundene Sachnummer wird fett markiert
rngEingabe.Font.Bold = True 'Fett
'Zelle mit gefundener Sachnummer wird gelb eingefärbt
With rngEingabe.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535       'oder hier eine andere Farbe
'.TintAndShade = 0
'.PatternTintAndShade = 0
End With
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Else
MsgBox "Eingegebene Sachnummer ist nicht vorhanden", vbExclamation, "Fehler"
End If
End With
End Sub

Private Sub fktMarkierungenImTabellenblattZuruecksetzen()
Dim rngEingabe As Range
Dim xlEnd As Integer
Dim wks As Worksheet
Dim strTest As String
Set wks = ActiveWorkbook.ActiveSheet
With wks
xlEnd = .Cells(.Rows.Count, 2).End(xlUp).Row
strTest = .Name
'Schrift fett rückgängig
.Range("B4:B" & xlEnd).Font.Bold = False
'Schrift Farbe der Zelle rückgängig
.Range("B4:B" & xlEnd).Interior.ColorIndex = xlNone
'Eingabe der gewünschten Sachnummer in die TextBox1
If TextBox1 = "" Then Exit Sub
Set rngEingabe = .Columns(2).Find(What:=TextBox1, LookAt:=xlPart)
If Not rngEingabe Is Nothing Then
'Gefundene Sachnummer wird ausgewählt
rngEingabe.Select
'Gefundene Sachnummer wird fett markiert
rngEingabe.Font.Bold = True 'Fett
'Zelle mit gefundener Sachnummer wird gelb eingefärbt
With rngEingabe.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535       'oder hier eine andere Farbe
'.TintAndShade = 0
'.PatternTintAndShade = 0
End With
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
Else
MsgBox "Eingegebene Sachnummer ist nicht vorhanden", vbExclamation, "Fehler"
End If
End With
End Sub

Anzeige
AW: vorhandene Schaltfläche per VBA kopieren
22.11.2012 08:14:13
Beverly
Hi Wilson,
der Prozedurbezeichnung
Private Sub cmbSuchenSNR_Click()
zum Starten des UserForms würde ich aber entnehmen, dass es sich nicht um ein Fomrularsteuerelement sondern um ein ActiveX-Steuerelement handelt und sich der Code im Codemodul des betreffenden Tabellenblattes und nicht in einem allgemeinen Modul befindet - oder sehe ich das falsch?


AW: vorhandene Schaltfläche per VBA kopieren
22.11.2012 07:24:59
Wilson
Ach so ja, mir ist aufgefallen dass ich ausversehen gesagt habe dass es sich um einFormularsteuerlement handelt. Hab mich leider vertan, es ist natürlich ein ActiveX- Steuerelement, sorry.

Anzeige
AW: vorhandene Schaltfläche per VBA kopieren
22.11.2012 08:29:47
Beverly
Hi Wilson,
leider wurde mir dieser Beitrag erst jetzt angzeigt, nachdem ich meinen vorhergehenden bereits abgeschickt hatte.
Dann habe ich das in meinem Beitrag von 08:15 also richtig erkannt. Bei einem ActiveX-Steuerelement ist das wesentlich komplizierter, da der Code ja im Codemodul des betreffenden Tabellenblattes stehen muss. In diesem Fall hast du folgende Möglichkeiten:
1. du kopierst das gesamte Tabellenblatt einschließlich Schalter, dann wird auch der Code mitkopiert
2. du löst es mittels Klassenprogrammierung
3. du schreibst den Code mit VBA ins Codemodul des Tabellenblattes
wobei die 1. Möglichkeit die einfachste ist. Bei den beiden anderen musst du sehr umfangreiche VBA-Kenntnisse besitzen, um sie realisieren zu können - davon würde ich bei "VBA-nein" abraten.
Es gibt allerdings noch eine 4. Möglichkeit: du verwendest tatsächlich ein Formularsteuerelement, schreibst deinen Code zum Starten des UserForms in ein allgemeines Modul und weist dem Schalter dieses Marko zu. Das Steuerelement kopierst du dann wie weiter oben beschrieben - dabei wird auch die Makroverknüpfung mit kopiert. Dein Makro ist bereits so geschrieben, dass es sich auf das aktive Tabellenblatt bezieht, sodass es da keinerlei Änderungen bedarf.


Anzeige
AW: vorhandene Schaltfläche per VBA kopieren
22.11.2012 08:51:47
Wilson
Okay Beverly,
danke für deine tips und Hilfe. Ich werde es jetzt mal versuchen umzusetzen.
Vielleicht schreibt man sich ja nochmal.
Viele Grüße
Wilson

AW: vorhandene Schaltfläche per VBA kopieren
20.11.2012 12:43:15
Peter
Hallo Wilson,
mit dem Kopieren von Schaltflächen ist das so eine Sache. Es kommt auf deren Formatierung an. Ist eine Schaltfläche "von Größe und Zellposition unabhängig" formatiert, dann läßt sich diese Schaltfläche nicht mit den Zellen, auf denen sie steht, kopieren. Ich nehme an, dass dies der Grund ist, dass Dir das Kopieren der Schaltfläche nicht gelingt. Die erste Schaltfläche (in dem ersten Arbeitsblatt) muss daher zunächst umformatiert werden auf "von Größe und Zellposition abhängig", dann kopiert werden und anschließend müssen alle Schaltflächen auf den ursprünglichen Formatierungs-Zustand geändert werden. Das Ganze kann leider nur einmal durchgeführt werden. Bitte daher die Datei vor dem Kopiervorgang gut sichern!
Hier meine Lösung:
https://www.herber.de/bbs/user/82701.xlsm
Übrigens: wenn man ganze Arbeitsblätter kopiert, hat man dieses Problem nicht.
Mit freundlichem Gruß
Peter Kloßek

Anzeige
AW: vorhandene Schaltfläche per VBA kopieren
21.11.2012 10:25:27
Wilson
Hallo Peter,
danke für deine Tips, hab jetzt alles überprüft, was du angesprochen hast und es ist bereits alles so eingestellt in den Formatierungen.
Werd mich noch ein wenig damit beschäftigen.
Nochmals danke.
Grüße

AW: vorhandene Schaltfläche per VBA kopieren
21.11.2012 15:48:42
Peter
Hallo Wilson,
schönen Dank für Deine Nachricht. Wenn der in der 1. Tabelle vorhandene Makro-Button bereits "von Zellposition und Größe abhängig" formatiert ist, dann brauchst Du nur den mittleren Teil meines Makros (kopieren des Makro-Buttons)zu verwenden. Die Lösung von Beverly finde ich auch gut, sie müsste aber noch auf die betreffenden Arbeitsblätter ausgedehnt werden. Falls noch weitere Hilfe benötigt wird, einfach nochmal melden.
Mit freundlichem Gruß
Peter Kloßek
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge