Excel 为什么我的sub正在删除另一个工作表中的一行数据-VBA
我有两张“Ark1”和“Ark2”。我从“Ark2”中获取数据,并将它们放在“Ark1”中。我的“Sub X”功能应该将数据与日期从水平方向转换为垂直方向。但是,当我运行“subx”时,它会删除“Ark2”中的一行数据,我从中获取数据。我把所有的代码都放在一个模块里Excel 为什么我的sub正在删除另一个工作表中的一行数据-VBA,excel,vba,Excel,Vba,我有两张“Ark1”和“Ark2”。我从“Ark2”中获取数据,并将它们放在“Ark1”中。我的“Sub X”功能应该将数据与日期从水平方向转换为垂直方向。但是,当我运行“subx”时,它会删除“Ark2”中的一行数据,我从中获取数据。我把所有的代码都放在一个模块里 Sub x() Dim lngDataColumns As Long Dim lngDataRows As Long lngDataColumns = 3 lngDataRows = 50 For t = 1 To
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”中做什么的图片,画的是彩色的
我希望你能帮忙
为避免此类问题,始终完全限定对象。 在编写
范围(“A1”)
时,应改为编写:
ThisWorkbook.Sheets("Your sheet").Range("A1")
其中:
限定运行代码的工作簿中的对象(默认值为ThisWorkbook
,在代码运行时可能是其他对象)ActiveWorkbook
确保您在良好的工作表中运行工作表(“您的工作表”)
范围(“某物”)
提示:如果您认为这样做会使代码变得繁重,那么您可以在代码顶部定义范围,并在最近按名称使用,例如:
Dim myRng1 As Range: Set myRng1 = ThisWorkbook.Sheets("Your sheet").Range("your range")
...
...
myRng1.DoSomething()
myRng1.DoSomethingElse()
您可以使用:
Option Explicit
Sub Test()
With ws1
.Range("A1").Select
End With
End Sub
如果使用括号外的名称:
或
使用括号中的名称:
在范围(“l2”).偏移量(((t-1)*lngDataColumns)-1,0).调整大小(lngDataColumns,1).值=uu应用程序.转置(范围(“f1:h1”).值)
范围(“l2”)和范围(“f1:h1”)都在同一张表中。您是否正在复制要转置到L2的值?或者你只是没有引用正确的表格?
Option Explicit
Sub Test()
With ThisWorkbook.Worksheets("Sheet1")
.Range("A1").Select
End With
End Sub