Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
別シートをVlookupで参照〜更新がうまくいかない
投稿日時: 21/12/29 10:32:31
投稿者: tumuzo

いつもお世話になっております。
 
VBAマクロで、
・001〜010.xlsまでの一連のBOOKを一つずつ開き、
・その中のシートには各行にVLOOKUP関数が入っていて別のマスタ.xlsから取得した最新の値で更新、
・最新の値で更新したシートを別のBOOKへ値コピー(参照式を省いた状態)して、SHEETを追加
つまり、001〜010.xlsをマスタ参照、更新した結果を1つのBOOKに集約する処理です。
 
BOOKへの集約と内容のコピーについては問題なく動作しているのですが、肝心ともいえるVLOOPUP関数での値参照がうまくいきません。
 
他表を参照する時に出てくる確認メッセージを回避するため、
オプション>詳細設定>全般>リンクの自動更新前にメッセージを表示する のチェックは外しています。
 
VLOOKUP関数の更新を強制的に行うため、CalculateやRefreshAllなどのメソッドを追加しています。
Targetbook が更新対象のBOOKで、Targetsheet が対象のシートです。
 
    Set Targetbook = ActiveWorkbook
    Set Targetsheet = Targetbook.Sheets("RCM")
    With Targetsheet
        .Activate
        Targetsheet.Calculate
        ActiveWorkbook.RefreshAll
    End With
 
上記ステップの後ろにブレイクポイントを設定して、ActiveWorkbookの値を参照したところ、値が置き換わっていません。シートを手動で更新(データ>すべて更新)しても値が変わりません。
 
しかし、参照セルにカーソルを合わせて、F2で計算式を参照してエンターキーを押したところ、値は置き換わりました。
 
Windows10上でExcel2016を使用しています。マクロはxlsmですが、更新対象は従来から使用しているBookであるため、xls形式で保存しているものです。
 
Refreshでは効かないのか、一連の動作でタイムラグが生じるのか、よく判りませんが、どのような措置をすればよいのかアドバイス頂ければ幸いです。
 

回答
投稿日時: 21/12/29 11:40:33
投稿者: めんたん

Application.Calculate
 
としてはどうでしょうか?

投稿日時: 21/12/29 13:37:00
投稿者: tumuzo

めんたん さん コメントありがとうございました。
 
試してみましたが、結果は同じでした。
 
よくよく見ると、それ以前の各WORKBOOKを開く時、
 
    Workbooks.Open Filename:=Mypath & ORG_PATH & Mainsheet.Cells(i, 1) & ".xls", UpdateLinks:=0
 
のように書いていました。コピペで持ってきたので、よくよく意味も調べずに使っていたのですが、
UpdateLinks:=0 で更新しない、の意味になっていました。 UpdateLinks:=3 に変えたところ、難なく更新されました。
 
取り敢えず、問題は解決したのですが、今度は、別のエラーは出るようになりました。
今までは動作していた、同一BOOK内でのシート複写でのエラーです。
ネット上の情報があるようですので、もう少し調べてみます。
 
どうもお騒がせしました。