vba - activeX 按钮可根据单元格值将工作表 1 中的一行数据复制到工作表 2
问题描述
我是 stackoverflow.com 和 VBA 的新手。我一直在网上搜索一个 VBA,它允许我从我输入的表 1 中复制数据,然后根据单元格值匹配粘贴到表 2 中。复制后,它将清除工作表 1 上的数据而不删除行。
我在呼叫中心工作,这将是根据其所在的办公桌更新设备。
所以我希望一旦我将所有数据输入到工作表 1 上的字段中,我可以单击一个 activex 按钮,它会在 A 列的工作表 2 上搜索桌号,然后使用表 1 中的数据。
我见过一些 VBA 会复制数据,但它只复制到下一个空的单元格行。
这是我找到但不正确的代码。
Sub MoveRowBasedOnCellValue()
Dim xRg As Range
Dim xCell As Range
Dim I As Long
Dim J As Long
Dim K As Long
I = Worksheets("Sheet1").UsedRange.Rows.Count
J = Worksheets("Sheet2").UsedRange.Rows.Count
If J = 1 Then
If Application.WorksheetFunction.CountA(Worksheets("Sheet2").UsedRange) = 0 Then J = 0
End If
Set xRg = Worksheets("Sheet1").Range("A5:Q5" & I)
On Error Resume Next
Application.ScreenUpdating = False
For K = 1 To xRg.Count
If CStr(xRg(K).Value) = ("A5") Then
xRg(K).EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A" & J + 1)
J = J + 1
End If
Next
Application.ScreenUpdating = True
End Sub
任何帮助都会很棒!谢谢。
解决方案
类似于下面的代码?我假设桌号在 A 列 sheet1 从第 2 行开始。不过,您需要调整两张表的最后行。
Sub MoveRowBasedOnCellValue()
Dim s1 As Sheet1
Set s1 = Sheet1
Dim s2 As Sheet2
Set s2 = Sheet2
Dim s1StartRow As Integer
Dim s1EndRow As Integer
Dim s2StartRow As Integer
Dim s2EndRow As Integer
s1StartRow = 2
s1EndRow = 8
s2StartRow = 2
s2EndRow = 10
Application.ScreenUpdating = False
For i = s1StartRow To s1EndRow
For j = s2StartRow To s2EndRow
If s1.Cells(i, 1) = s2.Cells(j, 1) Then
s1.Range("B" & i & ":Q" & i).Copy
s2.Cells(j, 2).PasteSpecial xlPasteAll
Application.CutCopyMode = False
End If
Next j
Next i
Application.ScreenUpdating = True
End Sub
推荐阅读
- configuration - 在 Azure AD B2C 中,AdminClientEncryptionKeyContainer 的用途是什么?
- laravel - 如何注销并撤销 laravel 8 api 中的所有 oauth 令牌?
- json - Visual Studio Code JSON 补全
- python - 定义的函数不适用于数据框列
- wordpress - 如何在 Wordpress 不和谐嵌入中放置描述?
- python - 如何从数组中拉出一个项目
- firebase - Firebase 存储上传各种错误以获取 url
- node.js - 我应该多久为 GridFS 启动一次流?对于我想要的集合数量,我应该拥有多少个存储代码文件?
- cassandra - Cassandra:如何防止和调试节点内存不足?
- python - 如何在 IBM Watson Speech to Text 中强制使用扬声器数量