如何在Excel 2003中更改我的代码以允许粘贴到多个单元格?

存在一个小问题。 如果我尝试粘贴到下面的代码范围内的多个单元格,我得到一个运行时错误13,types不匹配。 该范围内的单元格可能具有X以外的其他数据,但是我只希望在单元格包含X时出现超链接。如果我只在单元格中键入X或者一次粘贴到一个单元格,则可以正常工作。 我将有时候想要将其他文本粘贴到这个范围内的多个单元格中。 感谢Remnant对原始代码的帮助。 这最后一道障碍将使我清楚。 谢谢。

Private Sub Worksheet_Change(ByVal Target As Range) Dim rangeLimit As Range Set rangeLimit = Range ("B9:B37,C9:C37,D9:D37,E9:E37,F9:F37,G9:G37,H9:H37,I9:I37,J9:J37,K9:K37,L9:L37,M9:M37") If Not Intersect(rangeLimit, Target) Is Nothing Then If Target = "x" Or Target = "X" Then Target.Hyperlinks.Add Anchor:=Target, Address:="", SubAddress:="Exceptions!A1", TextToDisplay:=Target.Value End If End If End Sub 

尝试对原始代码进行此修改。

 Private Sub Worksheet_Change(ByVal Target As Range) Dim rangeLimit As Range Dim cl As Range Set rangeLimit = Range("B9:B37,C9:C37,D9:D37,E9:E37,F9:F37,G9:G37,H9:H37,I9:I37,J9:J37,K9:K37,L9:L37,M9:M37") If Not Intersect(rangeLimit, Target) Is Nothing Then For Each cl In Target If cl = "x" Or cl = "X" Then cl.Hyperlinks.Add Anchor:=cl, Address:="", SubAddress:="Exceptions!A1", TextToDisplay:=cl.Value End If Next cl End If End Sub 

我会这样(未经testing):

 Private Sub Worksheet_Change(ByVal Target As Range) Dim rangeLimit As Range dim c as range Set rangeLimit = Range("B9:M37") If Not Intersect(rangeLimit, Target) Is Nothing Then for each c in Intersect(rangeLimit, Target) If c.value = "x" Then c.Hyperlinks.Add Anchor:=c, Address:="", SubAddress:="Exceptions!A1", TextToDisplay:=c.Value End If next c End If End Sub 

当你粘贴一个范围,“目标”是一组单元格 – 不只是一个单元格。 如果您知道此代码适用于一个单元格,则可以遍历范围目标中的所有单元格,并在每个单元格上调用If语句。