Я сравниваю разделенный запятыми список, чтобы увидеть, соответствует ли какое-либо из значений одному значению. Я считаю, что проблема возникает с этой строкой кода:
If INDEXLIST(damageListCell, ",", n) = CStr(Range(damageTypeCell).Value) Then
INDEXLIST
- это функция, которая возвращает строку строку, которая является концом от начала списка, разделенного запятыми. Этот список находится по адресу damageListCell
, который является строкой, которая ссылается на блок в Excel.
damageTypeCell
- это аргумент, который передается в эту функцию в виде строки и является идеей блока в Excel, например, "D5".
Я не думаю, что CStr(Range(damageTypeCell).Value)
возвращает строку данных и соответствующую ячейку, и поэтому выражение просто не работает.
Я пробовал все способы, которыми могу придумать, чтобы передать эту продажу, и в качестве строки это включает:
CStr(Range(damageTypeCell).Value)
Range(damageTypeCell)
Range(damageTypeCell).Value
For i = 1 To list_langth
n = n + 1
If INDEXLIST(damageListCell, ",", n) = CStr(Range(damageTypeCell).Value) Then
Damage_Fill = 1
Exit For
Else
Damage_Fill = 0
End If
Next i
End Function
Function INDEXLIST(strList As String, strSeparator As String, lngIndex As
Long) As String
'Syntax
'=INDEXLIST(List,Separator,Index)
Dim ListArray() As String
ListArray() = Split(strList, strSeparator)
INDEXLIST = ListArray(lngIndex - 1)
End Function
Public Function CountChrInString(Expression As String, Character As String) As Long
'
' ? CountChrInString("a/b/c", "/")
' 2
' ? CountChrInString("a/b/c", "\")
' 0
' ? CountChrInString("//////", "/")
' 6
' ? CountChrInString(" a / b / c ", "/")
' 2
' ? CountChrInString("a/b/c", " / ")
' 0
'
Dim iResult As Long
Dim sParts() As String
sParts = Split(Expression, Character)
iResult = UBound(sParts, 1)
If (iResult = -1) Then
iResult = 0
End If
CountChrInString = iResult
End Function
Excel возвращает # ЗНАЧЕНИЕ! Однако, когда эта функция запускается, она должна возвращать 1 или 0.