所以我试图在Excel中使用VBA根据一些输入自动生成工作表。
我的问题是,当我尝试使用VBA将变量分配给单元格时,没有任何反应。
此测试代码有效:
<input ng-model="myVar"></input>
这段代码(我关心的代码)没有:
Worksheets(sheetName).Cells(1, 1).Value = 1
这也有用,虽然它只使用了Rnd()一次(我应该预期):
Const ROW_START As Integer = 3
For row = ROW_START To (ROW_START + 10000) Step 1
Worksheets(sheetName).Cells(row, RAM_COL).Value = Rnd()
Next
我有很多这样的循环,但都没有。我也尝试在一段时间内将字符串分配给单元格值,这也不起作用。
创建sheetName引用的工作表没有任何问题。
感谢您提供的任何帮助
答案 0 :(得分:2)
除了未声明或未分配的变量之外,批量加载公式并恢复为结果值将大大加快操作速度。
Dim rw As Long, row_start As Long, row_end As Long, ram_col As Long, sheet_name As String
row_start = 3
row_end = row_start + 10000
ram_col = 1
sheet_name = "Sheet2"
With Worksheets(sheet_name)
'this should take less than ½ second
With .Range(.Cells(row_start, ram_col), .Cells(row_end, ram_col))
.Clear
.Formula = "=rand()"
.Value = .Value2
End With
'this takes 3-4 seconds
For rw = row_start To row_end Step 1
.Cells(rw, ram_col).Value = Rnd()
Next
End With