- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAでの代入について)
エクセルVBAでの代入について
このQ&Aのポイント
- エクセルVBA初心者です。帳票Aに商品の売り上げデータがあり、別のリストBにある商品だけを抽出するマクロを作成しています。
- 比較処理を行う際に、基準の方が商品名を読み込んでくれないという問題が発生しています。ウォッチで確認すると「Empty」と表示されており、コード画面でマウスを当てるとデータを読み取っているようです。
- 「strg基準」と「strg比較」は、ともに変数の型がVariantです。情報が少なくて申し訳ありませんが、ご助力いただければ幸いです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
質問者様が抜粋されたプログラムについては、おそらく問題はないと思います。 なので、マクロ実行時に「売り上げ」「基準商品名_行」「基準商品名_列」が意図したとおりになっているか、「売り上げ」でのアクセス先が正しいかなどを検証されてはいかがでしょうか。 なお、検証は以下のように行いました。 Excel2003にて新規ブックを開き、Visual Basic Editorで標準モジュールを挿入しそこに以下のマクロを入力。 (セルの内容を変数に代入する2行は、質問者様の抜粋プログラムをそのままコピーペーストしました。また、「商品リスト」と「売り上げ」がシートであるなどの仮定をしました。) Sub test() Dim 基準商品名_行 As Long, 基準商品名_列 As Long Dim strg基準 As Variant, strg比較 As Variant Set 商品リスト = Sheets("sheet1") Set 売り上げ = Sheets("sheet2") 基準商品名_行 = 1 基準商品名_列 = 1 strg基準 = 商品リスト.Cells(基準商品名_行, 基準商品名_列) 'リストBの商品名の読込み strg比較 = 売り上げ.Cells(基準商品名_行, 基準商品名_列) '売り上げ表Aの商品名の読込み MsgBox strg基準 & vbCrLf & strg比較 End Sub Sheet1のA1とSheet2のA1に文字列を入力 上記のマクロを実行したところ、Sheet1のA1とSheet2のA1にあらかじめ入力しておいた文字列がメッセージボックスに表示されました。
お礼
回答、ありがとうございました。 ワークシートのコードとしてマクロを作成していましたが マクロの内容はそのままで、標準モジュールに組込むことで解決しました。 シートで作成していても動作すると思ったのですが、なぜか正常動作しませんでした。 今回、回答頂いたとおりに、標準モジュールで作成したところ、正常動作となりました。 ありがとうございました。