Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
904to908
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
904to908
904to908
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

objekte

objekte
14.09.2007 10:27:00
schnierle
hallo,
ich möchte in Spalte A in beliebig vielen Zeilen eine variable x reinschreiben können und dann bei click auf einen button das zu der zeile zugehörige objekt aus tabelle 3 x mal einfügen lassen aber so, dass man jedes objekt sieht, also dass nichts übereinander liegt. hab da mal was gebastelt aber weiss nicht mehr weiter. danke schon mal für die hilfe.
https://www.herber.de/bbs/user/46023.zip

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: objekte
16.09.2007 21:37:00
fcs
Hallo schnierle,
ich hab mal weiter gebastelt. Ich hatte unter Excel97 kleine Probleme mit deiner Datei. Es klappte erst nachdem ich deine Bätter in eine andere Mappe kopiert hatte. Ich hoffe dass es klappt, wenn du den Code unten einfach in deine Datei einbaust.
Damit das Ganze etwas leichter lesbar wird, solltest du den Gruppen in Tabelle3 konkrete Namen geben, statt den auto,atisch von Excel vergebenen Namen zu verwenden. Im Code sind die entsprechenden Codezeilen, die du ggf. verwenden könntest, als Kommentare enthalten
Beim Einfügen der Bilder in Tabelle1 wird vom Makro in Spalte3 hinter dem Typ eine Zählnummer eingetragen. Diese fortlaufende Zählnummer wird für den Namen (Typbeschreibung & _ & Nr) des eingefügten Bilds verwendet.
Servus
Franz

Private Sub cmdEinfügen_Click()
Dim zeile As Long, anzahl As Integer, n As Integer
Dim wksBilder As Worksheet, wksZiel As Worksheet
Dim BildNeu As Shape, Bild As Shape, Zelle As Range
Dim BilderproZeile%, BildAbstand%, BildSpalte1%, BildZeile1%, BildSpalte%, BildZeile%
Set wksZiel = ActiveSheet
Set wksBilder = Worksheets("Tabelle3")
BilderproZeile = 8
BildAbstand = 4 'ZeilenAbstand zwischen Bildern
BildZeile1 = 3 '1. Zeile in die ein Bild eingefügt werden soll
BildSpalte1 = 4 '1. Spalte in die ein Bild eingefügt werden soll
BildZeile = BildZeile1
BildSpalte = BildSpalte1
wksZiel.Activate
On Error GoTo Fehler
With wksZiel
For zeile = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
anzahl = .Cells(zeile, 1).Value
If anzahl > 0 Then
'       Set Bild = wksBilder.Shapes("Group_" & .Cells(zeile, 2))
'GoTo weiter01
With wksBilder
Select Case zeile
Case 2
'              Set Bild = .Shapes("Group_Motor")
Set Bild = .Shapes("Group 19")
Case 3
'              Set Bild = .Shapes("Group_SMC")
Set Bild = .Shapes("Group 47")
Case 4
'              Set Bild = .Shapes("Group_CU310")
Set Bild = .Shapes("Group 56")
Case 5
'              Set Bild = .Shapes("Group_TM")
Set Bild = .Shapes("Group 14")
Case Else
MsgBox "Für Zeile fehlt noch eine Case-Anweisung" 'Testzeile
End Select
End With
weiter01:
If Not Bild Is Nothing Then
Bild.Copy
For n = 1 To anzahl
Set Zelle = .Cells(BildZeile, BildSpalte) 'Einfügezelle für Bild
Zelle.Select
ActiveSheet.Paste
'Bild umbenennen und positionieren
Set BildNeu = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
With BildNeu
.Name = wksZiel.Cells(zeile, 2).Value & "_" _
& Format(wksZiel.Cells(zeile, 3) + 1, "00")
.Top = Zelle.Top
.Left = Zelle.Left
End With
'Zählnummer für Bild erhöhen
wksZiel.Cells(zeile, 3) = wksZiel.Cells(zeile, 3) + 1
'Position fürs nächste Bild
BildSpalte = BildSpalte + 1
If BildSpalte = BildSpalte1 + BilderproZeile Then
BildSpalte = BildSpalte1
BildZeile = BildZeile + BildAbstand
End If
Next n
Set Bild = Nothing
End If
End If
Next zeile
Zelle.Select
End With
GoTo Beenden
Fehler:
MsgBox "Fehler Nr: " & Err.Number & " ist aufgetreten" & vbLf & vbLf & Err.Description _
& "Fehelr vemutlich beim Einfügen von Bild für " & ActiveSheet.Cells(zeile, 2) & " in  _
Zeile " & zeile
Beenden:
Set wksZiel = Nothing
Set wksBilder = Nothing
Set Zelle = Nothing
Set Bild = Nothing
Set BildNeu = Nothing
End Sub


Anzeige
AW: objekte
17.09.2007 09:58:00
schnierle
hallo franz,
danke erstmal für deine mühen, dein code sieht echt gut aus. leider funktioniert er noch nicht ganz. es kommt die von dir eingebaute fehlermeldung.
ich denke, es liegt an diesen beiden zeilen, kannst du mir kurz sagen, was die beiden genau bewirken?
For zeile = 144 To .Cells(.Rows.Count, 2).End(xlUp).Row
anzahl = .Cells(zeile, 2).Value
danke

