![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
エクセルのVBAに関する質問です。
"リスト"というシートに部品番号と枚数を入力し、実行すると「部品番号」欄と同じ名前のシートを「枚数」欄に入力された枚数分印刷するというマクロを作ろうとしています。
画像のファイルで説明すると、部品番号欄にAと入力し、枚数欄に1と入力すると、Aというシートを1枚印刷する、というような作業です。同様に、Bを2枚、Cは0枚、Dは1枚印刷したいです。枚数はその都度変わります。構文は以下の通りです。
Sub 一括印刷()
Range("A2").Select
Do
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = "" Then
Exit Do
End If
Dim a As String
a = Sheets("リスト").Selection.Value
Sheets(a).PrintOut Copies:=ActiveCell.Offset(0, 1)
Exit Sub
Loop
End Sub
プログラムの意図としては、
①A2セルを選択後、一行下のセルを選択する。
②”a”を"リスト"というシートの現在選択中のセルの値を同じ値に定義付ける。
③"a"と同じ名前のシートを、現在選択している一つ右隣のセルの値の枚数分印刷する。
④現在選択しているセルの一行下のセルを選択し、③を行う。
⑤セルが空白になるまで③~④を繰り返す。
という流れです。しかし、
a = Sheets("リスト").Selection.Value
の所で、「実行時エラー438 オブジェクトはこのプロパティまたはメソッドをサポートしていません」というエラーが出ます。このエラーの原因が分かりません。
もしお分かりになるようでしたら教えて頂きたいです。
又、このプログラムじゃなくても他の方法で実行できるよ、という案がありましたら教えて頂けると尚ありがたいです。
宜しくお願い致します。
![「実行時エラー438 オブジェクトはこのプ」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/b/543102769_60e3e2ba2106f/M.png)
No.1ベストアンサー
- 回答日時:
こんにちは
このエラーは、エラーコメントにある通り
Sheets("リスト")にはSelectionが無いとこを示しています。
コードを拝見する限り
a = Selection.Value や
a = ActiveCell.Value で良いように思います。
>他の方法で
For Eachを使用する方法で
Dim r As Range
On Error Resume Next
For Each r In Sheets("リスト").Range("A2", Sheets("リスト").Cells(Rows.Count, "A").End(xlUp))
If r.Value <> "" Then
Sheets(r.Value).PrintOut Copies:=r.Offset(0, 1).Value
End If
Next
End Sub
On Error Resume Nextは(少し乱暴ですが)エラー回避用です
本来は、 If r.Value <> "" 部分で シート名 検証やB列の数値検証を入れた方が良いと思います。
ご回答ありがとうございます。
For Eachを使用した方法で見事に実現することが出来ました。
早急なご回答ありがとうございました!
とても助かりました。感謝しております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) エクセルの印刷マクロについて質問があります。 現在、下記のマクロで印刷しています。Sheet1のD6 5 2023/06/12 10:59
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) VBAで不特定枚数印刷をしたいです。 4 2022/08/02 07:30
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Excel(エクセル) エクセルVBAで次の二つを行いたいのですが思うように動きません。どう修正したらよいのでしょうか? 2 2023/04/22 14:55
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
実行時エラー 438 の解決策をおしえてください。
Visual Basic(VBA)
-
エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか
Visual Basic(VBA)
-
-
4
【Excel VBA】Worksheets().Active でエラーが出る原因を教えてください
Visual Basic(VBA)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
エクセルの実行時エラー 438"に困っています"
Excel(エクセル)
-
7
VBAマクロ 実行時エラーが出たり出なかったり
Excel(エクセル)
-
8
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
9
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
10
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
11
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
12
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
13
VBAのプログラムで、DIAG = 1# / A(L, L) や R(
その他(プログラミング・Web制作)
-
14
VBAで重複するデータがあれば1個だけ残して他の重複セルを"(空白)にしたいのですが
Excel(エクセル)
-
15
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
16
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
17
VBA コピーが出来ません…!
Visual Basic(VBA)
-
18
Excel VBAでIEにアクセスするプログラムが特定のPCで「実行時エラー438」となる。
Visual Basic(VBA)
-
19
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
連続する複数のセル値がすべて0...
-
ExcelVBAを使って、値...
-
TODAY()で設定したセルの日付...
-
VBA コピーして次の値まで貼り...
-
screenupdatingが機能しなくて...
-
エクセルVBAでコピーして順...
-
ExcelのVBAで数字と文字列をマ...
-
数字でピラミッドを出力させる...
-
excelで置換をしたいんですが
-
EXCELで変数をペーストしたい
-
特定の文字を条件に行挿入とそ...
-
VBA初心者です。結合セルを保持...
-
Excel VBA、 別ブックの最終行...
-
VBAでマクロ実行中はExcelのマ...
-
DataGridViewのセル編集完了後...
-
Excel VBAで、 ヘッダーへのセ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
VBAの計算で@が出てしまう件
-
Excelのプルダウンで2列分の情...
-
EXCELで変数をペーストしたい
-
VBA ユーザーフォーム ボタンク...
-
VBAでセルをクリックする回...
-
Excel VBA、 別ブックの最終行...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
-
VBAを使用した時間管理
-
”戻り値”が変化したときに、マ...
-
Sub 要具ライフ() ActiveSheet....
おすすめ情報