Я пытаюсь объявить сумму трех Application.Match номеров строк.Если я добавлю все эти части в Часы , я увижу Значения для каждого из моих матчей (например, 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
Часы: Выражение: Значение: Тип
Часы: Application.Match (K (1), TB13, 0): 1: вариант / двойной
Часы: Application.Match (K (2), TC13, 0): 1: вариант / двойной
Часы: Application.Match (K (2), TF13, 0):1: Вариант / Двойной
Часы: S13 : 0: Целое число
Часы: SD13: 0: Целое число
Я пробовал "Long" и другие объявления на S13, но мне действительно нужно, чтобы оно было "Integer", потому что это число должно превышать ограничение символов типа.
BTW , я попытался описать простую формулу, подобную приведенной ниже, и до сих порполучить "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 ) вместо размещения его после Тогда где переменные должны были быть объявлены.Ниже приведена коррекция.
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...