Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行时错误13 VBA Excel 2007_Vba_Excel - Fatal编程技术网

运行时错误13 VBA Excel 2007

运行时错误13 VBA Excel 2007,vba,excel,Vba,Excel,代码底部的年份部分是错误发生的地方。我以一年为单位命名了每个工作表,即2010年、2011年和2012年。我得到一个运行时错误13。我知道我在将数据发送到特定工作表时出错。任何帮助都将非常感激 Option Explicit Dim WrkSheet As Worksheet Private Sub CommandButton1_Click() Application.EnableEvents = False Dim ssheet As Workbook Dim ce

代码底部的年份部分是错误发生的地方。我以一年为单位命名了每个工作表,即2010年、2011年和2012年。我得到一个运行时错误13。我知道我在将数据发送到特定工作表时出错。任何帮助都将非常感激

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
将失败,因为Year()需要一个日期作为输入

您可能需要:

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

我的错误出现在'Year(Year(Now))-将返回此工作簿中每个SH的当前年份名称。如果SH.name=Year(Year(Now)),则工作表将WrkSheet=SH Exit设置为End IfThanks,效果很好!!你能帮我解决另一个问题吗?新的要求是将组合框替换为允许多个选择并输入单个单元格的列表框。我说的是我。我非常感谢你打电话求助的原因。很抱歉…………用户表单不是我的强项…………如果没有人回复,请打开一个新帖子。
For Each SH In ThisWorkbook.Worksheets
    If SH.Name = s Then
        Set WrkSheet = SH
        Exit For
    End If
Next