2015-06-01 24 views
0

我在VBA中有以下代码。下面的代码的问题是范围是指data表,当我在一些其他表失败时。范围不能跨表单工作

monthname = Range("D5", Range("D5").End(xlToRight)).Cells.Count - 1 

能否请您给我提供一个解决方案,其中,不管我在哪里工作簿中的范围应始终从data片挑?

回答

1

使用

monthname = sheets("data").Range("D5", sheets("data").Range("D5").End(xlToRight)).Cells.Count - 1 

BTW在这个论坛或谷歌一个小的搜索会得到你这个答案。

+0

您还需要在工作表中限定第二个'Range'调用。 – Rory

+0

不错的地方,我调整了代码 – 99moorem

+0

上面的代码就像一个魅力.....非常感谢你们和所有已回复我的问题...所有人都不可能这样做 –

0

你最好完全符合你的范围。 使用

Dim ws as Worksheet 
Set ws = ActiveWorkbook.Sheets("data") ' or an alternative suitable for your case 
Dim monthname as Long 
monthname = ws.Range("D5", ws.Range("D5").End(xlToRight)).Cells.Count - 1 

注意,第二参考D5也是合格的,否则你可能会觉得麻烦。

PS:你为什么要将月份名称作为整数? 。

+0

亲爱的Sanchos,非常感谢你的建议。我已经实现了你的代码,但它的工作不幸......当我使用名为“control”的工作表激活代码时,它引用名为“control”的工作表而不是工作表“数据”... –

+0

添加ws.activate行monthname = ...之前的代码。 – emihir0

+0

@SrijithRamachandran这是不可能的使用提供的代码。 – Rory

0

使用

MONTHNAME =片材( “数据”)范围(。 “D5”,片材( “数据”)范围( “D5”)结束(xlToRight))Cells.Count - 1 btw在这个论坛或谷歌的小搜索会让你这个答案。