こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

セル値のシート参照

excel2010

セル値のシート参照がうまく動作しません。
構成は下記です。

ディスクトップにa.xlsmのファイル。シート名称はSheet1、シート計算は手動にしています。
Cドライブのtempフォルダにabc.xlsというファイルを登録しています。
C:\TEMP\abc.xls

abc.xlsのファイルは、シート名称が(日付け)という構成です。
9/1だと(1)、9/23だと(23)の様になっています。

a.xlsmのファイルからマクロを使い、日付けに相当するシートを表示させようとしています。
a.xlsmのQ2セルには日付けのデータが入ります。表示形式は9/23みたく。
Q3セルは、="("&TEXT(Q2,"dd")*1&")"
これで、日付けからabc.xlsファイルのシート名称を参照させる構成です。

作成したマクロは下記です
Sub マクロからブックを開く2()

Worksheets("Sheet1").Activate

Dim t As String

t = Range("Q3").Value
Debug.Print t
’Q3セル値を更新させる為に計算実行
Calculate

Workbooks.Open "C:\TEMP\abc.xls"

Worksheets(t).Activate

End Sub
上記だと、Q2セルの日付けを変えても1つ前の日付けで参照されます。
上記を2回そのまま実行すると正しく反映されます。
Debug.Print tでも更新されていないのが分かります。
なぜなのでしょうか?

ちなみに、下記の様にマクロを分割すると、正しく表示されます。
Sub マクロからブックを開く()

Worksheets("Sheet1").Activate

Dim t As String

t = Range("Q3").Value
Debug.Print t

Calculate

cal

End Sub
Sub cal()
Dim t As String

t = Range("Q3").Value
Debug.Print t

Workbooks.Open "C:\TEMP\abc.xls"

Worksheets(t).Activate

'Call カレントフォルダの表示
End Sub
上記の様に2つに分けると
Debug.Print tで更新されていることが確認出来ます。

1つ目のマクロ
マクロからブックを開く2
のおかしな内容の理由と対策内容を教えていただきたく、よろしくお願いします。

投稿日時 - 2016-09-01 18:33:39

QNo.9223117

暇なときに回答ください

質問者が選んだベストアンサー

手動計算ですのでマクロを実行する時点ではQ3は計算されていませんから先に計算してtに代入しないと前回の計算結果がtに代入されます。
順番は
Calculate
t = Range("Q3").Value
Debug.Print t
じゃないでしょうか。
マクロを分割したほうは呼び出すcalの手前でCalculateされますのでtには再計算された結果が代入されて期待した結果が得られます。

投稿日時 - 2016-09-01 19:07:37

お礼

回答ありがとうございます。

なるほど。単純な思い込みでした。助かりました(^.^)

投稿日時 - 2016-09-02 08:53:00

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問