28. März 2024, 18:51
VB-fun.de - Beitragsübersicht zum VB-/VBA-Forum-Archiv 0413
  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 ]
 Antworten
E03: Zeile mit Combobox kopieren - nemesis 09. Oktober 2008 um 07:09:12
Re: Zeile mit Combobox kopieren - r.mueller@sz-online.de 10. Oktober 2008 um 06:35:53
Re: Zeile mit Combobox kopieren - nemesis 10. Oktober 2008 um 07:10:42

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB-/VBA-Forum | DirectX | DirectX-Forum | VB.Net | VB.Net-Forum | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum