1

VLookupVBAを使用して数式を列に挿入しようとしています。はTable_array可変で毎月変わるので、使用したいファイルをダイアログボックスで指定したいのですが。はTable_array毎月同じ形式であり、これまでの私の式は次のとおりです。

Sub VlookupMacro()

Dim FirstRow As Long
Dim FinalRow As Long
Dim myValues As Range
Dim myResults As Range
Dim myFile As Range
Dim myCount As Integer

Set myFile = Application.GetOpenFilename("Excel Files (*.xls), *.xls")

Set myValues = Application.InputBox("Please select the first cell in the column with the values that you're looking for", Type:=8)

Set myResults = Application.InputBox("Please select the first cell where you want your lookup results to start ", Type:=8)

Range(myResults, myResults.Offset(FinalRow - FirstRow)).Formula = _
    "=VLOOKUP(" & Cells(FirstRow, myValues.Column) & ", myFile.value($A$2:$B$U20000), 5, False)"

If MsgBox("Do you want to convert to values?", vbYesNo) = vbNo Then Exit Sub

Columns(myResults.Column).Copy
Columns(myResults.Column).PasteSpecial xlPasteValues
Application.CutCopyMode = False 

End Sub

コードが行を超えて進まない瞬間に「myFile」で問題が発生していますSet = myFile。提案や修正は大歓迎です。それ以外は、変数ファイルが20000行より長くなることはなく(これが数式の範囲を固定した理由です)、常に列5を取得します。

4

2 に答える 2

3

GetOpenFileNameオブジェクトを返しません。したがって、値を設定することはできませんSet

試す:

FileName = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls), *.xls", Title:="Please select a file") 
If FileName = False Then 
     ' User pressed Cancel
    MsgBox "Please select a file" 
    Exit Sub
Else 
    Workbooks.Open Filename:=FileName  
End If 
于 2012-07-18T15:38:09.157 に答える
0

MyFileを範囲として宣言しましたが、varにファイル名を入れようとしています。GetOpenFileName関数はファイル名を返しますが、ファイルを開きません。ファイル名を文字列変数に保存してから、そのファイル名を使用してブックを開く必要があります。

于 2012-07-18T15:38:03.290 に答える