vba初心者です。ネットを見ながら作成していますがどうしてもわかりません教えてください。
エクセルのバージョンは2010です。
条件として
Sheet1のセルA1からA3にワークシート名(Sheet2~Sheet4)を入れます。
Sheet1のセルB1からB3に印刷枚数をいれます。
例えば、A1「Sheet2」B1「「2」と入力すると、Sheet2を2枚印刷するようにしたいです。
但し、セルA1もB1も空白の場合は印刷を行わず、セルA2とB2、セルA3とB3を実行するようにしたいです。セルA2とB2、セルA3とB3が空白のときもそれぞれ印刷しなく、空白でないものだけを印刷したです。
ネットを見て下記のところまでたどり着いたのですが、空白の場合は止まってしまいます。
If <>””Then を入れればいいとかいてあるのですが、入れるとピクリとも動かなくなります。
よろしくお願いします。
Sub 印刷()
Dim a As String
a = Sheets("Sheet1").Range("A1").Value
Sheets(a).PrintOut Copies:=Range("B1").Value
a = Sheets("Sheet1").Range("A2").Value
Sheets(a).PrintOut Copies:=Range("B2").Value
a = Sheets("Sheet1").Range("A3").Value
Sheets(a).PrintOut Copies:=Range("B3").Value
End Sub
No.1ベストアンサー
- 回答日時:
こんな感じでしょうか?
--------------------------------------------------------------------------------
Sub 印刷()
Dim a As String
Dim b As Long
With Sheets("Sheet1")
For b = 1 To 3
If .Cells(b, 1).Value <> "" Then
If .Cells(b, 2).Value <> "" Then
a = .Cells(b, 1).Value
Sheets(a).PrintOut Copies:=.Cells(b, 2).Value
End If
End If
Next
End With
End Sub
--------------------------------------------------------------------------------
本当にありがとうございます。
朝から4時間かけてできなかったのですが・・・
コピーして貼り付けて実行したら一瞬でできました。
難しいので今から解読していきたいと思います。
No.3
- 回答日時:
No.2 のさらに補足
どっちでも出来るようにいっそ以下のようにしちゃった方が良いかも
--------------------------------------------------------------------------------
Sub 印刷()
Dim b As Long
With Sheets("Sheet1")
For b = 1 To 3
If .Cells(b, 1).Value <> "" Then
If .Cells(b, 2).Value <> "" Then
Sheets(.Cells(b, 1).Value).PrintOut Copies:=.Cells(b, 2).Value
End If
End If
Next
End With
End Sub
--------------------------------------------------------------------------------
解読できました。
Cells(b,1)の辺りさすがです。こんなやり方あるのかと感心させられました。繰り返し同じプログラムを入力せず「b」で置き換えることができるんですね。
For~Nextもすごく便利ですね。勉強になりました。
本当にありがとうございました。
No.2
- 回答日時:
No.1 の補足
シートの指定ですがシート名の指定だと記入するのが面倒ではありませんか?
左から〇枚目という数字のみの指定する方法もあります。
その場合は「Dim a As String」を「Dim a As Long」にしてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Excel(エクセル) エクセルの印刷マクロについて質問があります。 現在、下記のマクロで印刷しています。Sheet1のD6 5 2023/06/12 10:59
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) 前回質問の続きになりますが、下記マクロでシート1からシート2の抽出項目セルB3「りんご」とセルC2「 2 2022/12/02 17:37
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
数式による空白を無視して最終...
-
空白セル内の数式を残したまま...
-
ピボットテーブルで空白セルの...
-
excel2010 空白セルにのみ貼り...
-
「データ要素を線で結ぶ」がチ...
-
エクセルでCSVを編集するとき、...
-
エクセルで、「複数のセルの中...
-
Excel > ピボットテーブル「(空...
-
エクセル 連番が途切れていると...
-
Excelで、入力文字の後に自動で...
-
SUMIFS関数で「計算式による空...
-
形式貼り付けの「空白を無視す...
-
VBA スペースが入力されて...
-
3列ごとに合計を出したい
-
エクセルにて負の時間を0:00と...
-
VLOOKUP関数について
-
エクセルのグラフで式や文字列...
-
【Excel】 Ctrl+方向キー で空...
-
《Excel2000》SUMPRODUCT関数で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
数式による空白を無視して最終...
-
excel2010 空白セルにのみ貼り...
-
エクセルでCSVを編集するとき、...
-
「データ要素を線で結ぶ」がチ...
-
Excelで、入力文字の後に自動で...
-
ピボットテーブルで空白セルの...
-
エクセル 連番が途切れていると...
-
関数TRANSPOSEで空白セルを0に...
-
空白セル内の数式を残したまま...
-
Excel > ピボットテーブル「(空...
-
エクセルで、「複数のセルの中...
-
SUMIFS関数で「計算式による空...
-
空白を0とみなす関数
-
【Excel】 csvの作成時、空白セ...
-
エクセルで上の行の値を自動的...
-
《Excel2000》SUMPRODUCT関数で...
-
一列の中の金額を他のセルに
-
形式貼り付けの「空白を無視す...
-
エクセルで空白文字の前後を入...
おすすめ情報