私は暗黙のうちにLong
タイプに変換可能ではない戻り値について、Roryと多くの関係があります。
どちらのあなたは「さらにMatch()
機能はいくつかを持つことができますデバッグ目的
のために、主に(私は信じている)あなたのコードをステップと
Index(ws2.Range("b3:I10"), effectIniVar, waarschijnlijkheidIniVar)
によって返されるどの値を参照するか、あなたは、エラーハンドラをそこに置きます側」効果限り 『最も効果的にそうあなたのように行くことができるRange
オブジェクト
のFind()
方法で扱うことが可能マッチングが懸念された文字列『』対』番号は、次のとおりです。
Option Explicit
Sub main2()
Dim effectIniVar As Long
Dim waarschijnlijkheidIniVar As Long
Dim risicoIniVar As Long
Dim comboIniEffect As String, comboIniWaarschijnlijkheid As String '<--| just a guess
Dim myVal As Variant '<--| variable to hold value returned by Index function
comboIniEffect = 3 '<--| following on my guess
comboIniWaarschijnlijkheid = "D" '<--| following on my guess
With Worksheets("RisicoMatrix")
If Not FindIndex(.Range("A3:A10"), comboIniEffect, "R", effectIniVar) Then Exit Sub '<--| try finding the row match, otherwise exit
If Not FindIndex(.Range("B2:I2"), comboIniWaarschijnlijkheid, "C", waarschijnlijkheidIniVar) Then Exit Sub '<--| try finding the column match, otherwise exit
myVal = Application.WorksheetFunction.index(.Range("b3:I10"), effectIniVar, waarschijnlijkheidIniVar) '<--| get value by Index function
On Error GoTo errorhandler '<--| set your error handler
risicoIniVar = CLng(myVal) '<--| try forcing value returned by Index into a Long type
On Error GoTo 0 '<--| resume standard error handling
End With
MsgBox effectIniVar & ", " & waarschijnlijkheidIniVar & ", " & risicoIniVar '<--| if everything has worked, then show: row, column and value
Exit Sub
errorhandler:
MsgBox "Error: " & Err.Number & vbCrLf & Err.Description & vbCrLf & "while forcing '" & myVal & "' into a Long" '<--| show error conditions
End Sub
Function FindIndex(rng As Range, val As Variant, rowOrCol As String, index As Long) As Boolean
Dim found As Range
With rng
Set found = .Find(what:=val, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False)
If Not found Is Nothing Then
FindIndex = True
index = IIf(UCase(rowOrCol) = "R", found.Row - .Rows(1).Row + 1, found.Column - .Columns(1).Column + 1)
End If
End With
End Function
2番目のインスタンスで「Match」のスペルが間違っているようです。それを超えて、「働かない」よりも多くの情報を提供する必要があります。 – Rory
お返事ありがとうございます。ポストにコピーするときに誤字が入り込んだ。動作しないのは、 'runtime-13>型の不一致'エラーが発生し、デバッグ時に 'index'行が黄色で表示されます。私はラインが間違っていることを知っています。私の質問は: 'Match'を使わずにVBAで 'index'を適用するにはどうすればいいですか? – Ni3ls
次に、コードを修正して、「**動作しない」という**正確な意味を明確にすることをお勧めします。 ;) – Rory