質問者様が抜粋されたプログラムについては、おそらく問題はないと思います。
なので、マクロ実行時に「売り上げ」「基準商品名_行」「基準商品名_列」が意図したとおりになっているか、「売り上げ」でのアクセス先が正しいかなどを検証されてはいかがでしょうか。
なお、検証は以下のように行いました。
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にあらかじめ入力しておいた文字列がメッセージボックスに表示されました。
お礼
回答、ありがとうございました。 ワークシートのコードとしてマクロを作成していましたが マクロの内容はそのままで、標準モジュールに組込むことで解決しました。 シートで作成していても動作すると思ったのですが、なぜか正常動作しませんでした。 今回、回答頂いたとおりに、標準モジュールで作成したところ、正常動作となりました。 ありがとうございました。