我正在试验一些将数据写入表格的用户表单代码(代码是有效的)。ST 是一些命名范围:
With Range(ST)
.Cells(Range(ST).Count).Offset(1, 0).EntireRow.Insert
.Resize(Range(ST).Rows.Count + 1).Name = ST
.Cells(Range(ST).Rows.Count, 1) = Range(ST).Rows.Count - 1
.Cells(Range(ST).Rows.Count, 2) = TextBox2.Text
End With
我的问题是:
为什么我可以如下重写第二行和第三行而不影响最终结果
.Cells(.Count).Offset(1, 0).EntireRow.Insert
.Resize(.Rows.Count + 1).Name = ST
但是改变其他行,例如
.Cells(.Rows.Count, 2) = TextBox2.Text
导致表上应该包含的条目TextBox2.Text
返回一个空白单元格。
谢谢(也欢迎对代码进行任何其他杂项评论)
编辑:
不幸的是,我发布这个问题正是因为它不像你们说的那样表现。详细阅读帮助文件后,我相信这行:
“表达式在进入块时被评估一次。您不能从 With 块中重新分配表达式。”
意味着:
.Resize(Range(ST).Rows.Count + 1).Name = ST
是问题所在,并采取了两条线:
.Cells(Range(ST).Count).Offset(1, 0).EntireRow.Insert
.Resize(Range(ST).Rows.Count + 1).Name = ST
在 with 块之外,一切都按预期工作!我是否正确解释了这一点?如果我上传文件会有人感兴趣吗?(玩具实验代码不到几行)