因此,我正在创建一段代码,将一行数据移动到另一个工作表中,并将其值更改为“ 7-投入”框中的值
一切正常,直到突出显示的代码(如上所示)正常为止。
我认为,如果将数据行转换为数组,则将其发布到下一张纸会更容易。
我在下面使用的代码现在出现运行时错误438:编译错误,应为:我是标识符还是放在括号中。
问题是我无法定义数据的哪一行,因为这取决于对I列所做的更改。
我还希望将数据发布到下一张工作表的第一行-“坦克”
我尝试使用Offset和PasteSpecial分别移动每个单元格,但是在最佳情况下这很笨拙,并且会导致自身问题。
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
答案 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
可以解决此类问题。还有一些语法和成员/属性错误。