如何通过行列获取单元格值并复制到空白单元格?VBA代码报错求助
问题分析与修正
你的代码存在两个核心错误,导致调试报错:
- 单元格引用格式错误:Excel单元格地址的正确格式是「列标+行号」(比如"A1"),但你写的
rownum & colltr会生成「行号+列标」(比如"1A"),这是无效的单元格引用,VBA无法识别。 - 对象变量赋值缺少
Set关键字:tc是Range类型的对象变量,给对象变量赋值必须使用Set关键字,直接用=会触发类型不匹配错误。
另外,最后一行的逻辑也不符合需求——你要实现的是复制单元格值,而非将Range对象指向偏移后的单元格,需要调整赋值逻辑。
修正后的代码
Sub WherePutMe() Dim rownum As Integer, colltr As String, sourceCell As Range rownum = InputBox("Enter a Row Number:") colltr = InputBox("Enter a Column Letter:") ' 修正:用Set赋值对象,调整单元格地址格式为列标+行号 Set sourceCell = Range(colltr & rownum) ' 将源单元格的值复制到选中单元格偏移(2,2)的位置 Selection.Offset(2, 2).Value = sourceCell.Value End Sub
额外说明
- 如果需要复制单元格的格式(不仅仅是值),可以改用
Copy方法:sourceCell.Copy Destination:=Selection.Offset(2, 2) - 建议添加输入合法性校验(比如判断行号是否在有效范围、列标是否合法),避免用户输入无效值导致报错。
内容的提问来源于stack exchange,提问作者Tonja Rosales
相关产品推荐
相关产品推荐

