2016-07-15 56 views
1

私のワークシートの特定の値を入力するために、Accessにクエリを送信しようとしています。私は現在のユーザーのログイン名を取得し、列を見てこのワークシートを取得します。この列は、アクセスの列に従って更新されます。私が必要とする価値は、私が検索する列の右の列にあります。私は私のVLOOKUPは私がセルF1に必要な値を取得しようとしていますWorksheetFunctionクラスのVLookupプロパティを取得できません。エラー1004

Private Sub CommandButton1_Click() 
    Dim user, cUser As String 
    user = (Environ$("Username")) 
    cUser = Application.WorksheetFunction.VLookup(user, Worksheets("Sheet1").Range("C2:C1000"), -2, False) 
    Worksheets("Sheet1").Range("F1").Value = cUser 
    End Sub 

動作させるために、一時的な試みアウトとして以下のコードを持っています。これが動作すれば、私は変数に値を入れ、これを私のクエリに追加します。また、エラー処理を挿入してコードが機能し続けるようにしますが、今のところ、私は自分が列にあることを知っている私の1つの値で動作させたいだけです。

+0

参照領域外またはインデックス列の前の列は参照できません。ここで必要なものについては、INDEX/MATCHまたは 'Find()'を使う必要があります。 –

答えて

1

は、代わりにこれを試してみてください。

に再び簡略化することができ
Private Sub CommandButton1_Click() 
    Dim user As String, cUser As String '// Note you have to declare the type each time! 
    user = Environ$("USERNAME") 
    cUser = Sheets("Sheet1").Range("C:C").Find(user).Offset(, -2).Value 
    Sheets("Sheet1").Range("F1").Value = cUser 
End Sub 

:VLOOKUPは、単にあなたが何をしようとしては適していません

Private Sub CommandButton1_Click() 
    Sheets("Sheet1").Range("F1").Value = Sheets("Sheet1").Range("C:C").Find(Environ$("USERNAME")).Offset(, -2).Value 
End Sub 

を。

+0

ありがとう!私はちょうどこれに従うことができるが、私はほぼ同じことをやっているガイドを見つけた。あなたの答えが働く! – Tomdw94

+0

問題はありません - あなたの最初の問題の理由は、あなたがあなたのvlookupの一部として見ていない列を再考しようとしているからです。なぜ、なぜINDEX/MATCHを代わりに使用し、それをVBAバージョンに変換すると、代わりに '.Find()'を使用するほうが簡単だと思いました。私はまだ将来の参照のためにINDEX/MATCHがどのように動作するかを見ておくことをお勧めします。 –

関連する問題