Excel 获取编译错误:检测到模棱两可的名称:工作表\u选择更改

Excel 获取编译错误:检测到模棱两可的名称:工作表\u选择更改,excel,vba,Excel,Vba,附件是我在工作表中使用的代码。这段代码一直到最后一位工作。最后一个代码的第一行是错误所在专用子工作表\u选择更改(ByVal目标作为范围)我想知道为什么,它似乎适用于其他两个主题 如果有人能帮忙,我将不胜感激 Option Explicit Dim PreviousValue Private Sub Worksheet_Change(ByVal Target As Range) Dim sLogFileName As String, nFileNum As Long, sLogMes

附件是我在工作表中使用的代码。这段代码一直到最后一位工作。最后一个代码的第一行是错误所在<代码>专用子工作表\u选择更改(ByVal目标作为范围)我想知道为什么,它似乎适用于其他两个主题

如果有人能帮忙,我将不胜感激

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
选项显式
模糊先前值
私有子工作表_更改(ByVal目标作为范围)
Dim sLogFileName为字符串,nFileNum为长,sLogMessage为字符串
昏暗的纽瓦尔
关于错误转到哇
Application.EnableEvents=False
sLogFileName=ThisWorkbook.path&Application.PathSeparator&“未结订单日志.txt”
如果不是Target.Cells.Count>1,则
如果Target.Value PreviousValue,则
如果Len(Trim(Target.Value))=0,则_
NewVal=“Blank”否则NewVal=Target.Value
sLogMessage=Now&Application.UserName&_
“已更改单元格”&目标地址&“发件人”&_
上一个值&“to”&新值
nFileNum=FreeFile
打开附加为#nFileNum的sLogFileName
打印文件、慢消息
关闭#nFileNum
如果结束
如果结束
让我们继续:
Application.EnableEvents=True
出口接头
哇
MsgBox错误说明
继续
端接头
专用子工作表\u选择更改(ByVal目标作为范围)
PreviousValue=目标(1)。值
端接头
专用子工作表\u选择更改(ByVal目标作为范围)
将sLogFileName设置为字符串
端接头
如果FileLen(sLogFileName)>3145728,则
sLogFileName=“未结订单日志-”&格式(日期,“dd-mm-yyyy”)
将sLogFileName命名为“ThisWorkbook.path&Application.PathSeparator&\Temp\Open Order Log-”&格式(日期,“dd-mm-yyyy”)
如果结束
端接头

您在
变暗的sLogFileName之后关闭了
结束子项
,这是错误的

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
之后的两个Sub被之前的帖子以相同的名字删除了

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

您有两个不同的sub,都称为
工作表\u SelectionChange
。您需要确定要使用哪一个,然后重命名/删除另一个。

我不得不问,为什么它是错误的?我是自学成才的,所以在某些情况下,我往往会错过一些基础知识。。。虽然我似乎知道很多,但我只知道我做了什么:)谢谢。你看到我对你上一个问题的答案了吗?它解决了在一次编辑中跟踪多个单元格的问题。最近我问了多个问题。昨天的代码相同。我现在发表评论,谢谢:)您有两个名为“工作表\u SelectionChange”的事件——这就是“模棱两可的名称”所指的。