●質問の主旨
(1)以下のコードのプロシージャを実行すると
12行目の変数myArrが選択され、「配列に割り当てられません」と
エラーメッセージが返されます。これはなぜでしょうか?
(2)(1)の原因は5行目の変数myArrの宣言について問題があるよう
気がしますが、どうすればいいのか分かりません?
以上2点について、1つだけでもご助言いただければ幸いです。
ご教示よろしく願いします。
●質問の補足
下記のコードは「各支社の成績」(画像の下部)を
「業務成績通知書」(画像上部)に成績欄に差し込んで
各支社ごとのワークシートを印刷するためのコードです。
画像上部のワークシート名→差込印刷TARGET
画像下部のワークシート名→data
●コード
Option Explicit
Sub オートシェイプ1_Click()
Dim myTar As Worksheet 'ワークシート差込印刷(ターゲット)のオブジェクト変数
Dim myDat As Worksheet 'ワークシートdataの配列変数
Dim myArr(6, 4) As Range
Dim y As Integer '印刷するシート数のオブジェクト変数
Dim myTem As Range '印刷するアクティブシートのオブジェクト変数
Dim n As Integer '差込数の数
Dim target_name As String '差込名
'ワークシート差込印刷(ターゲット)をオブジェクト変数に代入
Set myTar = Worksheets("差込印刷TARGET")
Set myDat = Worksheets("data") 'ワークシートdataをオブジェクト変数に代入
myArr = myDat.Range("B2:G6") '印刷範囲のセル範囲を配列変数に代入
For y = 1 To 5 '繰り返し
myTar.Copy after:=myDat 'ワークシート差込印刷のコピーをワークシートdataの後に配置
Set myTem = ActiveSheet 'アクティブシートを変数myTemに代入
myTem.Name = "印刷中" 'コピーされたワークシートの名前は「印刷中」とする
For n = 1 To 6
'差込名に「ターゲット番号」を代入
target_name = "TARGET" & n
'印刷中シートの「ターゲット番号」のセルに支店ごとのデータ(配列変数)を代入
myTem.Cells.Find(target_name).Value = myArr(y, n)
Next
myTem.PrintOut 'アクティブシートの印刷
Application.DisplayAlerts = False '画面警告表示を非表示
myTem.Delete '「印刷中」のシートを削除
Application.DisplayAlerts = True '画面警告表示を非表示を元に戻す
Next End Sub
No.1ベストアンサー
- 回答日時:
myArrが既に配列宣言されているからです。
Dim myArr(6, 4) As Range⇒Dim myArr As Variantに変更してみて下さい。
この回答への補足
mu2011様
変数の型をVariant型にすると私の意図通りの
プロシージャを実行することができました。
大変助かりました。
ただmu2011様の
「myArrが既に配列宣言されているからです。」
というアドバイスの意味がよく分かりません。
この点についてももう少しご教示いただければ
幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) 複数シート一括作成後に、特定範囲の数式は値で貼り付けしたい 3 2022/10/07 11:18
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
Excelマクロのエラーを解決した...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
実行時エラー1004「Select メソ...
-
同じ作業を複数のシートに実行...
-
実行時エラー'1004': WorkSheet...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
エクセルのシート名変更で重複...
-
XL:BeforeDoubleClickが動かない
-
VBAでオブジェクト変数にsetし...
-
VBA 最終行まで数式をコピーする
-
エクセルVBA Ifでシート名が合...
-
VBA 検索して一致したセル...
-
ブック名、シート名を他のモジ...
-
Excel マクロについての相談
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報