AW: objekte
17.09.2007 10:45:40
schnierle
hallo franz,
habs jetzt raus was du in deinem code machst. vielen dank für deine hilfe, hat mir wirklich sehr weitergeholfen!!!

AW: objekte
17.09.2007 10:56:18
fcs
Hallo schnierle,

For zeile = 144 To .Cells(.Rows.Count, 2).End(xlUp).Row
anzahl = .Cells(zeile, 2).Value
Das ist ja etwas anders als in meinem Vorschlag, basierend auf deiner Beispieltabelle.
With wksZiel
For zeile = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
anzahl = .Cells(zeile, 1).Value


Diese For-Next-Schleife arbeitet in der Spalte mit den Typ-EInträgen die Typen ab.
144 ist die 1. Zeile in der ein Typ steht.
Der ausdruck ".Cells(.Rows.Count, 2).End(xlUp).Row"
berechnet in der Spalte 2 (B) der als "wksZiel" definierten Tabelle die unterste/letzte Zeile in der die Zelle nicht leer ist. Wenn du alle Typen in der Tabelle eingegeben hast und sich nichts mehr ändert, dann kannst du natürlich auch die Zeile fest im Code eintragen.
anzahl = .Cells(zeile, 1).Value
"anzahl" ist die Variable in der die Anzahl zu erstellender Kopien gespeichert wird. Der Wert wird in der der als "wksZiel" definierten Tabelle aus der Zelle in der Reihe "zeile", Spalte 1 (A), ausgelesen.
Dass der Fehler scheinbar in dieser Zeile ist kann daran liegen, dass 144 größer ist als die Zeilennummer der letzten Zelle mit Inhalt in Spalte 2. In diesem Fall wird die For-Next-Schleife direkt beendet.
Du muss die Spaltennummern und die Startzeile der For-Next-Schleife ggf. an den jetzt scheinbar etwas anderen Aufbau der Tabelle anpassen.
Aufpassen:
In den folgenden Codezeilen werden Werte aus Spalte 3 (C) ausgelesen bzw. hineingeschrieben. _ Falls in Spalte C schon Werte stehen, dann gib statt 3 eine andere normalerweise leere Spalte im Code an.


With BildNeu
.Name = wksZiel.Cells(zeile, 2).Value & "_" _
& Format(wksZiel.Cells(zeile, 3) + 1, "00")
.Top = Zelle.Top
.Left = Zelle.Left
End With
'Zählnummer für Bild erhöhen
wksZiel.Cells(zeile, 3) = wksZiel.Cells(zeile, 3) + 1


Gruß
Franz

Anzeige
AW: objekte
17.09.2007 13:04:00
schnierle
hallo franz,
leider bin ichs nochmal. dein programm ist schon gut, aber noch nicht ganz fehlerfrei. manchmal treten fehler auf, die bei erneutem starten von excel wieder weg sind und dafür dann an anderer stelle auftreten. hab woran kann denn das liegen? z.b. sagt er mir einmal, dass er das objekt group_kupplung nicht finden kann und wenn ichs dann erneut versuche und zwar nur dieses objekt einfüge, also kein anderes mehr, dann klappt es. hier mal der link für meine anwendung
https://www.herber.de/bbs/user/46101.zip

Anzeige
AW: objekte
17.09.2007 15:44:08
fcs
Hallo schnierle,
das was als Code in deiner Datei steht ist nicht mein sondern dein Programm.
Warum verwendest du nicht die von mir erstellte Fassung mit ein paar notwendigen Anpassungen?
Das Makro hat bei mir einwandfrei funktioniert und die verschiedenen Prüfroutinen und der Fehlercheck hatten schon ihren Sinn. Ich mache mir nicht ein zweites mal die Mühe mich durch den von dir mit den vielen Select-Anweiungen gespickten Code zu wühlen. Select-Anweisung machen Code unübersichtlich und die Ausführung langsam.
Da das Makro sofort mit der Meldung "Projekt oder Bibliothek" nicht gefunden bei der Variablen "n" inder For...Next-Schleife reagiert, kann ich auch nicht testen, was da los ist. Bei dir scheint in Excel irgend etwas besonderes installiert zu sein, was es bei mir nicht gibt.
Gruß
Franz

Anzeige
AW: objekte
17.09.2007 16:32:00
schnierle
hallo
sorry, hab dir den falschen link geschickt. das war wirklich mein programm. ich hab deines angepasst und jetzt bekomme ich die fehlermeldung, dass ich nicht aus dem entwurfsmodus wechseln kann, da steuerelement checkbox4 nicht erstellt werden kann.
https://www.herber.de/bbs/user/46106.zip

AW: objekte
18.09.2007 07:13:00
fcs
Hallo schnierle,
das ist eine sehr ominöse Sache mit der Checkbox. Die Meldung kommt bei mir auch, kann ich aber nicht nachvollziehen.
Da ich auch diesmal, wie schon gestern, bei mir in Excel97 und 2003 die Meldung über fehlende Pojekte/VBA-Componenten bekam konnte ich an deiner Originaldatei nichts testen.
Nachdem ich das Blatt Tabelle1 und Tabelle3 gruppiert und in eine leere Mappe kopiert hatte waren beide Probleme verschwunden. Nach dem Kopieren musste ich nur den Namen des Buttons im Blatt Tabelle1 wieder in "cmdEinfügen" ändern, da Excel die Namen der Objekte beim Kopiern automatisch neu durchnummeriert.
Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige