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

Excel VBA如何用嵌套For循环实现UserForm的TextBox内容写入指定单元格

问题根因

你现有的代码存在两层循环逻辑冲突:

  • J7:J20、K7:K20总共只有14行数据,外层i循环到20本身就超出了目标范围
  • 内层j循环每次遍历14个奇数序号文本框,会导致每个J列单元格被重复赋值14次,最终所有J列单元格只会保留TextBox27的内容,同时完全没有处理对应K列的另一半文本框

修正后代码

假设你的文本框序号规则为:奇数序号(1/3/5…27)对应J7到J20逐行写入,偶数序号(2/4/6…28)对应K7到K20逐行写入,代码可改为:

Private Sub ApplyButton_Click()
    Dim rowNum As Integer
    For rowNum = 1 To 14
        ' 奇数序号文本框写入J列,行号从7开始 = rowNum + 6
        Sheet1.Range("J" & rowNum + 6).Value = Me.Controls("TextBox" & (rowNum * 2 - 1)).Value
        ' 偶数序号文本框写入K列
        Sheet1.Range("K" & rowNum + 6).Value = Me.Controls("TextBox" & (rowNum * 2)).Value
    Next rowNum
End Sub

逻辑说明

  • 单循环遍历14行即可完成所有文本框和单元格的匹配,无需嵌套循环,避免内容被覆盖
  • 如果你的文本框序号对应规则和上述假设不同,只需要调整Controls后括号内的文本框序号计算规则即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:57:03