簡體   English   中英

循環並比較數組中的值

[英]Loop and compare values from array

在Sheet1中,我有一列包含1-20行中具有常規編號的填充單元格。 看下面的圖片:

在此處輸入圖片說明

在Sheet2中,我還有一列,單元格從5-25開始。 如果我在這些單元格中輸入了一些值,則在Sheet1中,將具有相同值的單元格更改為“ D”列的背景色。 看下面的圖片,看看它是如何工作的:

在此處輸入圖片說明在此處輸入圖片說明

我正在用這段代碼來做到這一點:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 And Target.Row >= 5 Then
    If Target.Offset(0, 0).Text <> "" Then
    Dim n As Long
        For n = 5 To 25
            If Target.Offset(0, 0).Value = Worksheets("Sheet1").Range("A" & n).Value Then
                Worksheets("Sheet1").Range("A" & n & ":D" & n).Interior.ColorIndex = 3
            End If
        Next n
    End If
End If

End Sub

現在,我想每次激活Sheet1時都要進行某種檢查,以某種方式檢查是否在Range(“ A1:A20”)中所有單元格的Interior.ColorIndex = xlNone都沒有值。這些單元格在某些單元格中的值Interior.ColorIndex = 3 我當時正在考慮將這些值放入一個數組中,然后循環遍歷以比較值,但是我對VBA還是陌生的,因此歡迎您提供幫助。 如果有更好的解決方案,那就加油吧。

另外,我想使一段代碼的情況下,如果我有17個替換值12 Interior.ColorIndex細胞含有12去xlNone和17 Interior.ColorIndex變為“ 3 ”。

因此,歡迎提出任何建議。

正如Pnuts所說,不需要VBA。

最簡單的顏色處理方法是使用“ 公式”進行“ 條件格式化 ”,將一張紙上A列中的單元格的值與要更改顏色並應用格式的行中的值進行比較。

看到:

但是,如果要使用VBA,則可以在工作簿和工作表事件處理程序中執行此操作。

工作表選擇/激活:

在Excel在Sheet1上,右鍵單擊底部的工作表名稱,然后單擊查看代碼 這將在VB編輯器中打開Sheet1的類模塊。

在左側代碼模塊的頂部,從下拉列表中選擇“ 工作表 ”,然后在右側下拉列表中單擊“ 激活”事件處理程序。

這將創建一個空的子例程,該例程將在您每次選擇Sheet1工作表時由Excel執行。

在該代碼中,您可以進行檢查。

sheet2上的單元格更改:

要使代碼每次在Sheet2上進行單元更改時都運行,您需要打開sheet2的類模塊,從左側的下拉菜單中選擇“ 工作表 ”,然后為事件進行更改

每當您更改sheet2上的單元格時,該代碼就會運行,在這里,您將編寫代碼來首先檢查Target參數是否在您的范圍內,如下所示:

If not Application.Intersect(Target, "A5:25") Then Exit Sub

接下來,您要編寫代碼以檢查該值是否不再匹配,然后重置顏色。

HTH

菲利普

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM