2012-08-31 30 views
0

附加是我在工作表中使用的代码。这代码直到最后一点工作。最后一个代码的第一行是错误的地方...... Private Sub Worksheet_SelectionChange(ByVal Target As Range)我想知道为什么,它似乎与其他两个主题一起工作。获取编译错误:检测到模糊名称:Worksheet_Selection更改

如果有人能帮助它,将不胜感激。

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 
+0

您是否看到我对您上一个问题的回答?它解决了在一个编辑中跟踪多个单元。 –

+0

哪个问题,我问到最近多个问题。 –

+0

昨天输入相同的密码。 http://stackoverflow.com/questions/12203020/i-have-a-code-to-log-usage-in-an-excel-sheet-but-i-get-one-bug-and-one-issue/ 12205874#12205874 –

回答

2

你有Dim sLogFileName As String后关闭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 
+0

我必须问,但为什么它错了?我自学成功,所以我倾向于忽略它在某些情况下的基础知识......尽管我似乎知道很多,但我只知道我做了什么:)谢谢。 –

+0

你的答案是否解决?我只问,因为我仍然得到同样的错误... –

0

解决了问题,两名替补是由前与后的同名取出End 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 
0

您已经定义了下面的代码:

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。您需要确定您想要使用哪一个,并重命名/删除另一个。