複数のワークシートを選択してPDFにエクスポートするVBAスクリプトを作成しようとしています。私はまだコーディングするのはかなり新しいですが、私はPDF部分のコーディング(1つのタブで作業するようにしています)でうまくいきます。私が問題を抱えているのは、複数のワークシートを選択することです。私はワークシート名を見て、それを選択するかどうかを決定する動的配列を使用しています。私がワークシートを選択する部分に着くまで、すべてのことがうまく動作します。私はランタイムエラー '9'を取得します:下付き文字が範囲外です。私はいくつかのDebug.Printsをコードに入れて、配列にワークシート名が含まれていることを確認してください。以下は私のコードです。複数のExcelワークシートをVBAを使用して1つのpdfに印刷し、ランタイムエラー '9'を取得する:タブを選択すると範囲外の添字
Sub pdf_Print()
Dim c As Integer
Dim d As Integer
Dim size As Integer
Dim i As Integer
Dim s As Integer
Dim wba As Workbook
Dim wa As Worksheet
Dim b As Integer
Set wba = ActiveWorkbook
'Debug prints active workbook name for Debugging
Debug.Print wba.Name
'Gets number of tabs to print
size = GetPrintTabs(wba)
'Setup Array for tabs to print
Dim Sheetstoprint() As Variant
ReDim Sheetstoprint(0 To size)
'Debug print Array size
Debug.Print size
'Stores tab names in Array
For Each wa In ActiveWorkbook.Worksheets
If (wa.Name Like "*segment*" And wa.Visible = True) Then
Sheetstoprint(i) = wa.Name
i = i + 1
Debug.Print Sheetstoprint(i)
End If
Next wa
'Debug to ensure show which tabs are in Array
For b = LBound(Sheetstoprint) To UBound(Sheetstoprint)
Debug.Print Sheetstoprint(b)
Next
'Select sheets in Array
ActiveWorkbook.Worksheets(Sheetstoprint).Select
End Sub
Public Function GetPrintTabs(awb As Workbook) As Integer
Dim wsa As Worksheet
Dim i As Integer
For Each wsa In awb.Worksheets
If (wsa.Name Like "*segment*" And wsa.Visible = True) Then
i = i + 1
End If
Next wsa
GetPrintTabs = i
Debug.Print "size =" & i
End Function
半野生の推測:ReDim Sheetstoprint(0 Toサイズ)をReDim Sheetstoprint(1 To size)に変更してください –
あなたは素晴らしいです。それはうまくいった。私はこれに2日を費やし、それを完全に逃した。ありがとうございました。 –
私は自分の努力の中で頻繁に現れるので、私はキャッチするのに慣れている間違いです。 ;-)それは喜んで助けた。 –