获取编译错误:检测到不明确的名称: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
。 您需要确定要使用哪个,并重命名/删除另一个。