2016-10-19 5 views
1

条件付き書式のための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 = Worksheets("Config sheet").Range("I2:I11").Value 

にして

sshDevices = Array("linux", "vmw", "docker", "unix") 

を交換しようとしました条件付き書式設定が機能しなくなったことを示します。どのようにしてセルの範囲から値を取り出し、それらを変数に挿入して比較することができますか?

答えて

0

私はあなたのコードを達成しようとしているものと100%わからないんだけど、私はセル範囲から値を拾うことがどのようにあなたの質問

にお答えし、変数に挿入します比較のために?

あなたはにFor Eachループ、似たものを使用することができます:あなたはsshDevices配列を維持したい場合は、あなたがそれを行うと、個別に各項目を追加するためにFor Eachループを使用することができます

dim myCell as range, myRange as range 
set myRange = Worksheets("Config sheet").Range("I2:I11") 

For Each myCell in myRange 
    sshDevice = myCell.Value 
    'do stuff you need with sshDevice 
Next myCell 

dim counter as int 
counter = 0 
For Each myCell in myRange 
    sshDevice(counter) = myCell.Value 
    counter = counter + 1 
next myCell 
0

使用

sshDevices = Application.Transpose(Worksheets("Config sheet").Range("I2:I11").Value) 

はちょうどこの方法は、あなたは関係なく、しかし、どちらの提案返された配列の形Array()機能

+0

に影響を与えるOption Base1ベース配列を持っているだろうことを通知します人々を働かせている。条件付き書式設定が行われていません。配列が正しくインポートされているかどうか、または比較に使用されたコードチャンクが配列タイプImと互換性があるかどうかわからない –

+0

あなたの投稿は、 'sshDevices'配列の値をハードコードではなく範囲から保存する方法でしたRange( "I2:I11")。Value')は、あなたがしなかったいくつかの条件付き書式設定を停止したので動作しませんでした( 'sshDevices = Worksheets(" Config Sheet "))についての情報を投稿してください。私の答えは、配列の範囲指定の仕方が "良い"ものとして機能しない理由を説明し、配列を元の 'Array(" linux "、" "vmw"、 "ドッカー"、 "unix") 'one。私はあなたの質問に答えたと思う – user3598756

関連する問題