我为申请付款计划的学生创建了一个数据库。我有3张床单:
"查询" - 这是在等待学生注册时存储数据的地方。
"确认" - 此数据有3行标题:学生ID(B1),计划ID(B2)和工资ID(B3)。这是我在学生报名后输入附加数据的地方。
" Masterlist" - 确认付款计划的学生的最终名单。
我的想法是手动输入"确认"然后运行一个宏来搜索"查询"中的学生ID(B1)的值。片。然后,我希望它在"查询"中的B和E列中复制计划ID(B2)和支付ID(B3)。片。
填充数据后,我需要将整行转移到" Masterlist"片材。
我已经尝试过录制Marco,但是当我录制它时它只发现它的当前值。我对公式相当不错,但之前并没有真正做过宏。
Range("B1").Select
Selection.Copy
Sheets("Enquiry").Select
Cells.Find(What:="4536092", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Rows("29:29").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Masterlist").Select
ActiveWindow.LargeScroll Down:=-7
Rows("2:2").Select
Sheets("Enquiry").Select
Range("A29").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "4536092"
Rows("29:29").Select
Selection.Copy
Sheets("Masterlist").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown
答案 0 :(得分:0)
并非所有vba善良都可通过宏录制器访问。下面的代码适用于我根据您的工作表布局描述构建的测试工作簿。将来,请添加截图或更好的工作簿的Dropbox xlsx。另请注意,这里的人很少会花时间从头开始构建代码。
我已经对此进行了相当多的评论。玩这个。评论问题,我会回答。
Sub macroName()
'declaring range object Ranges hold values and cell addresses at the same time
Dim id As Range
Dim found As Range
'setting id var
Set id = Worksheets("Confirmed").Range("b2")
'making sure id we are checking isn't null
If Not id.Value = "" Then
'finding the value for var id. xlWhole means exact cell match.
Set found = Worksheets("Enquiry").Cells.find(What:=id, LookAt:=xlWhole)
MsgBox "Inserted new row in Masterlist for ID: " & id
Else
MsgBox "ID cannot be null at: " & id.Address
End If
'making sure we had a match from .find
If Not found Is Nothing Then
'inserting a new row
Worksheets("Masterlist").Range("a2").EntireRow.Insert
'setting new row to value of entire row value of range object.
Worksheets("Masterlist").Range("a2").Value = found.Rows.Value
Else
MsgBox "Nothing found for id: " & id.Value
End If
End Sub