2017-09-28 9 views
0

誰かが私にこれを理解させてくれることを願っています。このコード行に2番目のインスタンスでExcelエラーが発生する

Run-Time error '1004': 

Application-defined or object-defined error 

ポイント:私が間違っているのですが、私のプログラムは私というエラーを与えているかわからない私のプログラムは最初(、最初のインスタンスのために働く

lr.Range(1, 1).Value = Date 

あなたがそれを実行する時)。そして、あなたがプロセスを繰り返すならば、このエラーを投げてください。助けてください!私は1週間ここにこだわってきた。

ここにはコマンドボタンに配置された完全なコードがあります。基本的に、コードは、ユーザーが別のユーザーフォームから入力したいくつかの詳細を記録します。あなたが保護されたシートでlistrowを追加しようとするあなたの次のコードで

Dim ws As Worksheet 
Dim ws1 As Worksheet 
Dim lo As ListObject 
Dim lr As ListRow 
Dim X As String 


Set ws1 = Sheets("ACCOUNTS") 
Set ws = Sheets("OB RECORDS") 


ws1.Activate 
ws1.Range("B1").Select 

Do Until ActiveCell.Value = Me.TextBox1.Text 
ActiveCell.Offset(1, 0).Select 
If IsEmpty(ActiveCell.Value) Then 
MsgBox "No Time-In Found", vbCritical 
Me.TextBox1.Text = "" 
Me.TextBox1.SetFocus 
Exit Sub 
End If 
Loop 

ActiveCell.Offset(0, -1).Select 
X = ActiveCell.Value 
ws.Activate 
ws.Range("E6").Select 

Do Until X = Me.txtcont.Text 'txtcont value is being populated at a different form (frmpass.txtcont.Text = Me.cmbstaff.Text) 

ActiveCell.Offset(1, 0).Select 

If IsEmpty(ActiveCell.Value) Then 

MsgBox "No account matches this password. Please try again.", vbCritical 
Me.TextBox1.Text = "" 
Me.TextBox1.SetFocus 
Exit Do 
Exit Sub 

End If 
Loop 

Range("I" & (ActiveCell.Row)).Select 
If IsEmpty(ActiveCell) Then 

MsgBox "Unable to Time-Out this time because you still have an unclosed O.B filed." & vbNewLine & "Please Time-In and close first.", vbCritical 

Unload Me 
frmOB.Show 

Exit Sub 
End If 

Set lo = ws.ListObjects(1) 
Set lr = lo.ListRows.Add 

ws.Unprotect "321321" 

lr.Range(1, 1).Value = Date 'this is where the error is and I don't know why 
lr.Range(1, 2).Value = frmout.TextBox1.Text 
lr.Range(1, 3).Value = UCase(frmout.cmbstaff.Text) 
lr.Range(1, 4).Value = UCase(frmout.TextBox2.Text) 
lr.Range(1, 5).Value = UCase(frmout.TextBox3.Text) 
lr.Range(1, 5).Value = UCase(frmout.TextBox3.Text) 
lr.Range(1, 6).Value = Time 
lr.Range(1, 6).NumberFormat = "h:mm:ss AM/PM" 
lr.Range(1, 8).Value = UCase(frmout.TextBox4.Text) 
ActiveWorkbook.Save 
MsgBox "O.B log successfully recorded. Take care!", vbInformation 
ws.Protect "321321" 

Unload Me 

frmOB.Show 

Exit Sub 

Application.ScreenUpdating = True 
+0

おそらく無関係なのが、 '出口はすぐに意味Do'が評価されることはありません'出口を、以下のSub'表示した後''このパスワードと一致するアカウントはありません。 ''あなたのコードは継続しています。 – YowE3K

+0

リストオブジェクトではあまり機能しませんでした。 'lr.Range(1、1)'を 'lr.Columns(1)'に変更するとそれが修正されますか?とにかくそれは単一行であるので、それはただ一つのセルを返すべきです。 – AntiDrondert

答えて

0

Set lo = ws.ListObjects(1) 
Set lr = lo.ListRows.Add 

ws.Unprotect "321321" 

だからあなたのaddメソッドのdoesntの仕事とLRは何もありません。 lr.rangeを使用しようとすると、Excelがエラーをスローします。新しい行を追加する前に

ちょうどプロテクト解除を置く:あなたのエラーに

ws.Unprotect "321321" 

Set lo = ws.ListObjects(1) 
Set lr = lo.ListRows.Add 
関連する問題