如何从Excel VBA单元格取值?遍历指定区域首单元格遇问题求助
解决VBA遍历命名区域每行首个单元格的问题
你的代码存在三个关键问题,导致运行报错:
- 给Range对象赋值时未使用
Set关键字:VBA中对象类型变量必须通过Set赋值,直接c = ...会触发类型不匹配错误。 - 取首个单元格的方式冗余:
row.Offset(0,0)等价于row本身,无法精准定位到该行第一个单元格,应该用row.Cells(1, 1)直接获取。 - 直接转换Range对象为字符串:
CStr(c)会尝试转换整个Range对象,而非单元格内容,需改用c.Value或c.Text获取单元格的实际值。
修正后的代码如下:
Dim row As Range Dim c As Range For Each row In Worksheets("defs").Range("_usage").Rows Set c = row.Cells(1, 1) ' 使用Set赋值Range对象,直接定位首个单元格 MsgBox "[" & CStr(c.Value) & "]", , "Check" ' 取单元格Value属性转换为字符串 Next row
如果想简化代码,也可以省略中间变量c,直接在MsgBox中获取值:
Dim row As Range For Each row In Worksheets("defs").Range("_usage").Rows MsgBox "[" & CStr(row.Cells(1, 1).Value) & "]", , "Check" Next row
内容的提问来源于stack exchange,提问作者rhavin
相关产品推荐
相关产品推荐

