excel - 将具有相应 ID 号的行复制到不同的工作表中
问题描述
我有一个用户表单,可让您输入 ID 号,我希望将具有相应 ID 号的行复制到单元格未对齐的不同工作表中。
我尝试使用数组作为数据的目的地,但是当我运行它时它什么也没做。我知道我可以用丑陋的方式做到这一点,并将每个单元格编码到另一个单元格,但我认为使用数组来复制正在复制的数据会起作用,现在我需要知道如何将所有目标单元格放在一个变量并在那里复制数据
Dim ws As Worksheet
Set ws = Sheets("Arkiv")
Dim DN As Worksheet
Set DN = Sheets("DN")
idRow = Sheets("Arkiv").Columns("A:A").Find(what:=IDnum).Row
IDnum = TextBox1.Text
'Dim shipFrom As Range
'Set shipFrom = Sheets("Arkiv").Range("B" & idRow)
Dim goTo1 As Variant
goTo1 = Array(DN.Range("D9"), DN.Range("E9"), DN.Range("I9"), DN.Range("C20"), DN.Range("D20"), DN.Range("E45"), DN.Range("G20"), DN.Range("H20"), DN.Range("I20"))
Dim data As Variant
data = Array(ws.Range("B" & idRow), ws.Range("C" & idRow), ws.Range("D" & idRow), ws.Range("E" & idRow), ws.Range("F" & idRow), ws.Range("G" & idRow), ws.Range("H" & idRow), ws.Range("I" & idRow))
goTo1 = data
我希望变量“数据”中的数据按照我将它们放入数组中的相应顺序复制到“goTo1”变量内部的单元格中。enter code here
解决方案
如果您使用 find 方法,请始终指定
LookAt
参数,否则 VBA 使用上次使用的任何内容(用户或 VBA)。您需要遍历地址,并一一复制它们。您不能一次复制非连续范围。
所以这样的事情应该有效。
Option Explicit
Public Sub CopyRanges()
Dim wsSource As Worksheet
Set wsSource = ThisWorkbook.Worksheets("Arkiv")
Dim wsDestination As Worksheet
Set wsDestination = ThisWorkbook.Worksheets("DN")
Dim IDnum As String
IDnum = TextBox1.Text
Dim idRow As Long
idRow = wsSource.Columns("A:A").Find(What:=IDnum, LookAt:=xlWhole).Row
Dim SourceAddresses() As Variant
SourceAddresses = Array("B" & idRow, "C" & idRow, "D" & idRow, "E" & idRow, "F" & idRow, "G" & idRow, "H" & idRow, "I" & idRow)
Dim DestinationAddresses() As Variant
DestinationAddresses = Array("D9", "E9", "I9", "C20", "D20", "E45", "G20", "H20", "I20")
If UBound(SourceAddresses) <> UBound(DestinationAddresses) Then
MsgBox "Amount of source addresses must be the same amount as destination addresses"
Exit Sub
End If
Dim i As Long
For i = LBound(SourceAddresses) To UBound(SourceAddresses)
wsDestination.Range(DestinationAddresses(i)).Value = wsSource.Range(SourceAddresses(i)).Value
Next i
End Sub
推荐阅读
- flutter - 与其他文本长度的文本间距
- vue.js - .reduce() 正在改变我所有的变量,而我没有改变它们
- jq - 用 jq 替换字符串中的符号
- amazon-web-services - 在第二个云形成堆栈中重用在一个云形成堆栈中创建的 Elastic Beanstalk 资源
- android - Flutter android报警管理器加上不工作
- javascript - 如何添加这个库(web3)并在我的 html 页面上使用?
- javascript - 基于选择选择在jquery中重写代码
- python - 我想出了这个模式生成代码,这让我很困惑。这段代码中的第二个 for 循环做了什么??(初学者)
- r - 我怎样才能让我的数据在每周内按实验分组(箱线图)?
- node.js - 如何识别/检测文本中的词汇(Node JS)