2014-12-02 56 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