2017-10-18 92 views
0

我希望突出顯示某個值在不同列中輸入值時電子表格中的某些單元格。我意識到這可以通過條件格式來完成,但由於公司內部的情況,我必須使用VBA。 (電子表格被傳遞到其他程序無法讀取條件格式)每當ANYTHING被輸入到列L.例如當其他值存在時,VBA突出顯示單元格

我想強調,我國的數值範圍內11組不同的列,當它日期輸入L2,然後C2,J2,K2等高亮顯示黃色。

下面是我想到的..不幸的是,當我運行宏時,沒有任何反應。我看到它運行,但我沒有得到任何結果 - 甚至沒有錯誤消息。預先感謝您抽出時間來幫助我!

Dim rng As Range, r As Range 

Set wb = ThisWorkbook 
Set sht1 = wb.Sheets("From GIS") 
Set sht2 = wb.Sheets("To MapCall") 

Set rng = Intersect(sht2.UsedRange, Range("L:L")).Cells 


For Each r In rng 
    If r.Value = "" Then 
     Cells(r.Row + 1, "C,J,K,Q,AI,AV,AW,AX,AY,AZ,BR").Interior.Color = RGB(255, 255, 0) 

    End If 
Next r 
+0

你必須使用'Cells(r.Row + 1,「C」)'etc - 單獨的行或設置一個循環。在你的'rng'行中,你也應該指定一張表。 – SJR

回答

1

請試試這個,改變r.Value =「」到r.Value <>「」只要你想將顏色如果事情是在範圍中輸入而不是當它是空白。根據你實際需要調整它。我也不確定你爲什麼使用r.Row + 1?這不是你想要的,在下面的代碼中用i = r.Row替換i = r.Row + 1。

此外,聲明代碼中使用的所有變量也是一種很好的做法。

Dim wb As Workbook 
Dim sht1 As Worksheet, sht2 As Worksheet 
Dim rng As Range, r As Range, clrRng As Range 
Dim i As Long 
Set wb = ThisWorkbook 
Set sht1 = wb.Sheets("From GIS") 
Set sht2 = wb.Sheets("To MapCall") 

Set rng = Intersect(sht2.UsedRange, Range("L:L")).Cells 
For Each r In rng 
    If r.Value = "" Then 
     i = r.Row + 1 
     Set clrRng = Union(Range("C" & i), Range("J" & i & ":K" & i), Range("Q" & i), Range("AI" & i), Range("AV" & i & ":AZ" & i), Range("BR" & i)) 
     clrRng.Interior.Color = RGB(255, 255, 0) 
    End If 
Next r 
+0

太棒了!這正是我所尋找的!爲了澄清,我使用r.Row + 1,因爲我想讓它跳過標題行。如果有一個更簡單的方法來做到這一點,我是全部耳朵。我在工作中不使用VBA,但已經被要求爲此項目學習。這個網站是無價的!謝謝。 – Rmoore

+0

@Rmoore您好,歡迎您!很高興它的工作。堅持下去,如果它適合你的方式。 – sktneer

0

一種方法是create a union of ranges

Sub test() 

    Dim Rng As Range, r As Range, uRng As Range, row As Long 

    Set wb = ThisWorkbook 
    Set sht1 = wb.Sheets("From GIS") 
    Set sht2 = wb.Sheets("To MapCall") 

    Set Rng = Intersect(sht2.UsedRange, Range("L:L")).Cells 

    For Each r In Rng 
     If r.Value <> "" Then 
      row = r.row 

      Set uRng = Union(Cells(row, "C"), Cells(row, "J")) 'Etc... Keep going with each column 
      uRng.Interior.Color = RGB(255, 255, 0) 

     End If 
    Next r 

End Sub 
+0

這樣就越來越接近我正在尋找的東西了!至少我得到一些突出顯示的單元格!它看起來像只突出了單元格PAST範圍區域..所以如果J2到J10在範圍內,J11只被高亮顯示。 – Rmoore

+0

過去,如下一行?如果是這樣,那是因爲你的代碼需要r.row + 1.你可以刪除+1。我更新了'row = r.row'而不是'row = r.row + 1'的代碼。看看是否有幫助。 –

+0

我剛剛重讀你的問題。當'L'不是空白時,你想要突出顯示單元格。所以我更新了你的代碼部分從'If r.Value ='「Then'到'If r.Value <>」「Then' –

相關問題