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
相关产品推荐
相关产品推荐

