excelデータベースによる差込印刷について質問です。
新しい職場で使用されているデータベースがあるのですが、オートフィルタによる絞り込み後のデータのみ(可視セルのみ)の差込印刷ができなくて困っています。
データベースは「date.xls」ファイルに各データが格納され、「入力及び印刷.xls」ファイルのコマンドボタンにて入力・プリントアウトを行っています。
現状でも印刷ボタンはあるのですが、オートフィルタされたデータの一番上から一番下までのデータが全て印刷されてしまうようです(不可視セルも含めて)
以下に関係してそうなコードを記載します。
【印刷】
Private Sub CommandButton3_Click() '印刷
Dim Msg
Dim i As Long, k As Long, eflag As Long
UserForm1.Hide
If StartData = 0 Or SaisyuData = 0 Then Exit Sub
' エラーが発生したら、エラー メッセージを作成
On Error Resume Next ' エラーのトラップを留保
Fukusya (StartData)
ActiveWindow.SelectedSheets.PrintPreview
'commandpos
If MsgBox("選択" & RowCount & "件 だけ印刷 ", vbOKCancel) <> vbCancel Then
For i = StartData To SaisyuData
Fukusya (i)
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
ActiveWindow.View = xlNormalView
' エラーの発生をチェックした後、メッセージを表示
If Err.Number <> 0 Then
Msg = "エラー番号 " & Str(Err.Number) & Err.Source & " でエラーが発生" & Chr(13) & Err.Description
MsgBox Msg, , "エラー", Err.HelpFile, Err.HelpContext
End If
Next
'commandpos
End If
Fukusya (SaisyuData)
Calculate
End Sub
【印刷コード内の各単語に関するもの】
Private Function StartData()
Dim i As Long, k As Long, eflag As Long
Dim start As Long
k = Retu
start = 0
For i = 3 To k
If Workbooks("data.xls").Worksheets("data").Rows(i).Hidden = False Then
start = i
Exit For
End If
Next
StartData = start
End Function
Private Function SaisyuData()
Dim i As Long, k As Long, eflag As Long
Dim stp As Long
k = Retu
stp = 0
For i = k To 3 Step -1
If Workbooks("data.xls").Worksheets("data").Rows(i).Hidden = False Then
stp = i
Exit For
End If
Next
SaisyuData = stp
End Function
Private Sub Fukusya(mm As Long) 'data複写
Dim i As Long, j As Long, k As Long
Dim nn As String
nn = RowCount
UserForm1.TextBox1.Value = nn
UserForm1.TextBox4.Value = TourokuSoSu - 2
UserForm1.TextBox5.Value = Myretu - 2
k = Koumokusu
j = mm
'データシートから配列に読み込み
With Workbooks("data.xls").Worksheets("data")
For i = 0 To k
kou(3, i) = .Cells(j, i + 1).Value
Next
GazoSize(0) = .Cells(j, k + 3).Value
GazoName(0) = .Cells(j, k + 2).Value
GazoSize(1) = .Cells(j, k + 5).Value
GazoName(1) = .Cells(j, k + 4).Value
End With
'配列からフォームに読み込み
With Worksheets("入力")
For i = 0 To k
If kou(1, i) = "" Then Exit For
.Range(kou(1, i)).Value = kou(3, i)
Next
End With
image1
image2
End Sub
長くなって申し訳ありません。以上のようなコードになっています。
なんとか「date.xls」上で絞り込んだ可視セルのみを、「入力及び印刷.xls」ファイルに差し込んで印刷したいです。よろしくお願いいたします。
補足
ありがとうございます。赤くしたい範囲はA列です。 A65536に変更して、試してみました。 当方の説明不足なのですが、「A5」セルから下に向かって 数値(1~100)が入っており、 sとeの変数は、その1~100の範囲で指定します。 連続印刷で1から3を指定した場合、セルの色を変えたいのは 「A5」から「A7」ということになります。 よろしければもう一度ご助力いただければと思います。