アプリ版:「スタンプのみでお礼する」機能のリリースについて

ExcelのシートにてAとBがあります。
Aシートは印刷面でBシートに宛名と印刷部数を設定しています。
マクロでボタンを押下すると、Bシートの宛名をコピーしてAシートに張り付け、
そのあとにBシートの印刷部数にある数字の枚数を印字。
これを宛名が空白セルにまで繰り返し処理を考えています。

次のように処理を考えていますが
 ActiveWindow.SelectedSheets.PrintOut Copies:=Sheets("B").Range(Cells(5, mai)).Value
この部分で次のエラーがでて実行に失敗してしまいます。
 実行時エラー'1004'
 アプリケーション定義またはオブジェクト定義のエラーです。

また「Range(Cells(5, mai))」の部分を「Cells(5, mai)」と変更しても
 実行時エラー'1004'
 数値は1から32767の範囲でなければなりません。この数値の範囲で入力し直し、
 もう一度行ってください。
とエラーが出てしまいます。

どのようにすれば別シートのセルの値を印刷枚数として設定できるか
ご教授の程宜しくお願い致します。

======
Dim ate As Integer '宛名
Dim mai As Integer '印刷枚数
Dim A As Worksheet 'Aシート
Dim B As Worksheet 'Bシート

ate = 2
mai = 2

Set st = Sheets("A")
Set sc = Sheets("B")

B.Activate
Cells(ate, 2).Select
Selection.Copy

A.Activate
Range("A1").Select
ActiveSheet.Paste

B.Activate
Cells(ate, 2).Select


Do While ActiveCell.Value <> ""

mai = Cells(5, mai)

A.Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=Sheets("B").Range(Cells(5, mai)).Value

mai = mai + 1

ate = ate + 1

B.Activate
Cells(ate, 2).Select
Selection.Copy

A.Select
Range("A1").Select
ActiveSheet.Paste

Loop

質問者からの補足コメント

  • Set st = Sheets("A")
    Set sc = Sheets("B")

    この部分は

    Set A = Sheets("A")
    Set B = Sheets("B")

    の間違いです。

      補足日時:2018/04/20 13:46

A 回答 (1件)

こんなもんでいかがでしょう。


Dim ate As Integer '宛名の行位置
Dim A As Worksheet 'Aシート
Dim B As Worksheet 'Bシート
ate = 2
Set A = Sheets("A")
Set B = Sheets("B")
Do While B.Cells(ate, 2).Value <> ""
  A.Range("A1").Value = B.Cells(ate, 2).Value
  A.PrintOut Copies:=B.Cells(ate, 5).Value
  ate = ate + 1
Loop
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています