如何将数组发布到其他工作表?

时间:2019-03-30 20:17:04

标签: excel vba

因此,我正在创建一段代码,将一行数据移动到另一个工作表中,并将其值更改为“ 7-投入”框中的值

一切正常,直到突出显示的代码(如上所示)正常为止。

我认为,如果将数据行转换为数组,则将其发布到下一张纸会更容易。

我在下面使用的代码现在出现运行时错误438:编译错误,应为:我是标识符还是放在括号中。

问题是我无法定义数据的哪一行,因为这取决于对I列所做的更改。

我还希望将数据发布到下一张工作表的第一行-“坦克”

我尝试使用Offset和PasteSpecial分别移动每个单元格,但是在最佳情况下这很笨拙,并且会导致自身问题。

我应该继续使用转置数组,以及如何将数组变量粘贴到另一张纸上 enter image description here

Dim myRange As Range

For Each myRange In Range("I6:I1000")

Select Case myRange.Value
Case "7 - engaged"
VBA.Interaction.MsgBox "Client status selected as engaged. Confirm to post to tank", 1, "Status Change"

myArr = Application.Transpose(Application.Transpose(Range("A:M")))

Sheets("Tank").(BlankRow = Range("B1000").End(xlUp).Row + 1)
ActiveSheet.Range("A:M") = WorksheetFunction.Transpose(arr)




End Select

Next myRange

End Sub

1 个答案:

答案 0 :(得分:-1)

我认为您正在使用类似下面的代码。

Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
    ' Maybe disable events whilst this code runs (and re-enable before exit)
    ' to prevent recursion.

    If Source.Column <> 9 Then Exit Sub ' 9 = I
    If Source.Cells.Count > 1 Then Exit Sub ' Check this first before making comparison on next line
    If Source.Value <> "7 - engaged" Then Exit Sub

    If MsgBox("Client status selected as engaged. Confirm to post to tank.", vbOKCancel) = vbOK Then
        With ThisWorkbook.Worksheets("Tank")
            Dim rowToPasteTo As Long
            rowToPasteTo = .Cells(.Rows.Count, "B").End(xlUp).Row + 1

            .Range("A" & rowToPasteTo & ":" & "M" & rowToPasteTo).Value = Sh.Range("A" & Source.Row & ":" & "M" & Source.Row).Value
        End With
    End If
End Sub

最好将Option Explicit放在代码之前。似乎您分配了myArr但在代码中转置了arr。假设这些不是全局变量,Option Explicit可以解决此类问题。还有一些语法和成员/属性错误。