
お世話になっております。
VBAで指定範囲の印刷方法ついてご教示をお願い致します。
添付しました画像の表があります。
この表はEセルから右にも違うデータが入力されております。
この表の印刷範囲をB2から始まり右にE3の「ぶどう」まで。
下にB9の「みかん」までを印刷範囲にしたいのですがVBAのプログラムで構築可能でしょうか?
この表はセルが挿入されたりとずれが生じるので「ぶどう」と「みかん」の文字データまでを印刷指定範囲にすれば業務時間短縮に繋がるかと思い質問致しました。
どなたか分かる方よろしくお願い致します。

No.2ベストアンサー
- 回答日時:
こんにちは
よくわかりませんが・・・、印刷する対象範囲を
・開始位置は固定でB2セル
・終了位置は「B列でみかんのある行」と「3行目でぶどうのある列」の交点まで
として、印刷したいということと解釈しました。
実行すると、上記の範囲で印刷する例です。
Sub Sample()
Dim c As Range, a As String
Dim rw As Long, col As Long
rw = 0
col = 0
Set c = Rows(3).Find("ぶどう", After:=Range("B3"), LookAt:=xlWhole)
If Not c Is Nothing Then col = c.Column
Set c = Columns(2).Find("みかん", After:=Range("B2"), LookAt:=xlWhole)
If Not c Is Nothing Then rw = c.Row
If rw > 0 And col > 0 Then
a = ActiveSheet.PageSetup.PrintArea
ActiveSheet.PageSetup.PrintArea = Range(Cells(2, 2), Cells(rw, col)).Address
ActiveSheet.PrintOut
ActiveSheet.PageSetup.PrintArea = a
Else
MsgBox "印刷対象範囲が不明です"
End If
End Sub
fujillin様ありがとうございます。
ぶどうの入力データを右に移動した際にも
このプログラムの実行でちゃんと印刷範囲が指定出来ました。
ありがとうございます。
他の方の回答者様も失礼ながらこの場をお借りしお礼申し上げます。
勉強、並びに活用させていただきます。
ありがとうございました。

