You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA复制B列前4字符到I列时出现1004错误求助

问题分析与修复

你的代码存在三个核心问题,导致1004错误(通常因引用无效单元格或逻辑偏差触发):

  • 目标列搞反:需求是把B列内容的前4位复制到I列,但你代码里是修改B列的值,完全偏离需求。
  • 偏移方向错误:B列到I列是向右偏移7列(I列列号为9,B列是2,9-2=7),你用Offset(0,-7)会跳到A列,和需求无关。
  • 逻辑判断错误:你只在B列单元格为空时才赋值,这和“复制B列前四个字符到I列”的需求不符。

修正后的代码

Sub CopyFirstFourChars()
    Dim Cell As Range
    ' 循环B2到B100的单元格,对应赋值到I2到I100
    For Each Cell In Range("B2:B100").Cells
        ' 把当前B列单元格的前4位,赋值到同行的I列单元格
        Cell.Offset(0, 7).Value = Left(Cell.Value, 4)
    Next
End Sub

额外优化选项

如果想跳过B列空单元格(只处理有内容的B列单元格),可以添加判断:

Sub CopyFirstFourChars()
    Dim Cell As Range
    For Each Cell In Range("B2:B100").Cells
        If Cell.Value <> "" Then
            Cell.Offset(0, 7).Value = Left(Cell.Value, 4)
        End If
    Next
End Sub

内容的提问来源于stack exchange,提问作者Edmund

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 07:00:57