2017-03-01 6 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'は実際にはExcelオブジェクトモデルの*タイプ*です。私は、VBAが型名が指定されることを期待する文脈(例えば、 "AsTypeClause")を与えられた場合、VBAが 'Excel.Name'型からローカル変数' Name'を伝えるのに何の問題もないと思います。 –

+0

@ Mat'sMug私はあなたに比べてハックですので、私はあなたの知識に遅れをとるでしょう。しかし、私は個人的にはまだそれを避けるだろう、なぜなら私のocdがそれを必要とするからだ。 –

+0

Pffft ..あなたはあまりにも謙虚だ!私はちょうど私が私のものを知っているように見える*に良いです。私はあなたと、いくつかの他のVBAレギュラーを実際に見上げます!私はMVPではない! ;-) –

関連する問題