Excel VBA Range属性失效无法显示对应单元格值 多单元格赋值报错
问题根源
- VBA中多单元格区域的
Value属性返回的是二维数组,你代码里Range("S3:S100")是98行的多单元格区域,直接取.Value得到的是数组,无法直接和Now()返回的时间值做字符串拼接,赋值给单个单元格时就会触发类型不匹配报错。 - 单单元格
Range("S3")的.Value返回的是普通的数值/字符串类型,拼接逻辑合法,所以可以正常运行。
另外补充一个代码不严谨的点:事件参数已经传入了双击的目标单元格Target,不需要再调用ActiveCell,后者可能和实际双击的单元格不一致,建议直接用Target做判断。
解决方案
根据你实际的取值需求选对应方案即可:
方案1:取Info Sheet中S列和当前双击行对应的值
比如双击Z列第6行时,自动取S6的值,修改赋值语句为:
Target.Formula = Worksheets("Info Sheet").Range("S" & Target.Row).Value & Now()
方案2:拼接S3到S100所有单元格的内容后赋值
先遍历区域拼接所有内容,再赋值给目标单元格:
Dim cell As Range, allVal As String allVal = "" For Each cell In Worksheets("Info Sheet").Range("S3:S100") allVal = allVal & CStr(cell.Value) Next Target.Formula = allVal & Now()
方案3:取S3到S100中第一个非空单元格的值
遍历找到第一个有内容的单元格取值即可:
Dim cell As Range, firstVal As String firstVal = "" For Each cell In Worksheets("Info Sheet").Range("S3:S100") If Trim(cell.Value) <> "" Then firstVal = cell.Value Exit For End If Next Target.Formula = firstVal & Now()
内容的提问来源于stack exchange,提问作者user16290409
相关产品推荐
相关产品推荐

