尝试在if语句中进行转置

时间:2019-06-04 20:26:09

标签: vba transpose

大型项目,需要在另一个子项目中调出一个子项目的帮助

这不输出任何东西,并且调用它的子程序正在工作,但是这部分不工作

`Private Sub Data100()

 Dim b1 As Integer
 Dim sourceRange As Range
 Dim targetRange As Range
 b1 = Range("V8").Value

If b1 = 0.015625 Then
Set sourceRange = Range("U150", "X150")
Set targetRange = Range("U201", "U204")
sourceRange.Copy
targetRange.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, 
SkipBlanks:=False, Transpose:=True
End If

End Sub`

没有错误消息,只会输出任何内容。想复制U150-X150并在U201-U204列中输出

1 个答案:

答案 0 :(得分:1)

在进一步检查时,我对语法范围定义不正确是不正确的。我从未见过使用Range("U150","X150"),但是它看起来与Range("U150:X150")是相同的结果。您会发现这个发现的!!

S ...在您的代码中,我唯一看到的错误是您的if-statement返回了False,因为您将B1定义为Integer, if语句正在检查等于十进制which it will never be。如果将B1重新定义为Double,我认为您的代码将按如下所示工作。我成功运行了您的经过稍微修改的代码。

此外,请避免一般使用Integer。只需使用Long。有关SO社区的一些发现,请参见post here。节省内存是不值得的。

Private Sub Data100_Modified()

 Dim b1 As Double, sourceRange As Range, targetRange As Range

With ActiveSheet

b1 = .Range("V8").Value


If b1 = 0.015625 Then
Set sourceRange = .Range("A1","A3")
Set targetRange = .Range("B2","d2")

sourceRange.Copy
targetRange.PasteSpecial Paste:=xlPasteValues, Transpose:=True

End If

End With

End Sub