Vba 将单元格从一个工作簿(非特定)复制到另一个工作簿(特定)

Vba 将单元格从一个工作簿(非特定)复制到另一个工作簿(特定),vba,excel,Vba,Excel,好的,我正在尝试为一个企业创建一个订单日志(员工使用) 我有一个表单,其中多个用户可以访问/输入所需的所有信息。它打印到Excel电子表格中,供一个人打开并下订单。有时,用户可能希望从上一年的日志中复制订单行(到目前为止有4个),因此我尝试将其合并到当前日志中 我在引用用户打开的另一个工作簿并将信息复制到当前日志中打开的userform时遇到问题。我有这个: Private Sub cmdCopy_Click() Dim rowRef As Integer, colItem As Intege

好的,我正在尝试为一个企业创建一个订单日志(员工使用)

我有一个表单,其中多个用户可以访问/输入所需的所有信息。它打印到Excel电子表格中,供一个人打开并下订单。有时,用户可能希望从上一年的日志中复制订单行(到目前为止有4个),因此我尝试将其合并到当前日志中

我在引用用户打开的另一个工作簿并将信息复制到当前日志中打开的userform时遇到问题。我有这个:

Private Sub cmdCopy_Click()

Dim rowRef As Integer, colItem As Integer, colSup As Integer, colCatNum As Integer, colQty As Integer, colUnit As Integer, colCat As Integer

'stores row of selected order from old order log successfully
rowRef = ActiveCell.row

'I'm trying to find which column has which headers as the logs aren't consistent
For x = 2 To 9
    If ActiveWorkbook.Sheet1.Cells(2, x).Text = "Item" Then
        colItem = x
    ElseIf ActiveWorkbook.Sheet1.Cells(2, x).Text = "Supplier" Then
        colSup = x
    ElseIf ActiveWorkbook.Sheet1.Cells(2, x).Text = "Catalogue #" Then
        colCatNum = x
    ElseIf ActiveWorkbook.Sheet1.Cells(2, x).Text = "Qty" Then
        colQty = x
    ElseIf ActiveWorkbook.Sheet1.Cells(2, x).Text = "Unit" Then
        colUnit = x
    ElseIf ActiveWorkbook.Sheet1.Cells(2, x).Text = "Category" Then
        colCat = x
    End If
Next x

'fills information into userform
txtItem.Text = Sheet1.Cells(rowRef, colItem).Text
txtSup.Text = Sheet1.Cells(rowRef, colSup).Value
txtCatNum.Text = Sheet1.Cells(rowRef, colCatNum).Value
txtQty.Text = Sheet1.Cells(rowRef, colQty).Value
cboUnit.Text = Sheet1.Cells(rowRef, colUnit).Value
cboCat.Text = Sheet1.Cells(rowRef, colCat).Value

End Sub
所以我想做的是:

  • 用户打开当前订单日志
  • 用户按下ActiveX按钮打开frmOrderLog
  • a) 用户手动输入信息
    b) 用户从当年的日志中复制信息
    c) 用户最小化窗口,打开上一年的日志,选择一个单元格,在userform中按下“复制订单”按钮,然后将上一年订单日志中相应单元格的信息复制到当前年度订单日志中表单中相应的文本框/组合框中

  • 如果需要澄清,请告诉我。很抱歉,如果论坛上已经出现了这种情况,但使用我的搜索词,我无法找到有帮助的答案。

    对我来说,这似乎是一个简单的语法问题:

    您要更改:

    If ActiveWorkbook.Sheet1.Cells(2, x).Text = "Item" Then
    
    致:

    Sheet1语法对我不起作用


    显然,您希望在任何其他出现Sheet1的地方进行相同的更改。

    请适当标记-它看起来像是与Microsoft/Windows相关的东西,但谁知道呢?抱歉,我对该网站非常陌生,通常会在帖子中添加标记。我被分配这个任务是因为我对VBA有最多的经验,但仍然不多。没问题-看起来你现在已经掌握了标签的窍门!仅供参考:
    Dim rowRef、colItem、colSup、colCatNum、colQty、colUnit、colCat为整数
    未将所有这些变量定义为整数。它将最后一个定义为整数,其余定义为变量。要将它们全部设置为整数,您需要将Dim rowRef设置为整数,colItem设置为整数,colSup设置为整数,colCatNum设置为整数,colQty设置为整数,colUnit设置为整数,colCat设置为整数谢谢,我们将对此进行更改。另外,您是如何编辑它使其看起来像代码的(突出显示If、EndIf、Dim、As Integer等)?我发帖子的时候没法让它工作。就是这样,非常感谢!我还是VBA的新手,很高兴知道人们如此愿意帮助我解决一些基本的错误!没问题,事实上,从语法上来说,这有点让人困惑。因为Sheet1(将代码放在这里)的结尾是-这实际上是完全可以的。但是ActiveWorkbook对象似乎要求您使用Sheets(1)语法。他们可能会使语言更加一致。尽管和许多事情一样,他们可能有自己的原因。
    If ActiveWorkbook.Sheets(1).Cells(2, x).Text = "Item" Then