我正在尝试声明三个应用程序.匹配行号的总和。如果我将所有这些部分添加到手表中,我会看到每个匹配项的值(例如:1、1、1(,但是当我将它们相加时,我在手表值中得到"0"。下面是调试时的相关代码和监视结果。
Dim S13 As Integer
S13 = Application.Match(K(3), TF13, 0) + Application.Match(K(2), TC13, 0) + Application.Match(K(1), TB13, 0)
Dim SD13 As Integer
SD13 = S13 / 3
手表: 表达式 : 值 : 类型 手表 : 应用程序匹配(K(1(, TB13, 0( : 1 : 变体/双精度 监视 : 应用程序匹配(K(2(, TC13, 0( : 1 : 变体/双手表 :应用程序匹配(K(2(, TF13, 0( : 1 : 变体/双
手表 : S13 : 0 : 整数
监视 :SD13 :0 : 整数
我在 S13 上尝试了"Long"和其他声明,但我真的只需要它是"整数",因为这个数字应该超过类型字符限制。
顺便说一句,我试图在下面声明一个简单的公式,并且仍然在手表中得到"0"作为值。
Dim X As Integer: X = 3 / 3
Dim Y As Integer: Y = 1 + 1 + 1
Dim Z As Integer: Z = "1" + "1" + "1"
也就是说,我不太确定Application.Match与该问题有任何关系。尽管如此,我想我会为我的情况提及它。
更新:新的测试场景
我打开一个新的工作簿和模块,输入下面的代码并得到了预期的结果,"2"表示 TEST1,"1"表示 TEST2。看起来我可能有一个影响我的其他工作簿的其他问题。有人有想法帮助我开始调查吗?
Sub TEST()
Dim TEST1 As Integer: TEST1 = 1 + 1 ' Works
Dim TEST2 As Integer: TEST2 = 2 / 2 ' Works
MsgBox TEST1 & " : " & TEST2 ' Message is "2 : 1"
End Sub
问题已解决:我
解决了我的问题,提供的信息看不到(抱歉(。我的代码是这样的:
ElseIf...
'Dim don't go here...
Dim S13 As Integer: S13 = Application.Match(K(3), TF13, 0) _
+ Application.Match(K(2), TC13, 0) _
+ Application.Match(K(1), TB13, 0)
Dim SD13 As Integer: SD13 = S13 / 3
ElseIf Not IsError(Application.Match(K(3), TF13, 0)) _
And Not IsError(Application.Match(K(2), TC13, 0)) _
And Not IsError(Application.Match(K(1), TB13, 0)) Then
If <<some formula to help me validate match above (e.g.: all true and all same number)>> Then
Worksheets("MATCHES").Range("$A" & ARR & ":" & "$F" & ARR) _
= TR13.Range("$A" & SD13 & ":" & "$F" & SD13)
End If
ElseIf...
该代码将我的声明放在我的 ElseIf/Then 之前(到以前的ElseIf中(,而不是将其放在需要声明变量的Then之后。以下是更正。
ElseIf...
ElseIf Not IsError(Application.Match(K(3), TF13, 0)) _
And Not IsError(Application.Match(K(2), TC13, 0)) _
And Not IsError(Application.Match(K(1), TB13, 0)) Then
'Dim go here...
Dim S13 As Integer: S13 = Application.Match(K(3), TF13, 0) _
+ Application.Match(K(2), TC13, 0) _
+ Application.Match(K(1), TB13, 0)
Dim SD13 As Integer: SD13 = S13 / 3
If <<some formula to help me validate match above (e.g.: all true and all same number)>> Then
Worksheets("MATCHES").Range("$A" & ARR & ":" & "$F" & ARR) _
= TR13.Range("$A" & SD13 & ":" & "$F" & SD13)
End If
ElseIf...
Dim S13 As Integer
S13 = CInt(Application.Match(K(3), TF13, 0)) + CInt(Application.Match(K(2), TC13, 0)) + CInt(Application.Match(K(1), TB13, 0))
Dim SD13 As Integer
SD13 = S13 3
请尝试以下操作:
Dim S1 As Integer
Dim S2 As Integer
Dim S3 As Integer
S1 = Application.Match(K(3), Range("TF13"), 0)
S2 = Application.Match(K(2), Range("TC13"), 0)
S3 = Application.Match(K(1), Range("TB13"), 0)
Dim SD13 As Integer
SD13 = (S1 + S2 + S3) / 3
msgbox "S1: " & S1 & ", S2: " & S2 & ", S3: " & S3 & ", SD13: " & SD13
现在 S1、S2、S3 和 SD13 的结果如何?
好的,所以我解决了我的问题,所提供的信息看不到这个问题。不好意思。
我的代码是这样的:
ElseIf...
'Dim don't go here...
Dim S13 As Integer: S13 = Application.Match(K(3), TF13, 0) _
+ Application.Match(K(2), TC13, 0) _
+ Application.Match(K(1), TB13, 0)
Dim SD13 As Integer: SD13 = S13 / 3
ElseIf Not IsError(Application.Match(K(3), TF13, 0)) _
And Not IsError(Application.Match(K(2), TC13, 0)) _
And Not IsError(Application.Match(K(1), TB13, 0)) Then
If <<some formula to help me validate match above (e.g.: all true and all same number)>> Then
Worksheets("MATCHES").Range("$A" & ARR & ":" & "$F" & ARR) _
= TR13.Range("$A" & SD13 & ":" & "$F" & SD13)
End If
ElseIf...
这段代码将我的声明放在我的 ElseIf/Then 之前(到以前的ElseIf中(,而不是将其放在显然需要声明变量的Then之后。以下是更正。
ElseIf...
ElseIf Not IsError(Application.Match(K(3), TF13, 0)) _
And Not IsError(Application.Match(K(2), TC13, 0)) _
And Not IsError(Application.Match(K(1), TB13, 0)) Then
'Dim go here...
Dim S13 As Integer: S13 = Application.Match(K(3), TF13, 0) _
+ Application.Match(K(2), TC13, 0) _
+ Application.Match(K(1), TB13, 0)
Dim SD13 As Integer: SD13 = S13 / 3
If <<some formula to help me validate match above (e.g.: all true and all same number)>> Then
Worksheets("MATCHES").Range("$A" & ARR & ":" & "$F" & ARR) _
= TR13.Range("$A" & SD13 & ":" & "$F" & SD13)
End If
ElseIf...