Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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
Vba 运行时错误';1004';:方法';范围';对象的'_全球';失败6_Vba_Excel - Fatal编程技术网

Vba 运行时错误';1004';:方法';范围';对象的'_全球';失败6

Vba 运行时错误';1004';:方法';范围';对象的'_全球';失败6,vba,excel,Vba,Excel,好的。我希望这是最后一期。我有我的代码在另一个领域,并得到了一些很大的帮助。我想他(拉塔菲亚)很忙,今天还没有回音。所以我想我会在这里转载。我在RwLast=Range(“AI”&ActiveSheet.Rows.Count,2).End(xlUp).Offset(1,0).行中遇到此运行时错误。当我点击submit时,它也没有在下一行输入数据。它正在替换我不想要的第一行上的数据。填写和提交表单时,需要添加到每一行。任何帮助都将受到极大的感谢。excel工作表的代码如下所示

好的。我希望这是最后一期。我有我的代码在另一个领域,并得到了一些很大的帮助。我想他(拉塔菲亚)很忙,今天还没有回音。所以我想我会在这里转载。我在RwLast=Range(“AI”&ActiveSheet.Rows.Count,2).End(xlUp).Offset(1,0).行中遇到此运行时错误。当我点击submit时,它也没有在下一行输入数据。它正在替换我不想要的第一行上的数据。填写和提交表单时,需要添加到每一行。任何帮助都将受到极大的感谢。excel工作表的代码如下所示

           Option Explicit
Dim WrkSheet As Worksheet

Private Sub btnSubmit_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, cellVal15 As String, cellVal16 As String, cellVal17 As String, cellVal18 As String, cellVal19 As String, cellVal20 As String, cellVal21 As String, cellVal22 As String
Dim cellVal23 As String, cellVal24 As String, cellVal25 As String, cellVal26 As String, cellVal27 As String, cellVal28 As String, cellVal29 As String, cellVal30 As String, cellVal31 As String, cellVal32 As String, cellVal33 As String, cellVal34 As String

Dim shtCmb As String
Dim RwLast As Long

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

cellVal1 = Me.cmbListItem1.Text
cellVal2 = Me.cmbListItem2.Text
cellVal3 = Me.cmbListItem3.Text
cellVal4 = Me.TextBox31.Text
cellVal5 = Me.TextBox1.Text
cellVal6 = Me.TextBox2.Text
cellVal7 = Me.TextBox3.Text
cellVal8 = Me.TextBox4.Text
cellVal9 = Me.TextBox5.Text
cellVal10 = Me.TextBox6.Text
cellVal11 = Me.TextBox7.Text
cellVal12 = Me.TextBox8.Text
cellVal13 = Me.TextBox9.Text
cellVal14 = Me.TextBox10.Text
cellVal15 = Me.TextBox11.Text
cellVal16 = Me.TextBox12.Text
cellVal17 = Me.TextBox13.Text
cellVal18 = Me.TextBox14.Text
cellVal19 = Me.TextBox15.Text
cellVal20 = Me.TextBox16.Text
cellVal21 = Me.TextBox17.Text
cellVal22 = Me.TextBox18.Text
cellVal23 = Me.TextBox19.Text
cellVal24 = Me.TextBox20.Text
cellVal25 = Me.TextBox21.Text
cellVal26 = Me.TextBox22.Text
cellVal27 = Me.TextBox23.Text
cellVal28 = Me.TextBox24.Text
cellVal29 = Me.TextBox25.Text
cellVal30 = Me.TextBox26.Text
cellVal31 = Me.TextBox27.Text
cellVal32 = Me.TextBox28.Text
cellVal33 = Me.TextBox29.Text
cellVal34 = Me.TextBox30.Text

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

