2016-12-06 41 views
0

我有一个名为processRowBegin的全局变量,其中包含进程开始的行号。我还有一个名为processRowEnd的全局变量,它包含进程结束的行号。在(行,列)中为VBA中的范围使用变量

我想要做的是在活动工作表上为列C和E创建一个图表,其中要绘制的选定行的范围是从processRowBegin到processRowEnd。我遇到的问题是我不知道如何在(行,列)语法中为行使用范围和变量。我研究了这个问题,到目前为止还没有找到可行的解决方案。我首先尝试使用(行,列)语法和(行,列)中行的变量名称。这不起作用,并导致图片中的错误[使用变量作为范围错误中的行] [1}。

然后,我试图实现一个解决方案(代码如下),我通过另一个用户的问题找到但仍然收到相同的错误。在VBA中如何去做这件事?

Range(("C" & processRowBegin):("C" & processRowEnd)).Select 
Range(("E" & processRowBegin):("E" & processRowEnd)).Select 

我是Excel VBA的初学者以及编程,希望能帮助。这是我完成一项重要工作项目的最后一步。如果有人想查看我的整个代码,请告诉我。

+0

你一般要避免连接的单元格地址为字符串。 @ ScottCraner答案中的第二种方法(假设有工作表限定)要好得多。 – Comintern

+0

好吧,这很有道理。感谢所有帮助解答此问题的人。我现在要测试它以确保它能正常工作。 – aquarules

回答

5

你会做这种方式:

Range("C" & processRowBegin & ":C" & processRowEnd).Select 

范围从以下两个细胞或字符串来表示范围。

要由两个单元做:

Range(Cells(processRowBegin,3),Cells(processRowEnd,3)).Select 

一对夫妇的注意事项:

  1. 应该避免使用select,只是做的是期望与细胞。有关如何避免它的更多信息,请参阅POST

  2. 应该始终将所有范围对象限定到其父页。如果使用单元格()也同样需要资格

With WorkSheets("Sheet1") 
    .Range(.Cells(processRowBegin,3),.Cells(processRowEnd,3)).Value = .Range(.Cells(processRowBegin,5),.Cells(processRowEnd,5)).Value 
End With