Как получить найденный массив для выполнения функции в VBA Excel - PullRequest
0 голосов
/ 16 апреля 2019

Ячейка "wi.Row (foundValue.Row) .Columns (" H ")" содержит значения "T" и "K". Эти цифры относятся к функциям Examin01 и Examin 02 соответственно. Если ячейка содержит «T», то выполняется функция «Examine01». Если ячейка содержит обе цифры «T, K», то обе функции должны выполняться одна за другой.

Моя проблема двоякая: во-первых, как заставить макрос перейти в соответствующую функцию, например, «Examine01», после того, как будет найдено значение ячейки, например «T». И во-вторых, как я могу заставить макрос выполнять обе функции одну за другой, если в ячейке обнаружены обе фигуры?

Sub Examine()

 Dim t As Integer
 Dim Rule as Variant
 Dim RuleArray(1) as Variant

 Set ws = Worksheets("R")
 Set wt = Worksheets("G")
 Set wi = Worksheets("R")

 RuleArray(1)= ("T,K")

 t = 2


 Do
   For Each cell In ws.Range("A" & t)
   Set foundValue = wi.Range("A1:A75").Find(cell.Value)
       If Not foundValue Is Nothing Then
           For Each Rule in RuleArray
                   If IsInArray(RuleArray, wi.Row(foundValue.Row).Columns("H"),0)=True
....'the code that makes the array jump into the relevant function??
....


 Funtion IsInArray(ValToBeFound as Variant, arr as Variant) as Boolean
 IsInArray=(UBoound(Filter(arr, ValToBeFound)))
 End Funtion


 Function Exam01(ByVal t as Long, ByVal ws as Worksheet) as Boolean 
 E01 = True
 If ws.Range("B" & t).Value = 0 Then E01 = False
 End If
 End Function


 Function Exam02(ByVal t as Long, ByVal ws as Worksheet) as Boolean 
 E02 = True
 If ws.Range("B" & t).Value > 30 Then E02 = False
 End If
 End Function
...