获取编译错误:检测到不明确的名称:Worksheet_Selection更改

附件是我在工作表中使用的代码。 这代码到最后一点工作。 最后一个代码的第一行是错误的地方… Private Sub Worksheet_SelectionChange(ByVal Target As Range)我想知道为什么,它似乎与其他两个主题。

如果任何人都可以帮助,不胜感激。

 Option Explicit Dim PreviousValue Private Sub Worksheet_Change(ByVal Target As Range) Dim sLogFileName As String, nFileNum As Long, sLogMessage As String Dim NewVal On Error GoTo Whoa Application.EnableEvents = False sLogFileName = ThisWorkbook.path & Application.PathSeparator & "Open Order Log.txt" If Not Target.Cells.Count > 1 Then If Target.Value <> PreviousValue Then If Len(Trim(Target.Value)) = 0 Then _ NewVal = "Blank" Else NewVal = Target.Value sLogMessage = Now & Application.UserName & _ " changed cell " & Target.Address & " from " & _ PreviousValue & " to " & NewVal nFileNum = FreeFile Open sLogFileName For Append As #nFileNum Print #nFileNum, sLogMessage Close #nFileNum End If End If LetsContinue: Application.EnableEvents = True Exit Sub Whoa: MsgBox Err.Description Resume LetsContinue End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) PreviousValue = Target(1).Value End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim sLogFileName As String End Sub If FileLen(sLogFileName) > 3145728# Then sLogFileName = "Open Order Log - " & Format(Date, "dd-mm-yyyy") Name sLogFileName As "ThisWorkbook.path & Application.PathSeparator & \Temp\Open Order Log - " & Format(Date, "dd-mm-yyyy") End If End Sub 

Dim sLogFileName As String后,你已经closures了End Sub ,这是错误的。

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim sLogFileName As String If FileLen(sLogFileName) > 3145728# Then sLogFileName = "Open Order Log - " & Format(Date, "dd-mm-yyyy") Name sLogFileName As "ThisWorkbook.path & Application.PathSeparator & \Temp\Open Order Log - " & Format(Date, "dd-mm-yyyy") End If End Sub 

解决了这个问题,在End Sub之后的两个Subs被之前的post删除了,并且具有相同的名字…

 Private Sub Size_Adjust(ByVal Target As Range) Dim sLogFileName As String If FileLen(sLogFileName) > 3145728# Then sLogFileName = "Open Order Log - " & Format(Date, "dd-mm-yyyy") Name sLogFileName As "ThisWorkbook.path & Application.PathSeparator & \Temp\Open Order Log - " & Format(Date, "dd-mm-yyyy") End If End Sub 

您已经定义了以下代码:

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) PreviousValue = Target(1).Value End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim sLogFileName As String 'other stuff End Sub 

您有两个不同的子工具, 称为Worksheet_SelectionChange 。 您需要确定要使用哪个,并重命名/删除另一个。