2017-06-19 20 views
0

このコードは、 'dataWeaponField'名前付き範囲の文字列値ではなく、セルA8またはA17(アクティブなトグルに応じて)に#VALUEエラーをスローします。このExcel式(たとえば)セルA17正しく動作:= VLOOKUP(B17、dataWeaponField、2、FALSE)。私はVBAでこの式を単純に複製しようとしています。Excel VBAの範囲はVLOOKUP #VALUEエラー

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) 
    If Target.Column = 1 And Target.Row = 7 Then 'CLICK TO SWAP WEAPONS 
     If Range("A8").Interior.ColorIndex = 6 Then 'Primary Weapon 
      Range("A8:C15").Interior.ColorIndex = 12 'Primary Weapon 
      Range("A17:C24").Interior.ColorIndex = 6 'Secondary Weapon 
      Range("A8").Value = "" 'Primary Weapon 
      Range("A17").Value = Application.VLookup(Range("B17"), ThisWorkbook.Names("dataWeaponField"), 2, False) 
     Else 
      Range("A8:C15").Interior.ColorIndex = 6 'Primary Weapon 
      Range("A17:C24").Interior.ColorIndex = 12 'Secondary Weapon 
      Range("A8").Value = Application.VLookup(Range("B8"), ThisWorkbook.Names("dataWeaponField"), 2, False) 
      Range("A17").Value = "" 'Secondary Weapon 
     End If 
     Range("A6").Select 'Cell above CLICK TO SWAP WEAPONS 
    End If 
End Sub 

答えて

1

Rangeの代わりにNameオブジェクトを渡すためです。また、

Range("A17").Value = [VLOOKUP(B17, dataWeaponField, 2, FALSE)] 

選択したセルをクリックするとSelectionChangeがトリガされませんので、あなたがコントロールまたはハイパーリンクを使用することができますし、Worksheet.FollowHyperlink Event

Range("A17").Formula = "=VLOOKUP(B17, dataWeaponField, 2, FALSE)" 

またはEvaluateそれを:あなたは、式を設定することができます

+0

最初のソリューションでは、エラー: – chazcon

+0

@chazconが返されます。「このExcel式(たとえば)セルA17は正しく動作します:= VLOOKUP(B17、dataWeaponField、2、FALSE)」の質問と同じです。 – Slai

+0

これらのソリューションはどちらも完璧に動作します。ありがとうございます。 – chazcon

0

ThisWorkbook.Names("dataWeaponField")は、Rangeオブジェクトではなく、Nameオブジェクトです。 VLookupは後者を想定しているため、この式を単にApplication.Range("dataWeaponField")に置き換えることができます。

コードがワークシートコードモジュールにあり、名前付き範囲が別のワークシートに属しているため、アプリケーションオブジェクトがグローバルスコープからフェッチできるようにするために接頭辞が必要です。

また、Application.Evaluate(yourWorkingFormula)を使用して、そのままExcelで動作する数式全体を評価することもできます。

+0

最初の解決方法ではエラーが発生します。 – chazcon

+0

最初の解決方法はエラーになります。実行時エラー '1004': '_Worksheet'オブジェクトの 'Range'メソッドが失敗しました。 – chazcon

+0

2番目のソリューションでもエラーが発生します。コンパイルエラー:SubまたはFunction not defined。 – chazcon

関連する問題