Worksheets(shtCmb).Range("AI" & RwLast + 1).Value = cellVal1
Worksheets(shtCmb).Range("AJ" & RwLast + 1).Value = cellVal2
Worksheets(shtCmb).Range("A" & RwLast + 1).Value = cellVal3
Worksheets(shtCmb).Range("AH" & RwLast + 1).Value = cellVal4
Worksheets(shtCmb).Range("B" & RwLast + 1).Value = cellVal5
Worksheets(shtCmb).Range("C" & RwLast + 1).Value = cellVal6
Worksheets(shtCmb).Range("D" & RwLast + 1).Value = cellVal7
Worksheets(shtCmb).Range("E" & RwLast + 1).Value = cellVal8
Worksheets(shtCmb).Range("F" & RwLast + 1).Value = cellVal9
Worksheets(shtCmb).Range("G" & RwLast + 1).Value = cellVal10
Worksheets(shtCmb).Range("H" & RwLast + 1).Value = cellVal11
Worksheets(shtCmb).Range("I" & RwLast + 1).Value = cellVal12
Worksheets(shtCmb).Range("J" & RwLast + 1).Value = cellVal13
Worksheets(shtCmb).Range("K" & RwLast + 1).Value = cellVal14
Worksheets(shtCmb).Range("L" & RwLast + 1).Value = cellVal15
Worksheets(shtCmb).Range("M" & RwLast + 1).Value = cellVal16
Worksheets(shtCmb).Range("N" & RwLast + 1).Value = cellVal17
Worksheets(shtCmb).Range("O" & RwLast + 1).Value = cellVal18
Worksheets(shtCmb).Range("P" & RwLast + 1).Value = cellVal19
Worksheets(shtCmb).Range("Q" & RwLast + 1).Value = cellVal20
Worksheets(shtCmb).Range("R" & RwLast + 1).Value = cellVal21
Worksheets(shtCmb).Range("S" & RwLast + 1).Value = cellVal22
Worksheets(shtCmb).Range("T" & RwLast + 1).Value = cellVal23
Worksheets(shtCmb).Range("U" & RwLast + 1).Value = cellVal24
Worksheets(shtCmb).Range("V" & RwLast + 1).Value = cellVal25
Worksheets(shtCmb).Range("W" & RwLast + 1).Value = cellVal26
Worksheets(shtCmb).Range("X" & RwLast + 1).Value = cellVal27
Worksheets(shtCmb).Range("Y" & RwLast + 1).Value = cellVal28
Worksheets(shtCmb).Range("Z" & RwLast + 1).Value = cellVal29
Worksheets(shtCmb).Range("AA" & RwLast + 1).Value = cellVal30
Worksheets(shtCmb).Range("AB" & RwLast + 1).Value = cellVal31
Worksheets(shtCmb).Range("AC" & RwLast + 1).Value = cellVal32
Worksheets(shtCmb).Range("AD" & RwLast + 1).Value = cellVal33
Worksheets(shtCmb).Range("AF" & RwLast + 1).Value = cellVal34

Application.EnableEvents = True

End Sub

Private Sub cmbListItem1_Change()

End Sub

Private Sub optionCancel_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()

    Dim SH As Worksheet
    Dim Entry As Variant

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

    'fill the combo box
    With Me.cmbListItem1
        For Each Entry In [List1]
            .AddItem Entry
        Next Entry
        .Value = MonthName(month(Now))
    End With
    'fill the combo box
    With Me.cmbListItem2
        For Each Entry In [List2]
            .AddItem Entry
        Next Entry
    End With
    'fill the combo box
    With Me.cmbListItem3
        For Each Entry In [List3]
            .AddItem Entry
        Next Entry
    End With

End Sub

我不是100%了解您的应用程序的设计,但我认为以下几点会有所帮助:

Range("AI" & ActiveSheet.Rows.Count, 2).End(xlUp).Offset(1, 0).Row
是无效的语法。我认为您需要的是
范围(“AI”&ActiveSheet.Rows.Count).End(xlUp).Offset(1,0).Row
。这样做的目的是查看第一个空行,它位于列
AI
中最后使用的行下方。但是它需要修改一下

