Database Excel宏,可以使用两列中的数据将新行添加并填充到单独的工作表中
我想做的就是这样 我有一个客户信息表,第一张表上的信息分两列存储,范围是F5:F38,M5:M33 我在工作表2中有一个空数据库,我想用这个数据填充它,从C5到BM5 我希望能够将宏指定给“添加”按钮,并让宏自动为数据插入新行并进行复制,使用户能够使用工作表1进行填充 马特 迄今为止,根据David的建议进行了更新。唯一悬而未决的问题是,在运行脚本时,M列中有行军蚂蚁,但数据本身不会跨列复制。为了更清楚,该表有数据验证和一些条件格式(一些下拉选项和Y/N答案上的一些颜色编码),我不确定这是否是一个因素Database Excel宏,可以使用两列中的数据将新行添加并填充到单独的工作表中,database,vba,excel,Database,Vba,Excel,我想做的就是这样 我有一个客户信息表,第一张表上的信息分两列存储,范围是F5:F38,M5:M33 我在工作表2中有一个空数据库,我想用这个数据填充它,从C5到BM5 我希望能够将宏指定给“添加”按钮,并让宏自动为数据插入新行并进行复制,使用户能够使用工作表1进行填充 马特 迄今为止,根据David的建议进行了更新。唯一悬而未决的问题是,在运行脚本时,M列中有行军蚂蚁,但数据本身不会跨列复制。为了更清楚,该表有数据验证和一些条件格式(一些下拉选项和Y/N答案上的一些颜色编码),我不确定这是否是一
Dim wsDB As Worksheet
Dim wsInfo As Worksheet
Sub Main()
Set wsDB = Worksheets("DATABASE")
Set wsInfo = Worksheets("INPUT")
insertnewrow
addcolumnf
addcolumnm
End Sub
Sub insertnewrow()
'
' insertnewrow Macro
wsDB.Rows("6:6").Insert _
Shift:=xlDown, _
CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
Sub addcolumnf()
'
' addcolumnf Macro
wsInfo.Range("F5:F38").Copy
wsDB.Range("C6:AJ6").PasteSpecial _
Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub
Sub addcolumnm()
'
' addcolumnm Macro
'
Application.CutCopyMode = False
wsInfo.Range("M5:M33").Copy
wsDB.Range("AK6:BM6").PasteSpecial _
Paste:=xlAllExceptBorders, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True
End Sub
我建议您开始使用Microsoft Excel中包含的名为“数据表单”的工具。将它添加到菜单中并使用它。重要的一点是,您需要重新组织数据:在第一行中放入标题(例如,从A1到A…),在下一行中放入数据。此组织将帮助您使用数据透视表利用信息 如果希望使用按钮调用表单,可以使用分配给按钮的宏:
Sub宏1()
工作表(“工作表1”)。选择
范围(“A1”)。选择
ActiveSheet.ShowDataForm
末端接头
此链接将向您展示有关该工具的更多信息:
如果您有编程方面的知识,我可以向您展示如何在Excel中使用VBA(例如,while等)。这有点复杂
这里是您需要的代码。但有必要确保表2中的C5不是空的:
Sub Macro6()
Dim Count As Long
'Copy first column
Sheets("worksheet1").Select
Range("F5:F38").Select
Selection.Copy
'Search the next row empty
Sheets("worksheet2").Select
Range("C5").Select
Selection.End(xlDown).Select
Count = ActiveCell.Cells.Row + 1
'Copy in the next empty row
Range("C" & Count).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
'Again with the next column
'Copy second column
Sheets("worksheet1").Select
Range("M5:M33").Select
Application.CutCopyMode = False
Selection.Copy
'Copy in the same row in the second sheet
Sheets("worksheet2").Select
Range("AK" & Count).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub
嗯。我不确定您的问题是什么,但可能与非限定对象变量有关。当您执行以下操作时:
Dim wsDB As Worksheet
Dim wsInfo As Worksheet
Sub Main()
Set wsDB = Worksheets("Database")
Set wsInfo = Worksheets("Sheet3") 'MODIFY AS NEEDED
insertnewrow
addcolumnf
addcolumnm
End Sub
Sub insertnewrow()
'
' insertnewrow Macro
wsDB.Rows("6:6").Insert _
Shift:=xlDown, _
CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
Sub addcolumnf()
'
' addcolumnf Macro
wsInfo.Range("F5:F38").Copy
wsDB.Range("C6:AJ6").PasteSpecial _
Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub
Sub addcolumnm()
'
' addcolumnm Macro
'
Application.CutCopyMode = False
wsInfo.Range("M5:M33").Copy
wsDB.Range("AK6:BM6").PasteSpecial _
Paste:=xlAllExceptBorders, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True
End Sub
范围(“A1”)。选择
Excel总是将其解释为属于ActiveSheet
对象。由于您依赖于选择
方法,因此很难跟踪正在发生的事情,您需要不断选择新对象以正确地确定所有对象的范围,等等
这可以通过将代码修改为以下内容来避免:
Dim wsDB As Worksheet
Dim wsInfo As Worksheet
Sub Main()
Set wsDB = Worksheets("Database")
Set wsInfo = Worksheets("Sheet3") 'MODIFY AS NEEDED
insertnewrow
addcolumnf
addcolumnm
End Sub
Sub insertnewrow()
'
' insertnewrow Macro
wsDB.Rows("6:6").Insert _
Shift:=xlDown, _
CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
Sub addcolumnf()
'
' addcolumnf Macro
wsInfo.Range("F5:F38").Copy
wsDB.Range("C6:AJ6").PasteSpecial _
Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub
Sub addcolumnm()
'
' addcolumnm Macro
'
Application.CutCopyMode = False
wsInfo.Range("M5:M33").Copy
wsDB.Range("AK6:BM6").PasteSpecial _
Paste:=xlAllExceptBorders, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True
End Sub
运行几次后,我的“数据库”工作表如下图所示。只需调用触发其他三个命令的Main
例程。它将始终在第6行中插入一个空行,并将F列和M列复制到该新行中
到目前为止,您已经描述了您想要做的事情。为什么不描述一下您实际尝试了什么,包括代码的示例以及代码未能达到预期效果的地方呢。@David。我已经添加了更多信息。我已经更新了代码以反映您的更改,但现在收到一条错误消息。更新以反映上述情况。非常感谢您的帮助。到目前为止,错误信息是什么?错误在哪一行出现?我看不到您的原始问题有任何修改。请检查是否有打字错误,您是指“表1”还是“表1”。我已修改了对“数据库”和“输入”的引用,而不是对表1和表2的引用,脚本现在正在用C列中的信息填充数据库页面!遗憾的是,F列数据没有被复制?我没有更改您更新代码中的任何其他内容。非常感谢你迄今为止的帮助!只是补充一下,当我运行脚本时,从F开始的单元格区域有行进的蚂蚁。所以可以肯定地说它就快到了。。!??