使用variables的VBA函数中的单元格值

我是VBA新手,虽然非常简单,但我无法做到自己想做的事情。

我需要自动修改一个大(333×333)空(全零)电子表格的单元格。

在单独的电子表格中,我要修改所有单元格的行和列。 (其中5000)

for循环似乎适合于此目的。

这是我的macros代码。 问题出现在最后一行之前。

 Dim val1 As String, val2 As String, i As Integer For i = 1 To 333 Sheets("Feuil2").Activate ActiveSheet.Cells(i, 1).Select val1 = Cells(i, 1).Value val2 = Cells(i, 2).Value Sheets("Classeur2.csv").Select Cells(val1, val2).Select ActiveCell.FormulaR1C1 = "1" Next i 

导致问题的行是这样的:Cells(val1,val2).Select

我相信我的错误是一个语法错误。 但我无法find我应该添加之前,之后或在我的两个variables“val1”和“val2”

你怎么看 ?

非常感谢你的帮助。 尼古拉斯。

编辑

我的问题现在解决了:

第一个答案正是我所需要的雄性macros观工作。 第二个答案是正确和快速的方式来做到这一点。

如果您使用的是VBA,则无需激活或select表格或单元格。 你可以直接访问它。 代码:

 Dim rng As Range For Each rng In Sheets("Feuil2").Range("A1:A333") Sheets("Classeur2.csv").Cells(rng.Value, rng.Offset(, 1).Value) = "1" Next rng 

正在产生与乔的代码相同的结果。

如果由于某些原因需要切换工作表,请在macros的开始处使用Application.ScreenUpdating = False (并在末尾处Application.ScreenUpdating=True )。 这将消除屏幕闪烁 – 并加速执行。

VAL1和VAL2需要以整数forms变暗,而不是stringforms,用作单元格的参数,单元格将整数而不是string作为参数。

 Dim val1 As Integer, val2 As Integer, i As Integer For i = 1 To 333 Sheets("Feuil2").Activate ActiveSheet.Cells(i, 1).Select val1 = Cells(i, 1).Value val2 = Cells(i, 2).Value Sheets("Classeur2.csv").Select Cells(val1, val2).Select ActiveCell.FormulaR1C1 = "1" Next i