エクセルマクロVLookupについて
定義ブック.xlsm : 項目名、項目カテゴリ名、項目名長、文字種類 を定義する為ブック。
辞書ブック.xls : 項目カテゴリ名、項目名長、文字種類をこのブック内で色々処理して設定している。
定義ブックの項目名で検索し、
辞書ブックの項目カテゴリ名、項目名長、文字種類を参照してくる。
定義ブックを開いた時に辞書ブックの内容から値を参照(vlookup)するようにしたいです。
定義ブック、辞書ブック、ともに今後、行数が増える想定なので、
何行目まで、というのを変数にしてマクロで実装しようとしています。
そこで、
Application.WorksheetFunction.VLookup()
を使ってみたのですが、そのセルが正常に値を表示しません。
vlookupをセルにベタ書きにすれば値は取得できている為、検索値が見つからない為にエラーになっている系統ではないハズです。
エクセルのバージョンは2007です。
また、エクセルにvlookupをベタ書きするようにマクロを組むと、それは正常に値を表示します。
(最悪この手ですが…、セルにカーソルを合わせるとvlookupの式が表示され、避けたいトコロです)
どのように修正すれば良いでしょうか…?
マクロは初心者です…。
以下、ソースの抜粋です。
******************************************
Dim ItemCode As Variant
Dim SerchArea As Variant
Dim LastRow As Long
'辞書ブックをアクティブにする
Workbooks("辞書ブック.xls").Activate
ActiveWorkbook.Worksheets("辞書シート").ActivateLastRow = Cells(Rows.Count, 1).End(xlUp).Row
'項目数を取得
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'最終行を取得(辞書ブック.辞書シートのvlookupを何行目までの範囲にするか)
SerchArea = "[辞書ブック.xls]辞書シート!$B$5:$F$" & LastRow
'定義ブックをアクティブにする
Workbooks("定義ブック.xlsm").Activate
ActiveWorkbook.Worksheets("定義シート").Activate
For I = 11 To ColumnCnt
'C11セルから下へ、項目名を検索値として取っていく
ItemCode = Cells(I, 3)
'辞書ブックから値を取得(項目カテゴリ名) 【この書き方だとセルには「value!」と表示される】
Cells(I, 16).Value = Application.VLookup(ItemCode, SerchArea, 2, False)
'辞書ブックから値を取得(項目名長) 【この書き方ならセルには正しく値が表示されるけど、勿論、セルにカーソルを合わせると、vlookupの式が表示される】
Cells(I, 38).Value = "=VLOOKUP(C" & I & ",[辞書ブック.xls]辞書シート!$B$5:$F$" & LastRow & ",4,FALSE)"
Next I
お礼
マクロで列を挿入するようにしてから他のシートが自動的に式の値がずれてしまうようです。 絶対参照にしても絶対参照の値が一つ右にずれてしまいます。どうしたらいいでしょうか?
補足
マクロを止めると、値の変化はなくなります。 しかし、マクロは必要なので。。 セルの値が変るマクロはつかっておりませんし、 なぜだかわかりません。。 困った。