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

Array dynamisch bilden

Array dynamisch bilden
Franz
Hallo,
Hier unter https://www.herber.de/forum/archiv/1268to1272/t1269711.htm ist eine wundersame Lösung für Pfd Fans von Franz fcs.
Möchte ein Call SaveAsPDF(varSheets:=Array("Tabelle1", "Tabelle2", "Tabelle3")) dynamisch gestalten. Ich benötige im Array eine beliebige Reihenfolge änderbar von z.B. Tabelle3 bis Tabelle15. Wer kann mir dabei weiter helfen? Es kann auch Array(4,5,6) gebildet werden also ohne Bezeichner.
Grüße
Franz D.
AW: Array dynamisch bilden
10.07.2012 22:36:59
Franc
Ka ob ich helfen kann aber wo bekommt das Makro die Information welche Tabellen exportiert werden sollen?
Steht das in einer Zelle? Wenn ja wie steht es da bzw. wie willst du wählen welche Blätter benommen werden sollen. (bitte möglichst genau beschreiben)
AW: Array dynamisch bilden
10.07.2012 22:42:26
Franz
Hallo Franc,
Die Namen werden dynamisch in Tabelle1 geparkt. es handelt sich um eine Diashow.
Sub Choise_Pictures()
'Source:http://www.office-loesung.de
Dim dlgOpen     As FileDialog
Set dlgOpen = Application.FileDialog(msoFileDialogOpen)
With dlgOpen
.AllowMultiSelect = True 'vorher false
.Filters.Clear
.Filters.Add "Bilddateien nur", "*.jpg", 1 ' "*.png", "*.bmp", "*.gif", "*.tif", "*. _
tiff", 1
.Show
If .SelectedItems.Count = 0 Then
MsgBox ("Keine Bilddatei ausgewählt!")
End
End If
UpDate_PictureList
Cells(1, 1).Formula = "Ort Bildauswahl"
For iPicCount = 1 To .SelectedItems.Count
Cells(iPicCount + 1, 1).Formula = .SelectedItems(iPicCount)
Next iPicCount
End With
End Sub

