2014-02-13 151 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不是我的實力.........如果沒有人回覆,請打開一個新帖子。 –