programing

배열에 문자열이 있는지 확인하는 방법

minecode 2021. 1. 17. 10:46
반응형

배열에 문자열이 있는지 확인하는 방법


중복 가능성 :
MS Access VBA 배열에서 문자열을 검색하는 방법

현재 Excel 매크로 작업 중이며 다음과 같은 방법을 찾을 수 없습니다. if array.contains(mystring)

나는 다음을 쓰고, 그것은 나에게 메시지 "Invaild 한정자"및 하이라이트 제공 Mainfram직후을If

Dim Mainfram(4) As String

Mainfram(0) = "apple"

Mainfram(1) = "pear"

Mainfram(2) = "orange"

Mainfram(3) = "fruit"

    For Each cel In Selection
        If Mainfram.Contains(cel.Text) Then
            Row(cel.Row).Style = "Accent1"
        End If
    Next cel

선택은 열입니다

누구 도와 주나요?

안녕하세요, JP 귀하의 제안을 시도했으며 Object required라고 말했습니다. 그리고 If IsInArray (cell.Text, Mainfram) 강조 표시 한 다음 여기에 내 전체 코드가 있습니다.

Sub changeRowColor()

Columns("B:B").Select

Dim cel As Excel.Range
Dim Mainfram(4) As String

Mainfram(0) = "apple"
Mainfram(1) = "pear"
Mainfram(2) = "orange"
Mainfram(3) = "Banana"

For Each cel In Selection
    If IsInArray(cell.Value, Mainfram) Then
        Rows(cel.Row).Style = "Accent1"
    End If
Next cel

End Sub

Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean

    IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)

End Function

신경 쓰지 마, 바보 같은 오류를 찾았 어 ... 어쨌든 고마워


매우 유사한 질문에 대한 내 대답 의 코드 사용 :

Sub DoSomething()
Dim Mainfram(4) As String
Dim cell As Excel.Range

Mainfram(0) = "apple"
Mainfram(1) = "pear"
Mainfram(2) = "orange"
Mainfram(3) = "fruit"

For Each cell In Selection
  If IsInArray(cell.Value, MainFram) Then
    Row(cell.Row).Style = "Accent1"
  End If
Next cell

End Sub

Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
  IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function

JOIN사용하는 또 다른 간단한 방법INSTR

Sub Sample()
    Dim Mainfram(4) As String, strg As String
    Dim cel As Range
    Dim Delim As String

    Delim = "#"

    Mainfram(0) = "apple"
    Mainfram(1) = "pear"
    Mainfram(2) = "orange"
    Mainfram(3) = "fruit"

    strg = Join(Mainfram, Delim)
    strg = Delim & strg

    For Each cel In Selection
        If InStr(1, strg, Delim & cel.Value & Delim, vbTextCompare) Then _
        Rows(cel.Row).Style = "Accent1"
    Next cel
End Sub

Use the Filter() method - http://msdn.microsoft.com/en-us/library/aa164525(v=office.10).aspx


I'm afraid I don't think there's a shortcut to do this - if only someone would write a linq wrapper for VB6!

You could write a function that does it by looping through the array and checking each entry - I don't think you'll get cleaner than that.

There's an example article that provides some details here: http://www.vb6.us/tutorials/searching-arrays-visual-basic-6

ReferenceURL : https://stackoverflow.com/questions/11109832/how-to-find-if-an-array-contains-a-string

반응형