E03: Zeile mit Combobox kopieren |
Von |
nemesis |
Am |
09. Oktober 2008 um 07:09:12 |
Frage |
Hallo zusammen!
Wer kann mir helfen?
Habe in Excel eine Zeile (erste Zeile) mit einer Combobox (Combobox direkt in die Zelle eingefügt). Um diese kopieren und in eine andere Zeile einfügen zu können, muss ich den Entwurfsmodus aktivieren. --> Möchte das ganze per VBA lösen.
Mein Ansatz: 'Aktivierung des Entwurfsmoduses Application.CommandBars.FindControl(ID:=1605).Execute
'Erste Zeile markierung, kopieren und in die zweite Zeile einfügen Rows("1:1").Copy Rows("2:2").Select ActiveSheet.Paste
'Deaktivierung des Entwurfsmoduses Application.CommandBars.FindControl(ID:=1605).Reset
--> Wo liegt mein Fehler?
Danke im Voraus!
Gruß, nemesis |
|
Antwort: |
Von |
r.mueller@sz-online.de |
eMail |
|
Am |
10. Oktober 2008 um 06:35:53 |
Antwort |
Hallo Tja so ist dies gar nicht möglich den im Entwurfsmodus leuft keinerlei VBA-Code. Nach deiner Zeile in der du ihn einschaltest wird alles sofort beendet.
Deine Combo wird als Shape in das Sheet eingefügt und als genau dieses kannst du es kopieren: vorher must du den Namen des Shape ermitteln:Sub NameDesShape() 'zum einmaligen Ermitteln des Namens 'Shape (zB: Graphic) markieren und mit: Macro - Macros..- ausführen "NameDesShape" starten. MsgBox Selection.Name, , "Name inclusive Leerzeichen genau notieren!" End Sub Sub ShapeVonEinemSheetInsAndereKopieren() 'Alle Bilder weden In ein Sheet als Shape eingefügt Dim wksQuelle As Worksheet Dim wksZiel As Worksheet Dim shpQ As Shape Dim shpZ As Shape Dim strNameDesShape As String strNameDesShape = "Picture 2" 'Beispiel anpassen Set wksQuelle = Worksheets("Tabelle1") Set wksZiel = Worksheets("Tabelle3") 'das kann auch die gleiche Tabelle sein 'wksQuelle = Workbooks("MeineMappe.xls").Worksheets("Tabelle2") 'Beispiel anpassen 'wksZiel = Workbooks("AndereMappe.xls").Worksheets("Tabelle3") 'Beispiel anpassen Set shpQ = wksQuelle.Shapes(strNameDesShape) 'kopieren wahlweise als Object shpQ.Copy 'oder als Graphic: 'shpQ.CopyPicture wksZiel.Paste Set shpZ = wksZiel.Shapes(wksZiel.Shapes.Count) 'jetzt kannst du dieses beliebig possitioniren 'zB.: In die 3.Zeile und 2. Spalte shpZ.Top = wksZiel.Rows(3).Top 'Beispiel nach Zeile 3 shpZ.Left = wksZiel.Columns(2).Left 'Beispiel nch Spalte B 'zB.: und Höhe anpassen z.B shpZ.Height = wksZiel.Rows(4).Top - wksZiel.Rows(3).Top 'und Breite z.B. verzerren shpZ.LockAspectRatio = False shpZ.Width = 400 'Beispiel oder genau so anpassen wie die Höhe 'wenn du später noch mal darauf zugreifen willst einen eindeutigen Namen vergeben shpZ.Name = "MeinBild" End Sub
ich kann dir statt der Combo in der Zelle aber etwas Besseres empfehlen, dies wid beim kopieren auch immer mitkopiert eine Validation List (Gültigkeit-Liste) So geht’s: Füge in ein Tabellenblatt (was du danach ggf. visible = false setzen kannst) In eine Spalte alle Werte die du zur Auswahl stellen willst ein Diese alle Markieren und mit --> Einfügen --> Name -->Definieren.. Einen neuen Namen vergeben zB: MeineAuswahl Jetzt gehst du in deine Sheet zu der Spalte in der du diese Werte zur Auswahl zur Verfügung stellen willst Und markierst diese Zelle, diesen Bereich oder gleich die ganze Spalte Unter --> Daten ---> Gültigkeit --> Einstellungen wählst du Zulassen: Liste Unter Quelle schreibst du: =MeineAuswahl Und schon steht dir in allen diesen Zellen eine Combobox zur verfügung Wahlweise kannst du jetzt noch durch setzen des Hakens bei "Leere Zellen ignorieren" andere Eingaben in der Zelle zulassen.
Willst du ggf. manuell der Liste weitere Werte hinzufügen dan ist folgendes zu empfehlen Versehe den mit dem Namen benannten Bereich mit einem Rahmen oder/und einer Hintergrundfarbe zum Hinzufügen eines neuen Wertes selectiere eine Zelle in diesem Bereich Menüleiste --> Einfügen --> Zellen... Anhaken: Zellen nach unten verschieben --> OK dahin deinen neuen Wert. Code der dies aktualisiert ist nicht nötig
Übrigens kann man damit auch einen ganzen Adressdatensatz einfügen Voraussetzung ist allerdings das die Adressentabelle(zB Tabelle4) einen eindeutigen Bestandteil wie zB eine Kundennummer enthält. die Combo wird nur in die Zelle(zBZ2S1) für jene Kundennummer eingefügt in alle anderen kommt eine SVERWEIS Formel zB: =SVERWEIS(Z2S1;Tabelle4!Z2S1:Z230S13;4;WAHR)
Gruß
|
|
[ VB-/VBA-Forum | Archiv 0413 | Archiv-Übersicht ] |
|