Range
这里可能指的是
ActiveSheet
,它不是月工作表,而是用户表单所在的工作表。通常,
Range
activesheet.Range
(如果代码在
VBA
模块中)或它指的是输入它的工作表(如果它是在工作表模块中输入的),它是一种快捷方式,有时会很危险

一个好的做法是完全限定范围:
Worksheets(shtCmb).range(“AI”和Worksheets(shtCmb).Rows.Count).End(xlUp).Offset(1,0).Row
:这保证您查看的是目标工作表的最后一行,column
AI

那么,为什么要转到
lastrow+1
而不是
lastrow

还要记住,
整数
的范围被限制到
32767
,并且只要行号超过此值,就会出现错误。我会使用
Long
。实际上,
整数
在内部被转换为
Long
s(但如果它们超出范围,仍然会抛出错误!),所以为什么不首先使用Long呢

我希望这能让你开始,但请让我知道,如果有任何修改将有助于下面的评论

最好的, 伊奥尼斯

PS:同样,你做了太多费力的工作,也许考虑定义数组而不是所有这些变量。 编辑:

每个提交的条目跳过一行

这是因为它标识了
RwLast
,这是第一行的空单元格,并将新内容写入下面一行:

Worksheets(shtCmb).Range("AI" & RwLast + 1).Value = cellVal1
等等。要解决此问题,请更改

RwLast = Worksheets(shtCmb).Range("AI" & Worksheets(shtCmb).Rows.Count).End(xlUp).Offset(1, 0).Row

EDIT2:

添加
Application.EnableEvents=False
保证在执行
子BTNSSubmit\u Click()
时不会自动触发任何事件。然而,我们需要小心。子例程的启动方式如下:

Sub btnSubmit_Click()
    On Error GoTo errHandler
    Application.EnableEvents = False
就这样结束

errHandler:
    Application.EnableEvents = True

End Sub

然后,在
btnsupmit\u单击
中没有任何内容会更改
shtCmb
行2
,除非
WrkSheet=Worksheets(shtCmb)
rblast=1
。目前尚不清楚
WrkSheet
是如何定义的,但我想您已经注意到了。

您能否详细说明一下您希望通过
范围(“AI”&ActiveSheet.Rows.Count,2).结束(xlUp).偏移量(1,0).行
?特别是,您正在查找哪列的第一个空单元格?想象一本有14页的woorkbook。第一页是userform将打开的地方,其中有关于如何使用userform的说明。sheet2是存储组合框列表的位置,此工作表是隐藏的。表3-15为月份名称。第3张为1月,第4张为2月。每张纸的列从A-AJ开始。您是用户。填写表格,点击提交按钮时选择月份为一月。表格上的数据进入工作表“一月”。假设您有另一个一月条目。该条目应填充到下一行。这就是我想要做的。太谢谢你了!!明天我会在工作时再试试这个,然后告诉你结果。呃,我真希望这能奏效。:)别担心!它本身就可以工作,但即使它不立即这样做,也只需要几次迭代,这里的人非常快:)大部分时间都在工作。现在只有两个问题。第一个问题是,每当您添加新条目时,它仍然会更改第二行中的条目,但是它也会将数据放在另一行中。第二个问题是每个提交的条目跳过一行。对于第二个问题,我添加了一个编辑。对于第一个问题:其中
工作表
更改了第
2行
中的条目?是在第一张纸上吗?让我知道。我认为直到
RwLast
定义之前的代码必须是
OK
(即,innocent)。第二行被覆盖的原因是您方框的
\u Change
事件正在触发。如果触发了
userform
\u initialize
事件,则会发生这种情况,因为它会填充(更改)框。还有其他活动吗?userform的
\u initialize
事件应仅在首次加载时触发。。
errHandler:
    Application.EnableEvents = True

End Sub