Option Explicit
Dim mySheets As Dictionary
Private Sub SaveAndOpen_Click()
'set up variables
Dim i As Long
Dim j As Long
Dim myArr() As Long
Dim filename As String
ReDim myArr(1 To Sheets.Count)
j = 1
'make bounds
Dim from As Long
Dim tonum As Long
'numbers inputted from a userform
from = FromBox.Value
tonum = ToBox.Value
filename = Cells(3, 4) & "." & mySheets.Item(from) & "-" & mySheets.Item(tonum)
For i = 1 To mySheets.Count
If i >= FromBox.Value And i <= ToBox.Value Then
myArr(j) = i
j = j + 1
End If
Next i
Dim filepath As String
For i = 1 To UBound(myArr)
filepath = filepath & myArr(i)
Next i
filepath = "c:\file\path\here\"
ThisWorkbook.Sheets(myArr).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:= _
filepath & filename, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
ThisWorkbook.Sheets(1).Select
End Sub
Private Sub UserForm_Initialize()
Copies.Value = 1
FromBox.Value = 1
Dim i As Long
Set mySheets = New Dictionary
For i = 1 To ActiveWorkbook.Sheets.Count
mySheets.Add i, ActiveWorkbook.Sheets(i).Name
SheetBox.Value = SheetBox.Value & i & " - " & ActiveWorkbook.Sheets(i).Name & vbCrLf
Next i
ToBox.Value = i - 1
End Sub
Dieses Unterprogramm Informationen aus einer Userform erfolgt, die Benutzervariablen in FromBox und toBox eingegeben hat; Das sind beide Longs. Ziel ist es, beispielsweise die Blätter 2 - 10 zu speichern. Die Parameter werden vom Benutzer festgelegt.speichert eine Reihe von Excel-Tabellen als PDF
Der folgende Code, mit dem unteren Abschnitt unkommentiert, funktioniert, wenn der Benutzer alle Arbeitsblätter angibt (IE gibt 10 Arbeitsblätter, und der Benutzer gibt Bereich 1-10 an). Aber wenn der Benutzer 2-10 angibt, schlägt es fehl.
Das Problem, denke ich, ist, dass ich versuche, 10 Elemente mit einem Array mit 9 Elementen zu wählen.
'ReDim myArr (1 bis ToBox.Value - FromBox.Value - 1)' wird es beheben, denke ich. Das ist Pseudo-Code, mag nicht genau funktionieren, aber ich denke, Sie verstehen, was ich meine. –
Was ist 'mySheets' Ich sehe keine Variable gesetzt - füge' Option Explicit' über deinem Code hinzu und führe es aus. – 0m3r
siehe aktualisierten Code – bdpolinsky