Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 为什么我的sub正在删除另一个工作表中的一行数据-VBA_Excel_Vba - Fatal编程技术网

Excel 为什么我的sub正在删除另一个工作表中的一行数据-VBA

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

我有两张“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 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