Anzeige
Archiv - Navigation
792to796
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
792to796
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Autom. Zeilenumbruch nach best. Kriterien

Autom. Zeilenumbruch nach best. Kriterien
16.08.2006 12:21:08
Erwin
Hallo Excelfreunde,
ich habe für meinen Sportverein eine kleine Datenbank erstellt und möchte nun von den verschiedenen Gruppen auf Knopfdruck eine Bildergalerie erstellen lassen, soweit Fotos in der DB vorhanden sind. Habe mir mithilfe dieses Forums ein Programm zusammengebastelt, das auch funktioniert:
"

Private Sub bilddateien_lesen()
dim ordner as string
dim suche as string
dim spalte, zeile as integer
dim suchname, suchvorname, suchparameter as string
dim gebdat as string
dim bild
ordner = "c:\verein\vereinsdatei\bilder\"
spalte = 1
zeile = 2
'Suchparameter abfragen und in Tabelle Spielerdaten in der Spalte Gruppe suchen und vergleichen, ob in Spalte Bild "ja" eingegeben ist. Dann Namen und Vornamen in gleicher Zeile erfragen
suche= InputBox("Bitte Gruppe eingeben", "Suche für Bilddatei", vbOkCancel)
For Each bereich In Sheets("Spielerdaten").Range ("K:K")
If bereich = suche And bereich.Offset(0, -2) = "ja" Then
suchname = bereich.Offset (0, -10)
suchvorname = bereich.Offset (0, -9)
gebdat = bereich.Offset (0, -8)
suchparameter = suchname & "_" & suchvorname
Sheets("Bilddatei").Cells(zeile, spalte).Activate
'Festsetzung der Zeilenhöhe
ActiveSheet.Rows(zeile).RowHeight = 150
'Bild aus dem Verzeichnis "bilder" kopieren und einfügen
bild = ordner & suchparameter & ".jpg"
If Dir(bild) <> "" Then
ActiveSheet.Pictures.Insert(bild).Select
'Gefundenes Bild einfügen und Höhe auf Zeilenhöhe setzen
With Selection.ShapeRange
.LockAspectRatio = msoTrue
.Height = 150
End With
'Namen und Geb.-Datum unter Bild setzen
ActiveCell.Offset(1, 0).Value = suchname & " " & suchvorname & " " & gebdat
ActiveCell.Offset(-1, 2).Select
spalte = spalte + 3
End If
End If
Next
End Sub
"
So funktioniert es recht gut, aber die Bilder werden alle auf einer Zeile dargestellt und somit ist es z.B. für das Drucken schlecht.
Wie kann ich Excel noch sagen, dass er immer nach vier Bildern einen Zeilenumbruch machen soll. Ich krieg dieses "letzte Stück" Arbeit einfach nicht hin.
Und wie kann ich dann alle Bilder auf einmal wieder löschen. Das ist mir auch noch nicht gelungen.
Vielleicht hat jemand die Lösung, bin für jede Idee dankbar, aber meine Programmierkenntnisse sind noch sehr bescheiden!
Vielen Dank schon mal im voraus
Erwin

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autom. Zeilenumbruch nach best. Kriterien
16.08.2006 13:57:20
Dan
Hallo Erwin. Hier ein Beispiel, wie man ein Bild 20-Mal in den Aktiven Blatt zugeben kann, so dass nur ein bestimmtes Anzahl an Bilder in der Zeile ist. Es ist nur ein Beispil, aber hoffentlich kannst Du es nutzen um Dein Werk zu Ende zu bringen :-). Gruss
Wichtig dabei ist, dass die Variable 'alleBilder' muss in dem klassen-Module von ThisWorkbook deklariert werden!
Dan, cz.
Option Explicit
Private Const BILD_HOEHE As Long = 150
Private Const BILD_WEITE As Long = 100
Private Const BILD_STARTING_LEFT_POSITION As Long = 50
Private Const BILD_STARTING_TOP_POSITION As Long = 50
Private Const BILDER_PRO_ZEILE As Long = 4

Private Sub BildEinfuegen()
Dim einBild As picture
Dim einBildPfad As String
Dim bilderZeahler As Long
Dim bilderProZeile As Long
Dim topPosition As Long
Dim leftPosition As Long
Set ThisWorkbook.alleBilder = New Collection
einBildPfad = "D:\TEMP\Pics\zakynthos_08.JPG"
leftPosition = BILD_STARTING_LEFT_POSITION
topPosition = BILD_STARTING_TOP_POSITION
bilderProZeile = 0
For bilderZeahler = 1 To 20
Set einBild = ActiveSheet.Pictures.Insert(einBildPfad)
bilderProZeile = bilderProZeile + 1
'Gefundenes Bild einfügen und Höhe auf Zeilenhöhe setzen
With einBild.ShapeRange
.LockAspectRatio = msoTrue
.Height = BILD_HOEHE
.Width = BILD_WEITE
.Left = leftPosition
.Top = topPosition
End With
ThisWorkbook.alleBilder.Add einBild
If (bilderProZeile < BILDER_PRO_ZEILE) Then
leftPosition = leftPosition + BILD_WEITE
Else
leftPosition = BILD_STARTING_LEFT_POSITION
topPosition = einBild.Top + einBild.Height
bilderProZeile = 0
End If
Next bilderZeahler
End Sub


Private Sub AlleBilderLoeschen()
If (Not ThisWorkbook.alleBilder Is Nothing) Then
If (ThisWorkbook.alleBilder.Count > 0) Then
Dim einBild As picture
For Each einBild In ThisWorkbook.alleBilder
einBild.Delete
Next einBild
Set ThisWorkbook.alleBilder = New Collection
Else
MsgBox "Es gibt keine bilder zum loeschen.", vbInformation, "Info"
End If
Else
MsgBox "Loeschen der Bilder failed.", vbCritical, "Error"
End If
End Sub

Anzeige
AW: Autom. Zeilenumbruch nach best. Kriterien
16.08.2006 14:04:49
Dan
... die Variable alleBilder sollte man z.B so deklarieren :
' Klassen-Module vom ThisWorkbook
Option Explicit
Public alleBilder As VBA.Collection
AW: Danke!!
16.08.2006 15:49:02
Erwin
Hallo Dan,
vielen Dank für deine rasche Antwort, du hast mir sehr geholfen, ich denke, jetzt bring ich das werk zu ende!!
Danke nochmals und einen schönen Tag noch
Erwin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige