2017-08-30 99 views
0

需要插入VDB(i,35)=時刪除整行內部顏色變色指數22(珊瑚)的語句。根據列值更改整行的內部顏色VBA

我需要在這個塊內執行這一步,而不需要在新塊中添加代碼(除非絕對必要),因爲工作表有20K個條目。我假設,因爲這是我確定物品何時處於「已刪除」狀態的位置,並且將「已刪除」放在第35列中,我應該能夠在同一步驟/區塊中對其進行着色,並且這將是最有效的方法。我可能是錯誤的..

是否有另一行我可以在最後一行後添加,這將彩色索引35中的這些條目=「已刪除」嗎?

我曾嘗試將vDB(i,35)作爲範圍傳遞給另一個變量,並對其進行設置,然後使用if =刪除以更改entirerow.interior.color index = 22,但無法獲取措辭正確,並可能採取錯誤的做法。我仍然處於學習的曲線中,但在仔細研究小組之前,試圖弄清楚我自己的問題,但我似乎無法做到。

這裏是剪切它。

'Execute Find (Vlookup) 

For i = 1 To UBound(vDB, 1) 
'If sht.Cells(i, 1).Value <> "" Then 
    If vDB(i, 1) <> "" Then 
     Set rng = rngData.Find(vDB(i, 1), LookIn:=xlValues, Lookat:=xlWhole) 'Matches entire contents of cell for an exact match 
     If Not rng Is Nothing Then 
      'If found return value of column 9 of ABC Recalc Cycle Count Remainder Browse (offset by 2), into ABC Matrix monthly ABC Code column, as determined by variable 
      vDB(i, ABCCodeCell) = rng.Offset(, 7) 
      'If found, return the value of column 7 of ABC Recalc Cycle Count Remainder Browse (offset by 2), into ABC Matrix column 27 
      vDB(i, 27) = rng.Offset(, 5) 
      'If found, return the value of column 11 of ABC Recalc Cycle Count Remainder Browse (offset by 2), into ABC Matrix column 34 
      vDB(i, 33) = rng.Offset(, 9) 
      'If found, place value of ABCMatrixMonthSelect.ComboBox1 in column AO Col Index 41 
      vDB(i, 41) = ABCMatrixMonthSelect.ComboBox1.value 
     Else 
      vDB(i, 35) = "Deleted" 
      vDB(i, 41) = ABCMatrixMonthSelect.ComboBox1.value 
      With vDB(i, 1) = sht.Cells.Interior.Color = RGB(247, 119, 109) 'Light Red 
      End With 
     End If 
    End If 
    If vDB(i, ABCCodeCell) = vDB(i, lastMonthABCCode) Then 
    vDB(i, 36) = "No" 
    Else 
    vDB(i, 36) = "Yes" 
    End If 
DoEvents 
Next 
rngDB = vDB 

Dim LR As Long 
LR = sht.Cells(Rows.Count, 1).End(xlUp).Row 
sht.Cells.FormatConditions.Delete 
With sht.Range("1:" & LR) 
    .FormatConditions.Add Type:=xlExpression, Formula1:="=$AI1=""Deleted""" 'Searches for value "Deleted" in Range 1 to last row 
    With .FormatConditions(.FormatConditions.Count) 
     .SetFirstPriority 
     With .Interior 
      .Color = RGB(247, 119, 109) 'Light Red 
     End With 
    End With 
End With 

'Reset Excel Status Bar 
Application.StatusBar = False 
e here 
+0

您是否嘗試過使用條件格式? – Cyril

+0

我需要這個VBA來獲得報告。不是我需要設置的東西,或者依賴於用戶來設置的,除非您通過VBA說我可以設置條件格式,對着色行進行着色......這可能會有所不同。這是一個巨大的宏,從各種報告中獲取價值,並逐月編譯。在35中的「已刪除」值的行將突出顯示,直到處理報告的下個月,然後我將它們清除,重新運行以識別新的「刪除:」的步驟。但是我可以輕鬆地擦除它們價值35(因爲這是隱藏的我自己的意圖),如果這是更好的 – SharePoint0508

+0

我打開任何最有意義的方式,是最好的辦法,並且運作最快,因爲這是一個如此大的工作表。 – SharePoint0508

回答

0

如果你可以使用條件格式,使用規則類型:使用公式確定哪些單元格格式化,在公式編輯欄中鍵入= $ AJ35 =「刪除」,然後定義你的範圍,例如作爲= 1:1000。 $在公式中的位置是關鍵。然後,您將選擇滿足條件時發生的情況並設置規則。

您可以從VBA做到這一點,設置條件格式,如:

Dim LR as Integer 
LR = Cells(Rows.Count, 1).End(xlUp).Row 'just finding the row # of the last row 
sht.Cells.FormatConditions.Delete 
With sht.Range("1:" & LR) 'The range you're working with... specify the Rows() to ensure the whole row is colored 
    .FormatConditions.Add Type:=xlExpression, Formula1:="=$AI1=""Deleted""" 'Where you put the cell you want to evaluate and criteria 
    With .FormatConditions(.FormatConditions.Count) 
     .SetFirstPriority 
     With .Interior 
      .Color = RGB(0, 70, 255) 'Arbitrary; you will need to find the specific color you want. 
      .TintAndShade = 0.8 
     End With 
    End With 
End With 

注意,我刪除每次現有的條件。

此外,另一種選擇是隻說,不使用條件格式:

With sht.Rows(i).Interior 
    .Color=RGB(0,255,0) 'arbitrary color 
    .TintAndShade = 0.8 
End With 

編輯:有了您的調整代碼和渴望列1到35進行彩色編碼:

Else 
    vDB(i, 35).Value = "Deleted" 
    With sht.Range(sht.Cells(i,1),sht.Cells(i,35)).Interior 
     .Color = RGB(247, 167, 184) 'light red 
     .TintAndShade = 0.8 
    End With 
End If 

我在想你的vDB有什麼問題,所以也許它會更適合使用單元格?

Else 
    Cells(i, 35).Value = "Deleted" 
    With sht.Range(sht.Cells(i,1),sht.Cells(i,35)).Interior 
     .Color = RGB(247, 167, 184) 'light red 
     .TintAndShade = 0.8 
    End With 
End If 

同理:

Dim i, LR as Integer 
LR = Cells(Rows.Count,1).End(xlUp).Row 'Assumes row 1 is contiguous... probably not, given the rest of this code 
For i = 1 To LR 
    If Cells(i, 1) <> "" Then 
     Set rng = rngData.Find(Cells(i, 1), LookIn:=xlValues, Lookat:=xlWhole) 
     If Not rng Is Nothing Then 
      Cells(i, ABCCodeCell).Value = rng.Offset(, 7).Value 
      Cells(i, 27).Value = rng.Offset(, 5).Value 
      Cells(i, 34).Value = rng.Offset(, 9).Value 
     Else 
      Cells(i, 35).Value = "Deleted" 
      With sht.Range(sht.Cells(i,1),sht.Cells(i,35)).Interior 
       .Color = RGB(247, 167, 184) 'light red 
       .TintAndShade = 0.8 
      End With 
+0

該值在AI或列索引35中,但它需要被表達,並且在列AI內的任何單元格的值爲「已刪除」時,它需要是淺紅色/珊瑚色索引22。只需要對單元格着色,我需要在AI的值被刪除的任何行中突出顯示整行或從A到AI的範圍,直到表單中包含的最後一行。一個月又一個月,最後一行將移動,因爲每個月更新大約增加1500行。 – SharePoint0508

+0

我嘗試使用條件格式,我沒有看到在哪裏定義範圍,或設置整個行。我似乎無法得到這個工作 – SharePoint0508

+0

它也給第二行的語法錯誤:與sht.Range(sht.Rows(1),sht.Rows(sht.Cells(sht.Rows.Count.End( xlUp).Row,1)) – SharePoint0508