У меня есть этот кусок кода, который работает просто отлично:Сравнить ячейки в VBA для условного форматирования
Function sshProblem(rng As Range) As Boolean
Dim portStatus As String
portStatus = rng.Value
Dim deviceType As String
deviceType = Cells(Application.Caller.Row, 3).Value
Dim sshDevices As Variant
sshDevices = Array("linux", "vmw", "docker", "unix")
If StrComp(portStatus, "No") = 0 Then
sshProblem = Not IsError(Application.Match(deviceType, sshDevices, 0))
End If
End Function
Теперь код должен масштабироваться, и вместо того, чтобы хранить значения в массиве sshDevices, эти значения должны находиться в колонке в другом листе, так что я пытался заменить
sshDevices = Array("linux", "vmw", "docker", "unix")
с
sshDevices = Worksheets("Config sheet").Range("I2:I11").Value
на это указывает на то, что условное форматирование перестало работать. Как я могу получить значения из диапазона ячеек и вставить их в переменную для сравнения?
Ни внушения это трудящиеся. Условное форматирование не происходит. Не уверен, что массив импортирован правильно или если фрагмент кода, используемый для сравнения, совместим с типами массивов Im, использующими –
. Ну, ваше сообщение было о том, как хранить значения в массиве 'sshDevices' из диапазона, а не жестко их кодировать с функцией 'Array()', жалуясь на вашу попытку ('sshDevices = Worksheets (« Config sheet »). Range (« I2: I11 »). Value') не работает, так как он остановил некоторое условное форматирование, размещать любую информацию о. Мой ответ сказал вам, почему ваш способ заполнения диапазона массивов не будет работать как «хороший» и даст вам правильный синтаксис, чтобы массив возвращался из «вертикального» диапазона, работающего как ваш оригинальный «массив» («linux», «vmw», «docker», «unix»). Думаю, я ответил на ваш вопрос – user3598756