2015-05-11 5 views
0
Private Sub cmdsub_Click() 
UnProtect 
'Copy input values to sheet. 
Dim lrow As Long 
Dim ws As Worksheet 
Dim Lvalue As Date 
Lvalue = Now 
If Me.cbox4.Value = "pending" Then 
Set ws = ThisWorkbook.Sheets("Pending") 
Else 
Set ws = ThisWorkbook.Sheets("Completed") 
End If 
lrow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 
If Me.txt13.Value = "" Then 
Me.txt13.SetFocus 
MsgBox "'Mandatory", vbOKOnly, "Required Field" 
Exit Sub 
ElseIf Me.cbox1.Value = "" Then 
Me.cbox1.SetFocus 
MsgBox "'Mandatory...", vbOKOnly, "Required Field" 
Exit Sub 
ElseIf Me.cbox2.Value = "" Then 
Me.cbox2.SetFocus 
MsgBox "'Mandatory...", vbOKOnly, "Required Field" 
Exit Sub 
ElseIf Me.cbox2.Value = "" Then 
Me.cbox2.SetFocus 
MsgBox "'Mandatory...", vbOKOnly, "Required Field" 
Exit Sub 
ElseIf Me.txt1.Value = "" Then 
Me.txt1.SetFocus 
MsgBox "'Mandatory...", vbOKOnly, "Required Field" 
Exit Sub 
ElseIf Me.txt2.Value = "" Then 
Me.txt2.SetFocus 
MsgBox "'Mandatory...", vbOKOnly, "Required Field" 
Exit Sub 
ElseIf Me.txt3.Value = "" Then 
Me.txt3.SetFocus 
MsgBox "'Mandatory...", vbOKOnly, "Required Field" 
Exit Sub 
ElseIf Me.txt4.Value = "" Then 
Me.txt4.SetFocus 
MsgBox "'Mandatory...", vbOKOnly, "Required Field" 
Exit Sub 
ElseIf Me.txt5.Value = "" Then 
Me.txt5.SetFocus 
MsgBox "'Mandatory...", vbOKOnly, "Required Field" 
Exit Sub 
ElseIf Me.txt6.Value = "" Then 
Me.txt6.SetFocus 
MsgBox "'Mandatory...", vbOKOnly, "Required Field" 
Exit Sub 
ElseIf Me.txt7.Value = "" Then 
Me.txt7.SetFocus 
MsgBox "'Mandatory...", vbOKOnly, "Required Field" 
Exit Sub 
ElseIf Me.cbox4.Value = "" Then 
Me.cbox4.SetFocus 
MsgBox "'Mandatory...", vbOKOnly, "Required Field" 
Exit Sub 
End If 
With ws 
    .Cells(lrow, 1).Value = Me.lbl1.Caption 
    .Cells(lrow, 2).Value = Me.txt13.Value 
    .Cells(lrow, 3).Value = cbox1.Value 
    .Cells(lrow, 4).Value = cbox2.Value 
    .Cells(lrow, 5).Value = cbox3.Value 
    .Cells(lrow, 6).Value = Me.txt1.Value 
    .Cells(lrow, 7).Value = Me.txt2.Value 
    .Cells(lrow, 8).Value = Me.txt3.Value 
    .Cells(lrow, 9).Value = Me.txt4.Value 
    .Cells(lrow, 10).Value = Me.txt5.Value 
    .Cells(lrow, 11).Value = Me.txt6.Value 
    .Cells(lrow, 12).Value = Me.txt7.Value 
    .Cells(lrow, 13).Value = cbox4.Value 
    .Cells(lrow, 23).Value = Me.txt15.Value 
    .Cells(lrow, 24).Value = "Unknown" 
      End With 
'Clear input controls. 
Me.lbl1.Caption = Now() 
cbox1.Value = "" 
cbox2.Value = "" 
cbox3.Value = "" 
Me.txt1.Value = "" 
Me.txt2.Value = "" 
Me.txt3.Value = "" 
Me.txt4.Value = "" 
Me.txt5.Value = "" 
Me.txt6.Value = "" 
Me.txt7.Value = "" 
Me.txt13.Value = "" 
Me.txt15.Value = "" 
cbox4.Value = "" 
Cmb1.Value = "" 
MoveAndDelete 
cbox1.Visible = False 
cbox2.Visible = False 
cbox3.Visible = False 
txt1.Visible = False 
txt2.Visible = False 
txt3.Visible = False 
txt4.Visible = False 
txt5.Visible = False 
txt6.Visible = False 
txt7.Visible = False 
cbox4.Visible = False 
txt13.Visible = False 
Label1.Visible = False 
Label2.Visible = False 
Label3.Visible = False 
Label4.Visible = False 
Label5.Visible = False 
Label6.Visible = False 
Label7.Visible = False 
Label8.Visible = False 
Label9.Visible = False 
Label10.Visible = False 
Label11.Visible = False 
Label12.Visible = False 
txt15.Visible = False 
Label21.Visible = False 
cmdsub.Visible = False 
cmdnxt.Visible = False 
abc 
bcd 
Protect 
Application.DisplayAlerts = False 
    End Sub 

    Sub UnProtect() 
    Dim wSheet As Worksheet 
    For Each wSheet In Worksheets 
    wSheet.UnProtect Password:="Passworld" 
    Next wSheet 
    End Sub 

Sub Protect() 
Dim wSheet As Worksheet 
For Each wSheet In Worksheets 
    wSheet.Protect Password:="Passworld" 
Next wSheet 
End Sub 

Когда я запускаю приведенный выше код он дает мне ошибку:Подстрочный из диапазона и Лист получает защищенный

runtime error 9. Subscript out of range.

Я не могу отладить. Я попробовал несколько возможностей, но бесполезно. Также у меня есть этот защитный и защитный лист, что происходит, если у меня есть другой лист, когда я использую этот макрос, он также защищается.

+1

Можете ли вы дать нам, какая линия выдает ошибку и какова ее деталь? – qshngv

+0

Это не делает никаких ошибок как таковых, но лист автоматически защищается, когда я пытаюсь добавить или скопировать что-то, что дает ошибку, что лист защищен. – user2842252

+0

Листы защищаются, потому что у вас есть этот «Защитить» в конце кода. Если вы не хотите, чтобы это было защищено, просто удалите эту строку. – qshngv

ответ

0

Проверьте значение значения скорости роста (ws.Cells (Rows.Count, 1) .End (xlUp) .Offset (1, 0) .Row) 0 в функции смещения может вызвать вашу проблему, удалить ее как это не требуется.

+0

Я попытался удалить 0 из смещения, но все же я получаю ту же ошибку. Ошибка выполнения 9. – user2842252

+0

Также может произойти ошибка, если первая строка - номер строки 1. Это приведет к тому, что значение lrow будет равным 0, что приведет к ошибкам в .Cells (lrow, 1). части вашей процедуры. Но это не помешает вам отлаживать код. Конечно, нет способа отлаживать код? – Tom

+0

Есть ли что-нибудь еще для этого. Поскольку данные начинаются со второй строки после заголовка. – user2842252

Смежные вопросы