2014-02-13 3 views
0

В разделе «Год» кода внизу находится ошибка. Я назвал каждый рабочий лист после года, т.е. 2010, 2011-2012. Я получаю ошибку времени выполнения 13. Я знаю, что я делаю что-то неправильно с отправкой данных на конкретный рабочий лист. Любая помощь будет очень полезна.Ошибка времени выполнения 13 VBA Excel 2007

Option Explicit 
Dim WrkSheet As Worksheet 

Private Sub CommandButton1_Click() 
    Application.EnableEvents = False 

    Dim ssheet As Workbook 
    Dim cellVal1 As String, cellVal2 As String, cellVal3 As String, cellVal4 As String, cellVal5 As String, cellVal6 As String, cellVal7 As String, cellVal8 As String, cellVal9 As String, cellVal10 As String, cellVal11 As String, cellVal12 As String 
    Dim cellVal13 As String, cellVal14 As String 

    Dim shtCmb As String 
    Dim RwLast As Long 

    shtCmb = Me.Year.Value 
    If shtCmb = "" Then 
     MsgBox "Please choose a Year.", vbOKOnly 
     Me.Year.SetFocus 
    End If 

    cellVal1 = Me.Year.Text 
    cellVal2 = Me.Reason_RRT_Called.Text 
    cellVal3 = Me.Me.Type_Of_Recomendations.Text 
    cellVal4 = Me.Documentation_On_Templates.Text 
    cellVal5 = Me.MD_Notified.Text 
    cellVal6 = Me.Location.Text 
    cellVal7 = Me.Code_Rapid_Response.Text 
    cellVal8 = Me.Report_Sent_To_QM.Text 
    cellVal9 = Me.Vital_Signs_Documneted.Text 
    cellVal10 = Me.Assessments_Completed.Text 
    cellVal11 = Me.Response_Time.Text 
    cellVal12 = Me.Date_Of_Incedent.Text 
    cellVal13 = Me.Patients_Name.Text 
    cellVal14 = Me.Unit_Location.Text 

    RwLast = Worksheets(shtCmb).Range("B" & Worksheets(shtCmb).Rows.Count).End(xlUp).Row 

    Worksheets(shtCmb).Range("B" & RwLast + 1).Value = cellVal1 
    Worksheets(shtCmb).Range("H" & RwLast + 1).Value = cellVal2 
    Worksheets(shtCmb).Range("K" & RwLast + 1).Value = cellVal3 
    Worksheets(shtCmb).Range("L" & RwLast + 1).Value = cellVal4 
    Worksheets(shtCmb).Range("N" & RwLast + 1).Value = cellVal5 
    Worksheets(shtCmb).Range("E" & RwLast + 1).Value = cellVal6 
    Worksheets(shtCmb).Range("D" & RwLast + 1).Value = cellVal7 
    Worksheets(shtCmb).Range("G" & RwLast + 1).Value = cellVal8 
    Worksheets(shtCmb).Range("I" & RwLast + 1).Value = cellVal9 
    Worksheets(shtCmb).Range("J" & RwLast + 1).Value = cellVal10 
    Worksheets(shtCmb).Range("M" & RwLast + 1).Value = cellVal11 
    Worksheets(shtCmb).Range("A" & RwLast + 1).Value = cellVal12 
    Worksheets(shtCmb).Range("C" & RwLast + 1).Value = cellVal13 
    Worksheets(shtCmb).Range("F" & RwLast + 1).Value = cellVal14 

    Application.EnableEvents = True 

End Sub 

Private Sub optionCancel_Click() 
    Unload Me 
End Sub 

Private Sub UserForm_Initialize() 
    Dim SH As Worksheet 
    Dim Entry As Variant 

    'Auto date fill text box 
    'Date_Of_Incedent.Value = Format(Date, "mm/dd/yyyy") 

    'Year(Year(Now)) - Will return the name of the current Year 
    For Each SH In ThisWorkbook.Worksheets 
     If SH.Name = Year(Year(Now)) Then 
      Set WrkSheet = SH 
      Exit For 
     End If 
    Next 

    'fill the combo box 
    With Me.Year 
     For Each Entry In [List1] 
      .AddItem Entry 
     Next Entry 
     .Value = Year(Year(Now)) 
    End With 

    'fill the combo box 
    With Me.Reason_RRT_Called 
     For Each Entry In [List2] 
      .AddItem Entry 
     Next Entry 
    End With 

    'fill the combo box 
    With Me.Type_Of_Recomendations 
     For Each Entry In [List3] 
      .AddItem Entry 
     Next Entry 
    End With 

    'fill the combo box 
    With Me.Documentation_On_Templates 
     For Each Entry In [List4] 
      .AddItem Entry 
     Next Entry 
    End With 

    'fill the combo box 
    With Me.MD_Notified 
     For Each Entry In [List5] 
      .AddItem Entry 
     Next Entry 
    End With 

    'fill the combo box 
    With Me.Location 
     For Each Entry In [List6] 
      .AddItem Entry 
     Next Entry 
    End With 

    'fill the combo box 
    With Me.Code_Rapid_Response 
     For Each Entry In [List7] 
      .AddItem Entry 
     Next Entry 
    End With 

    'fill the combo box 
    With Me.Report_Sent_To_QM 
     For Each Entry In [List8] 
      .AddItem Entry 
     Next Entry 
    End With 

    'fill the combo box 
    With Me.Vital_Signs_Documneted 
     For Each Entry In [List9] 
      .AddItem Entry 
     Next Entry 
    End With 

    'fill the combo box 
    With Me.Assessments_Completed 
     For Each Entry In [List10] 
      .AddItem Entry 
     Next Entry 
    End With 

    'fill the combo box 
    With Me.Response_Time 
     For Each Entry In [List11] 
      .AddItem Entry 
     Next Entry 
    End With 

End Sub 
+0

Моя ошибка приходит вверх на «(год (сейчас)) - возвращает имя текущего года Для каждого SH В этой книге. Рабочие листы Если SH.Name = Год (год (сейчас)) Затем Set WrkSheet = SH Выход для Конец Если –

ответ

2
Year(Year(Now())) 

потерпит неудачу, потому что год() требует Даты как вход!

Вы, вероятно, нужно:

Dim s As String 
s = CStr(Year(Now)) 

, а затем:

For Each SH In ThisWorkbook.Worksheets 
    If SH.Name = s Then 
     Set WrkSheet = SH 
     Exit For 
    End If 
Next 
+0

Спасибо, что отлично поработал !! Не могли бы вы помочь с другой проблемой? Новое требование заключалось в том, что combobox должен быть заменен списком, который позволит многократные выборы и вводится в одну ячейку. Тот, о котором я говорю, - это Me.Reason_RRT_Called Любая помощь будет очень полезна. –

+0

Прошу прощения ............... UserForms не моя сила ......... если никто не отвечает, откройте новое сообщение. –

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