2017-03-01 158 views
0

我在Workbook_Open上運行只讀模板文件,該文件將被重新用於新客戶端。我在Name = .Range("L2")這一行發現錯誤:「運行時錯誤'91':對象變量或塊變量未設置」,我不完全確定它爲什麼會這樣。我相信我只是簡單地忽略了一些非常簡單的東西,但任何幫助都將不勝感激,如果有更高效的編寫此代碼的方式,請告訴我。我渴望學習。Excel VBA - 不將數據寫入單元格的輸入框

Private Sub Workbook_Open() 
Dim tB As Workbook 
Dim ws As Worksheet 
Dim DailyWS As Worksheet 
Dim Client As String 
Dim Name As Range 

Set tB = ThisWorkbook 
With tB 
    Set DailyWS = .Sheets("Daily Tracker") 
End With 'tB 
With DailyWS 
    Name = .Range("L2") 
End With 'DailyWS 


If Len(Name.Value) = 0 Then 
    Client = InputBox("Enter your name :", "Client's Name Please.") 
    If Len(Client) = 0 Then 'Checking if Length of name is 0 characters 
     MsgBox "Please enter a valid name!", vbCritical 
     Goto Tryagain 
    End If 
    Name.Value = Client 
    If Client = vbNullString Then 
    MsgBox ("DO NOT CONTINUE!" & _ 
    "" & vbCrLf & _ 
    "DO NOT SAVE THIS FILE! " & vbCrLf & _ 
    "" & vbCrLf & _ 
    "AT PROMPT PLEASE ENTER A NAME!" & vbCrLf & _ 
    ""), vbOKOnly + vbCritical, "!! Name Required !!" 
    Goto Tryagain 
    End If 
Else 
MsgBox "Not Empty (Test)" 
End 
End If 
end sub 
+1

做錯誤說的是什麼:'Set Name = .Range(「L2」)' –

+0

我覺得自己像個白癡。我以爲我嘗試過。顯然不是。謝謝。 – BetaOp9

+0

如果你想提交作爲答案,我會爲你做。 :-) – BetaOp9

回答

4

Name是一個範圍對象和所需要的所有對象設置:

Set Name = .Range("L2") 

一個說明,我會小心使用在VBA中使用的詞語。 Name在很多地方都有使用。我會使用一個不會取代現有命令的變量,如Nme

+3

'Name'實際上是一個* type *,在Excel對象模型中。考慮到VBA期望指定類型名稱的上下文(例如「AsTypeClause」),我認爲VBA不會有任何問題告訴來自「Excel.Name」類型的局部變量「Name」 –

+0

@ Mat'sMug與你相比,我是一個黑客,所以我會推遲你的知識。但是,我個人仍然會避免它,只是因爲我的ocd會需要它。 –

+0

Pffft ..你太謙虛了!我只是擅長*使它看起來像*我知道我的東西哈哈 - 我真的看着你,和其他幾個VBA常客!我不是MVP! ;-) –

相關問題