No.4
- 回答日時:
№1で回答した者ですがお礼を受けて再回答します。
イマイチ何をしたいのかよくわかりませんが、B2を先頭にして"みかん"と入力されているセルと”ぶどう”と入力されているセルを最後尾行または最後尾列になるように範囲を検出して、その範囲を印刷範囲に設定するのであれば以下の通りで出来るはずです。
”ぶどう”や”みかん”以外の文字列を追加したければArray()の中に文字列を追加するだけで対応するはずです。
Sub サンプル
Dim mySheet As Worksheet
Dim TargetCell As Range
Dim myArray As Variant
Dim I As Long
Dim R As Long
Dim endR As Long
Dim MaxR As Long
Dim C As Integer
Dim endC As Integer
Dim MaxC As Integer
Set mySheet = Thisworkbook.Worksheets("ワークシートの名前")
myArray = Array("みかん", ”ぶどう")
R=2
C=2
endR = mySheet.Rows.Count
endC = mySheet.Columns.Count
For I = 0 To UBound(myArray)
For C = 2 To endC
If WorksheetFunction.CountIf(mySheet.Range(mySheet.Cells(2, C), mySheet.Cells(endR, endC)), myArray(I)) = 0 Then Exit For
If WorksheetFunction.CountIf(mySheet.Columns(C),myArray(I)) > 0 Then
For R = 1 To endR
Set TargetCell = mySheet.Range(mySheet.Cells(R, C), mySheet.Cells(endR, C).Find(What:=myArray(I), LookAt:=xlWhole)
If TargetCell Is Nothing Then Exit R
MaxR = WorksheetFunction.Max(MaxR, TargetCell.Row)
MaxC = WorksheetFunction.Max(MaxC, TargetCell.Column)
Next R
End If
Next C
Next I
mySheet.PageSetup.PrintArea = mySheet.Range("B2", mySheet.Cells(MaxR, MaxC)).Address
Set mySheet = Nothing
Set TagretCell = Nothing
Erase myArray
I = 0
R = 0
endR = 0
MaxR = 0
C = 0
endC = 0
MaxC = 0
End Sub
No.3
- 回答日時:
人は簡単だと思うのでしょうけれども、ちょっと難しい内容ですね。
ふつうはデータの範囲を、End プロパティで取得するというのが常識的です。
しかし、これはそうではないからです。
または、ショートカットを作って範囲設定をさせるというのが順当だと思います。
「みかん」と「ぶどう」が、それぞれがどういう意味を持っているのか、回答者側には分かりませんので、質問だけでみると、それをVBAなどで指し示すことは不可能なのです。
そこで、私が昔やっていた方法を披露します。
(失敗する可能性がひとつあるのは、その登録してあったセルや行や列を削除してまった場合です。)
数式--名前の定義
例えば、LeftEnd <-「みかん」 RightTop <-「ぶどう」
(シート対象 ×ブック全体)
'//ThisWorkbook モジュール
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim i As Long, j As Long
Dim adr As String
If ActiveSheet.Name <> "Sheet1" Then Exit Sub '設定シート要登録
On Error Resume Next
i = Range("leftend").Row
j = Range("righttop").Column
If i = 0 Or j = 0 Then Exit Sub
On Error GoTo 0
adr = Range(Cells(2, 2), Cells(i, j)).Address
ActiveSheet.PageSetup.PrintArea = adr
End Sub
もちろん、個別のボタンに対して、印刷マクロにしても良いと思います。

No.1
- 回答日時:
Worksheets("ワークシートの名前").PageSetup.PrintArea = "b2:e9"
で、印刷範囲を設定できます。
Worksheets("ワークシートの名前").PageSetup.PrintArea = ""
で、印刷範囲の設定を解除できます。
NURU_osan様回答ありがとうございます。
こちらのプログラムを実行した際はE9で問題なく設定出来ましたが
表にセルを挿入した際にE9がF9、また二つ三つセルを挿入しますとそれに合わせ右にずれます。
当然なのですが。
このずれに合わせた何か良い方法などありますでしょうか?
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル2013「次のページ数に合わせて印刷」が小さすぎる 9 2023/03/28 10:18
- Excel(エクセル) エクセルVBAで複数のシート印刷設定 1 2022/09/07 12:03
- Excel(エクセル) エクセルシートのPDFでの保存 2 2022/09/06 13:05
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) Excel VBAで、行の高さを、上下1文字分程度高くしたい 3 2023/04/23 00:17
- Excel(エクセル) エクセルの印刷範囲をページ単位で可変にする方法 3 2022/05/23 13:04
- PDF EXCEL ページを指定してPDF出力するVBAを教えてください。 2 2023/02/09 10:27
- Visual Basic(VBA) 改ページ 2 2023/03/10 21:29
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
煮物こんにゃくの冷凍保存について
-
Excel MATCH関数で検索範囲内...
-
7文字以上のフルーツをできるだ...
-
北海道では、見かけないもの
-
「であり」と「であって」の使...
-
スポンジケーキってどのくらい...
-
ラズベリーの種の抜き方を教え...
-
いちごを1パック買ったのです...
-
中黒「・」か読点「、」か?
-
梶井基次郎の檸檬
-
ライム(果物)を漢字になおす...
-
スーパーで買った1つ300円の梨...
-
何という名前の虫か教えてください
-
エクセルで数字を入力したら文...
-
さくらんぼに似ているが、さく...
-
教えてください!!
-
外はふわふわで(柔らかい)、...
-
10~20代に通じやすい和文通話表
-
こんなスイカは食べても大丈夫...
-
10年前のにんにく漬け、食べて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
煮物こんにゃくの冷凍保存について
-
7文字以上のフルーツをできるだ...
-
スポンジケーキってどのくらい...
-
中黒「・」か読点「、」か?
-
10年前のにんにく漬け、食べて...
-
「であり」と「であって」の使...
-
Excel MATCH関数で検索範囲内...
-
スーパーで買った1つ300円の梨...
-
ライム(果物)を漢字になおす...
-
いちごを1パック買ったのです...
-
EXCELでB1に指定文字が入った場...
-
筍の上の部分が緑色になってい...
-
北海道では、見かけないもの
-
ラズベリーの種の抜き方を教え...
-
しらたきと吐き気
-
エクセルで数字を入力したら文...
-
外はふわふわで(柔らかい)、...
-
ローリエって何のために入れる...
-
教えてください!!
-
離乳食にローリエ
おすすめ情報