2014-02-13 128 views
0

在年底部分的代码是错误发生的地方。在一年之后,我已经为每个工作表命名,即2010,2011.2012。我得到一个运行时错误13.我知道我做错了将数据发送到特定的工作表。任何帮助将大大appriciated。运行时错误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在ThisWorkbook.Workheets 如果SH.Name = Year(Year(Now))Then Set WrkSheet = SH Exit For End If –

回答

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

Thanks that worked great!你能帮助解决另一个问题吗?新的要求是将一个组合框替换为一个允许多个选择并输入到一个单元中的列表框。我正在谈论的是Me.Reason_RRT_Called 任何帮助将大大appriciated。 –

+0

对不起............... UserForms不是我的实力.........如果没有人回复,请打开一个新帖子。 –