【发布时间】:2017-11-24 23:08:20
【问题描述】:
所以我正在为 VBA 中的宏编写代码,每当我尝试运行它时,我总是在一行中得到相同的错误。奇怪的是,该行在程序的早期工作,但在我第二次使用它时它停止工作(我没有更改任何代码;我实际上是复制并粘贴了它)。这是代码:
positioninDailyVisitors = Application.Match(originaldata.Worksheets("Top Visitors Chart").Range(columns(index) & counter + 11), originaldata.Worksheets("Daily Visitors").Range("A5:A627"), 0)
一点背景知识:positioninDailyVisitors 是一个整数变量,columns(index) 是一个 String 类型的数组,其中列出了“A”、“B”等值。另外,我已经尝试使用 @987654326 @它仍然不起作用。
【问题讨论】:
-
columns(index) & counter + 11没有产生您认为的 xlA1 样式的范围地址(例如 A5:A627)。 -
你是从哪里复制粘贴的?是否设置了 originaldata 工作簿?相同的工作表名称?该错误是类型不匹配,因此看起来它不能 1) 从
originaldata.worksheets("Top Visitors").Range(columns(index) & counter + 11)获取值(“列”数组是否公开设置在您粘贴它的位置...或者它无法理解 originaldata.Worksheets ("每日访问者").Range("A5:A627")` -
我也不知道 Jeeped 是什么意思,对我来说看起来不错,我认为你正在循环使用
index和counter这些值一个一个地改变,给你一个单元格范围和值 -
正如 Jeeped 所写,
columns(index) & counter + 11没有提供像A1这样的地址。好吧,您写道columns(index)具有字符串值,因此我认为您应该在将计算加入列变量之前将其转换为字符串。试试columns(index) & CStr(counter + 11),我想它会解决你的问题。 -
如果
columns是一个局部变量,它会隐藏/隐藏全局范围的Columns成员,该成员返回一个Range对象。这使您的代码混乱。考虑创建一个edit 以包含所有相关变量的声明。那就是说你很可能不需要那个columns字符串数组。
标签: vba excel type-mismatch