Franz D.
Anzeige
AW: Array dynamisch bilden
10.07.2012 23:01:24
Franc
ähm .. was hat das mit den Tabellen zu tun?
Das Makro was du gepostet hast schreibt den Pfad + Dateinamen der Bilder die du ausgewählt hast untereinander in Spalte A ...
Was "UpDate_PictureList" macht kann ich nicht sehen, weil du es nicht mitgepostet hast.
Falls du nicht das falsche Makro gepsotet hast.
Was brauchst du von der Liste. Einfach nur alle Einträge samt Pfad oder nur den Dateinamen des Bildes?
AW: Array dynamisch bilden
10.07.2012 23:14:17
Franz
Frank,
Frage: "alle Einträge samt Pfad oder nur den Dateinamen des Bildes?". AW: weder, noch
Ich weiss nur nicht wie man den Teil nach "Array(" dynamisch verkettet. Im Regelfall soll die Tabelle1 (die Liste der Bilder mit Pfad-Angabe) nicht im Sammel-Pdf File erscheinen.
Wie macht man aus
Call SaveAsPDF(varSheets:=Array("Tabelle1", "Tabelle2", "Tabelle3"))
so etwas wie
Call SaveAsPDF(varSheets:=Array(LISTEBLÄTTERAUSWAHL))
LISTEBLÄTTERAUSWAHL soll das Array sein das ich frei gestalten möchte oder zumindest ohne der 1.Tabelle.
Gruß
Franz D.
Anzeige
AW: Array dynamisch bilden
11.07.2012 02:16:06
Franc
puhh ... ist jetzt länger geworden als geplant aber k ^^
Ich bin mir ziemlich sicher das man es auch einfacher lösen kann aber ich bin auch nur VBA Laie bis Anfänger
Das Makro ist nur so lang, weil alle Fehlerquellen abgedeckt sein sollten. Das ganze Makro könnte auch nur 2 Zeilen lang sein aber da geht Komfort und Fehlerprüfung verloren und grad ein Fehler kann zu unerwünschten Ergebnissen führen.
Also - es kommt eine Eingabebox wo bereits alle Tabellennamen mit Leerzeichen getrennt drinstehen. Du kannst die nichterwünschten Blätter mit doppelklick markieren und löschen.
In der Prüfroutine danach werden doppelte Leerzeichen sowie leerzeichen am Anfang und Ende entfernt.
Danach wird das ganze anhand der Leerzeichen die zwischen den Tabellennamen stehen getrennt und ist automatisch ein Array.
Als letztes wird die Eingabe noch mal überprüft indem die einzelnen Tabellennamen im Array mit den Blattnamen verglichen werden. Sollte ein Name nicht vorkommen, wird dieser in einer msgBox angezeigt und entweder gehts wieder zur Eingabe oder das Makro kann da auch abgebrochen werden.
Falls die Eingabe der Tabellennamen anders sein soll einfach schreiben.
Sub pruefen()
Dim iBlatt As Integer, strVorgabe As String
Dim strBlätter As String, arBlätterAuswahl As Variant
Dim iBlatt2 As Integer, blFehler As Boolean
Blattauswahl:
strVorgabe = ""
For iBlatt = 1 To Sheets.Count
strVorgabe = strVorgabe & Sheets(iBlatt).Name & " "
Next
strBlätter = InputBox("Blattnummern eingeben", "Auswahl", strVorgabe)
If strBlätter = "" Then Exit Sub
Do
strBlätter = Replace(strBlätter, "  ", " ")
Loop While InStr(strBlätter, "  ") > 0
If Right(strBlätter, 1) = " " Then strBlätter = Left(strBlätter, Len(strBlätter) - 1)
If Left(strBlätter, 1) = " " Then strBlätter = Right(strBlätter, Len(strBlätter) - 1)
arBlätterAuswahl = Split(strBlätter, " ")
For iBlatt = 0 To UBound(arBlätterAuswahl)
blFehler = True
For iBlatt2 = 1 To Sheets.Count
If Sheets(iBlatt2).Name = arBlätterAuswahl(iBlatt) Then
blFehler = False
Exit For
End If
Next
If blFehler = True Then
MsgBox "Blatt """ & arBlätterAuswahl(iBlatt) & """ existiert nicht."
GoTo Blattauswahl
'oder
'exit sub
End If
Next
Call SaveAsPDF(varSheets:=Array(arBlätterAuswahl))
End Sub

Anzeige
AW: Array dynamisch bilden
11.07.2012 02:27:11
Franc
Beim erstellen vom Makro nicht mehr dran gedacht. Wenn Tabelle1 quasi nie dabei sein soll und das auch das erste Blatt ist, dann kannst du am Anfang bei der Vorgabe "For iBlatt = 2 To Sheets.Count" nehmen.
Dann ist der Vorschlag immer ohne Tabelle1 und du kannst direkt auf "ok" klicken und musst es nicht rauslöschen.
AW: Array dynamisch bilden
11.07.2012 03:53:34
Franc
Es war anscheinend echt schon zu spät beim schreiben vom Makro. ^^
Grad noch beim schließen von Excel gesehen.
Nimmer mal als letzte Zeile
Call SaveAsPDF(varSheets:=arBlätterAuswahl)
arBlätterAuswahl ist ja schon ein Array. Das gibt sicher nur einen Fehler, wenn wir davor array lassen. ^^
Anzeige
AW: Array dynamisch bilden
11.07.2012 19:19:07
Franz
Herzlichen Dank Franc für deine nächtlichen Bemühungen.
Da wir beide keine Array-Spezialisten sind, geht es wohl nicht wie gewünscht. Habe soeben just for fun die Tabelle1 per Makro auf „visible=false“ gesetzt und siehe da, die Diashow startet sauber ohne Bilderliste. Lehre? Ich starte demnächst das Studium von Arrays (aber nicht bis tief in die Nacht).
Nochmals Danke schön Franc, man sieht sich (virtuell)!
Franz D.
AW: Array dynamisch bilden
12.07.2012 17:03:56
Franc
naja ... kommt immer drauf an was jetzt nicht funktioniert.
Soweit ich das verstanden hatte wolltest du die Tabellennamen in einem array haben, was du damit hast.
Gibt es ein Fehler?
Anzeige
AW: Array dynamisch bilden
12.07.2012 22:54:05
Franz
Guten Abend Franc,
nach der Inputbox passiert bei mir gar nichts mehr (Funkstille, auch keine Fehlermeldung!). Macht nichts! Demnächst werde ich mich intensiv mit der Power von Arrays befassen.
Gute Zeit!
Franz D.
AW: Array dynamisch bilden
13.07.2012 19:41:08
Franc
Dann schreib ein stop nach der inputbox oder vor der call anweisung. Dann hält es dort an und dann kannst du mit f8 per einzelschritt durchgehen und du siehst wo es hängt bzw wo es sich beendet.
Schalt auch im VBA Editor über Ansicht - das Lokalfenster ein - da siehst du welche Werte die Variablen/Arrays haben. Manchmal sind nur sehr einfache Fehler die zum Abbruch führen.
Anzeige
AW: Array dynamisch bilden gelöst...
16.07.2012 20:28:38
Franz
Hallo,
... falls interessiert:
Sub Pdf_Preview_for_all_Pictures()
Dim arrSH() As Variant
Dim iSheetsCount As Integer
Dim i As Integer
On Error GoTo ERRORHANDLER
iSheetsCount = Worksheets.Count - 1 'ohne letztere Tabelle (Bilder-Verzeichnis)
ReDim arrSH(iSheetsCount)
'Option Base 1 wurde am Anfang des Moduls gesetzt für ein besseres Verständnis da
'Arrays standardmässig mit 0 beginnen
For i = 1 To iSheetsCount
arrSH(i) = i
Next
Sheets(arrSH).Select    'alle Tabellen (ohne letztere) markieren.
'Anstelle der Tabellen-Namen wrd hier Tabellenindex übernommen
ActiveSheet.ExportAsFixedFormat Type:=0, Filename:="TEMP", OpenAfterPublish:=True
Exit Sub
ERRORHANDLER:
'Meldung hier abgeschaltet für die Besitzer von Versionen vor 2007
'MsgBox ("Sorry! " & vbLf & "Pdf-Files werden standarmässig ab Excel 2007 (Version 14) ermö _
glicht." & vbLf & _
"Sie nutzen aber eine version " & Left(Application.Version, 2) & ".")
End Sub

Tschüss
Franz D.
Anzeige
AW: Array dynamisch bilden gelöst...
16.07.2012 20:28:55
Franz
Hallo,
... falls interessiert:
Sub Pdf_Preview_for_all_Pictures()
Dim arrSH() As Variant
Dim iSheetsCount As Integer
Dim i As Integer
On Error GoTo ERRORHANDLER
iSheetsCount = Worksheets.Count - 1 'ohne letztere Tabelle (Bilder-Verzeichnis)
ReDim arrSH(iSheetsCount)
'Option Base 1 wurde am Anfang des Moduls gesetzt für ein besseres Verständnis da
'Arrays standardmässig mit 0 beginnen
For i = 1 To iSheetsCount
arrSH(i) = i
Next
Sheets(arrSH).Select    'alle Tabellen (ohne letztere) markieren.
'Anstelle der Tabellen-Namen wrd hier Tabellenindex übernommen
ActiveSheet.ExportAsFixedFormat Type:=0, Filename:="TEMP", OpenAfterPublish:=True
Exit Sub
ERRORHANDLER:
'Meldung hier abgeschaltet für die Besitzer von Versionen vor 2007
'MsgBox ("Sorry! " & vbLf & "Pdf-Files werden standarmässig ab Excel 2007 (Version 14) ermö _
glicht." & vbLf & _
"Sie nutzen aber eine version " & Left(Application.Version, 2) & ".")
End Sub

Tschüss
Franz D.
Anzeige
AW: Array dynamisch bilden gelöst...
16.07.2012 20:28:59
Franz
Hallo,
... falls interessiert:
Sub Pdf_Preview_for_all_Pictures()
Dim arrSH() As Variant
Dim iSheetsCount As Integer
Dim i As Integer
On Error GoTo ERRORHANDLER
iSheetsCount = Worksheets.Count - 1 'ohne letztere Tabelle (Bilder-Verzeichnis)
ReDim arrSH(iSheetsCount)
'Option Base 1 wurde am Anfang des Moduls gesetzt für ein besseres Verständnis da
'Arrays standardmässig mit 0 beginnen
For i = 1 To iSheetsCount
arrSH(i) = i
Next
Sheets(arrSH).Select    'alle Tabellen (ohne letztere) markieren.
'Anstelle der Tabellen-Namen wrd hier Tabellenindex übernommen
ActiveSheet.ExportAsFixedFormat Type:=0, Filename:="TEMP", OpenAfterPublish:=True
Exit Sub
ERRORHANDLER:
'Meldung hier abgeschaltet für die Besitzer von Versionen vor 2007
'MsgBox ("Sorry! " & vbLf & "Pdf-Files werden standarmässig ab Excel 2007 (Version 14) ermö _
glicht." & vbLf & _
"Sie nutzen aber eine version " & Left(Application.Version, 2) & ".")
End Sub

Tschüss
Franz D.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige