我有2张纸“ Ark1”和“ Ark2”。我从“ Ark2”中获取数据,并将其放入“ Ark1”中。我的“ Sub X”功能应将数据与日期从水平方向转换为垂直方向。但是,当我运行“ sub x”时,它正在删除“ Ark2”中的一行数据,在那里我得到了数据。我将所有代码都放在一个模块中。
Sub x()
Dim lngDataColumns As Long
Dim lngDataRows As Long
lngDataColumns = 3
lngDataRows = 50
For t = 1 To lngDataRows
Range("l2").Offset(((t - 1) * lngDataColumns) - 1, 0).Resize(lngDataColumns, 1).Value = _
Application.Transpose(Range("f1:h1").Value)
Range("M2").Offset(((t - 1) * lngDataColumns) - 1, 0).Resize(lngDataColumns, 1).Value = _
Application.Transpose(Range("f1:h1").Offset(t).Value)
Next t
End Sub
这是已删除数据的图示。
这是我在用彩色涂色的“ Ark1”中要做什么的图片。
我希望你能帮忙
答案 0 :(得分:1)
为避免此类问题,请始终完全限定您的对象。
在写Range("A1")
的地方,应该写:
ThisWorkbook.Sheets("Your sheet").Range("A1")
位置:
ThisWorkbook
限定运行代码的工作簿中的对象(相反,默认值为ActiveWorkbook
,在代码运行时可能是其他东西)。Sheets("Your sheet")
确保运行良好的工作表。这当然可以在您只说Range("something")
的地方进行。
提示:如果您认为这样做会增加代码的负担,则可以在代码之上定义范围,并按名称最近使用它,例如:
Dim myRng1 As Range: Set myRng1 = ThisWorkbook.Sheets("Your sheet").Range("your range")
...
...
myRng1.DoSomething()
myRng1.DoSomethingElse()
答案 1 :(得分:0)