2014-12-02 11 views
0

因此,我基本上試圖插入註釋併爲基本符合我在代碼中設置的條件的單元格着色。我搜索了一切,但似乎找不到一個可行的解決方案。將註釋和顏色插入到滿足If ... Then語句的單元格中

這裏是我到目前爲止的代碼,我在下面的代碼中提到了我想要的顏色和評論。我設置這個宏的方式是從工作表中獲取「調用」。我使用了Selection_Change功能。所以我有一個範圍,其中一列中有人輸入數據,然後輸入任何數據在下面的宏運行,並檢查它是否在限制範圍內。

如果它不在Excel表格(「M7」和「M19」)中設置的範圍內,我想要一個顏色來突出顯示該單元格中的特定單元格和設置註釋。我將如何去做這件事?我非常感謝幫助。謝謝!

此外,我發現了一個代碼,在網上,我的問題是,當我使用

ActiveCell.AddComment ("Text") 

我不斷收到錯誤,並且還後,我進入我的數據點,我按回車,註釋進入下一個細胞。

這裏是被稱爲宏:

Option Explicit 
Public Sub OutofControlRestofData() 
Dim lRow As Long 
Dim lstRow As Long 
Dim data As Variant 
Dim ul As Variant 
Dim ll As Variant 
Dim wb As Workbook 
Dim ws As Worksheet 


With Application 
.ScreenUpdating = True 
.EnableEvents = True 
.DisplayAlerts = True 

End With 

Set ws = Sheets(2) 
ws.Select 

lstRow = WorksheetFunction.Max(1, ws.Cells(Rows.Count, "R").End(xlUp).Row) 
For lRow = 1 To lstRow 
data = Cells(lRow, "E").Value 
ul = Range("M7") 
ll = Range("M19") 

If data > ul Or data < ll Then 

If IsNumeric(data) = True And data Like "" = False Then 

MsgBox ("There was an Out of Control Point at " & Cells(lRow, "C").Value) 

'THIS IS WHERE I THINK THE COMMENTING AND COLOR CODE WOULD BE 

End If 
End If 

Next lRow 

End Sub 

而且,這裏是調用宏代碼:

Private Sub Worksheet_Change(ByVal Target As Range) 

If Not Intersect(Target, Target.Worksheet.Range("E39:E138")) Is Nothing Then 

Run ("OutofControlRestofData") 

End If 

End Sub 

回答

1

有幾件事要注意。

  1. 您應該練習使用tab來嵌套您的If聲明。使 更清楚地看到。
  2. 你可以繼續並結合這兩個子。只要確保將代碼放在工作表代碼頁面(不在工作簿模塊中)。
  3. 如果您已有「Target」,則不需要循環,因爲這是您想要檢查的單元格(範圍)。
  4. 您已將Change子句定義爲僅在數據輸入介於E39E138之間時才起作用。這會一直如此嗎?如果您想要更靈活地增加工作表和數據,請考慮使用整個column E

代碼:

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim ws As Worksheet 
Set ws = Sheets(2) 

If Not Intersect(Target, ws.Range("E39:E138")) Is Nothing Then 


    Dim lRow As Long 
    Dim lstRow As Long 
    Dim data As Variant 
    Dim ul As Variant 
    Dim ll As Variant 
    Dim wb As Workbook 
    Dim ws As Worksheet 


    With Application 
     .ScreenUpdating = True 
     .EnableEvents = True 
     .DisplayAlerts = True 
    End With 

    data = Target.Value 
    ul = Range("M7").Value 
    ll = Range("M19").Value 

    If data > ul Or data < ll Then 
     If IsNumeric(data) = True And data Like "" = False Then 
      MsgBox ("There was an Out of Control Point at " & Target.Address) 
      Target.Interior.Color = RGB(255, 0, 0) 
      Target.AddComment ("This is an Out of Control Point") 
     End If 
    End If 
End If 

End Sub 
+0

謝謝!奇蹟般有效!!!非常感謝您的及時答覆和質量幫助! – adit123 2014-12-02 15:06:06

1

只是要在安全方面,我建議你改變你的這裏的代碼包括value

data = Range("E" & lRow).Value 
ul = Range("M7").Value 
ll = Range("M19").Value 

然後在那個地方,你想要做的顏色/評論的東西:

Range("E" & lRow).Interior.Color = RGB(255, 0, 0) 
Range("E" & lRow).AddComment("This is an Out of Control Point") 
+0

你好@ Chrismas007!再次感謝您回覆我的帖子。我知道這些帖子看起來很簡單,但我對vba來說是全新的,幾個月前我開始了,並且仍然掌握了一些東西。所以上面的代碼工作,但是當我輸入另一個數據點。它說「運行時錯誤1004應用程序定義或對象定義的錯誤」。 – adit123 2014-12-02 14:39:22

+0

哪條線突出顯示爲錯誤? – Chrismas007 2014-12-02 14:39:54

+0

此行:範圍(「E」&lRow)。AddComment(「這是一個失控點」) – adit123 2014-12-02 14:40:57