Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 Excel中的命令按钮,复制一行数据并将该行移动到同一工作簿中的其他选项卡_Vba_Excel - Fatal编程技术网

Vba Excel中的命令按钮,复制一行数据并将该行移动到同一工作簿中的其他选项卡

Vba Excel中的命令按钮,复制一行数据并将该行移动到同一工作簿中的其他选项卡,vba,excel,Vba,Excel,我正在尝试获取一个命令按钮,该按钮位于Excel中的工作表上,它将根据字段中的某个字段将一行数据传输到不同的工作表。例如,我有一行中的所有数据,该行有6个不同的字段,其中一个是类型名称。然后我有了与所有类型选项同名的工作表。我希望用户按下并更新按钮,找到每一行的类型,然后将该行放入与该类型对应的工作表中。我不知道这是否可能 提前谢谢! 布里布里安娜 试试这个宏(在VB编辑器中将它复制并粘贴到一个新模块中),看看它是否符合您的需要;如果很好,创建一个按钮,右键单击它,“分配宏”,然后选择“复制行”

我正在尝试获取一个命令按钮,该按钮位于Excel中的工作表上,它将根据字段中的某个字段将一行数据传输到不同的工作表。例如,我有一行中的所有数据,该行有6个不同的字段,其中一个是类型名称。然后我有了与所有类型选项同名的工作表。我希望用户按下并更新按钮,找到每一行的类型,然后将该行放入与该类型对应的工作表中。我不知道这是否可能

提前谢谢! 布里

布里安娜

试试这个宏(在VB编辑器中将它复制并粘贴到一个新模块中),看看它是否符合您的需要;如果很好,创建一个按钮,右键单击它,“分配宏”,然后选择“复制行”

>Sub copyRow()
>
>
>Dim OriginalSheet As String
>Dim TypeColumn As Integer
>Dim StartingLine As Integer
>Dim myType As String
>
>OriginalSheet = ActiveSheet.Name
>
>'edit this number to match the column where the "Type" information is
>TypeColumn = 1
>'edit this part to match the starting point of your records
>StartingLine = 3
>
>Cells(StartingLine, TypeColumn).Select
>
>Counter = 0
>
>Do While ActiveCell.Offset(Counter, 0) <> ""
>
>    myType = ActiveCell.Offset(Counter, 0).Value
>    ActiveCell.Offset(Counter, 0).EntireRow.Copy
>    Sheets(myType).Select
>    Range("A" & Rows.Count).End(xlUp).Offset(1).Select
>    Selection.Insert Shift:=xlDown
>    Sheets(OriginalSheet).Select
>    Cells(StartingLine, TypeColumn).Select
>    Counter = Counter + 1
>
>Loop
>
>'this will exclude the rows already copied
>'you can comment, alter or exclude this line if you wish
>Range(Cells(StartingLine, TypeColumn), Cells(StartingLine + Counter, >TypeColumn)).EntireRow.Delete
>
>End Sub
>子复制行()
>
>
>暗淡的原始表为字符串
>Dim TypeColumn作为整数
>作为整数的Dim StartingLine
>将myType设置为字符串
>
>OriginalSheet=ActiveSheet.Name
>
>'编辑此编号,以匹配显示“类型”信息的列
>TypeColumn=1
>'编辑此部分以匹配记录的起点
>起始线=3
>
>单元格(起始行、类型列)。选择
>
>计数器=0
>
>在ActiveCell.Offset(计数器,0)时执行此操作“
>
>myType=ActiveCell.Offset(计数器,0).Value
>ActiveCell.Offset(计数器,0).EntireRow.Copy
>工作表(myType)。选择
>范围(“A”&行数)。结束(xlUp)。偏移量(1)。选择
>选择。插入移位:=xlDown
>图纸(原始图纸)。选择
>单元格(起始行、类型列)。选择
>计数器=计数器+1
>
>环路
>
>'这将排除已复制的行
>'如果愿意,您可以评论、更改或排除此行
>范围(单元格(起始行,类型列),单元格(起始行+计数器,类型列)).EntireRow.Delete
>
>端接头

希望有帮助

是的,这是可能的。你试过什么了?嘿,非常感谢你这么快就回答了我!我复制了准确的代码并更改了活动图纸名称、列编号和起始行编号,并且在原始图纸=行上得到了一个“对象不支持其属性或方法”。。工作簿保存为启用宏的Excel工作表在这种情况下,您不应更改活动工作表名称-将其存储在“Original_sheet”变量中的目的是让宏接受您所在的任何工作表作为第一个工作表,以便它可以将行粘贴到其他位置并稍后返回。试着保持这个变量不变,然后告诉我它是否有效。好的。。正如您所说,我将变量改回了原来的值,现在我在工作表(myType)上得到了一个“下标超出范围”错误。选择line。很抱歉,我遇到了所有这些问题。/没问题。。。让我澄清一个问题:您希望每个“类型”都进入相应的表格,不是吗?按照我的编码方式,工作表名称必须与该行的类型完全相同,例如,如果第5行中的类型是,比如说,“A_1”,而对应的工作表名为“A”,则它将不起作用。您能否确认“类型”单元格中的字符串(文本)和相应的工作表名称是否确实相同?给我举几个例子,如果你能…是的,它们完全相同。我有的类型是飞机类型,所以每行的类型将是757、767、777、A300、MD10-10,并且表的名称完全相同