1
2つ目のコードを1つのワークシートに追加しようとしていて、「曖昧な名前が検出されました」というエラーが発生し続けます。私は2つのコードを組み合わせる必要があるが、そうすることに問題があることを理解する。曖昧な名前が検出されました:Worksheet_change
Private Sub Worksheet_Change(ByVal Target As Range)
'are changes made within answer range?
Set isect = Application.Intersect(Target, Range("Answers"))
If Not (isect Is Nothing) Then
For Each chng In Target.Cells
'Get row number
startY = Impact.Range("Answers").Row
targetY = chng.Row
row_offset = (targetY - startY) + 1
rating_type = Impact.Range("Impacts").Cells(row_offset, 1)
If rating_type = "Major/V.High" Then cols = 16711884
If rating_type = "Significant/High" Then cols = 255
If rating_type = "Important/Moderate" Then cols = 49407
If rating_type = "Minor/Low" Then cols = 5287936
If rating_type = "" Then cols = 16777215
Impact.Range("Ratings").Cells(row_offset, 1).Interior.Color = cols
Impact.Range("Impacts").Cells(row_offset, 1).Interior.Color = cols
Next chng
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
' To Select Multiple Items from a Drop Down List in Excel
Dim Oldvalue As String
Dim Newvalue As String
Application.EnableEvents = True
On Error GoTo Exitsub
If Target.Address = "$C$2" Then
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
GoTo Exitsub
Else: If Target.Value = "" Then GoTo Exitsub Else
Application.EnableEvents = False
Newvalue = Target.Value
Application.Undo
Oldvalue = Target.Value
If Oldvalue = "" Then
Target.Value = Newvalue
Else
If InStr(1, Oldvalue, Newvalue) = 0 Then
Target.Value = Oldvalue & ", " & Newvalue
Else:
Target.Value = Oldvalue
End If
End If
End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub
期待していた誰かが、このエラーを回避するために、2つを結合する方法を知っている:ここでは2つのコード、他の下の一つがあります。
ありがとうございます!
シートモジュールに2つの個別の変更イベントコードを使用することはできません。複数の範囲で変更を追跡する必要がある場合は、IFおよびElseIfブロック内の1つの変更イベントコードで条件を結合できます。エラーのあいまいな名前は自明なので、同じ名前のマクロが2つあります。 – sktneer
同じ名前のプロシージャが2つあります。この時点では、この名前はイベントハンドラ用に予約されていても問題ありません。 1つのコードモジュールに同じ名前のプロシージャを2つ持つことはできません。ワークシートの変更でもっと多くのことを行う必要がある場合は、新しいコードを既存の 'Worksheet_Change'ハンドラにコピーします。すでに存在するコードとどのように組み合わされるべきかだけを知っています。 – GSerg