2013-07-11 56 views
0
Sub Button53_Click() 

Dim rowsvalue As Integer 
Dim rowsnum As Integer 

rowsvalue = Sheet1.Range("C38").Value 
rowsnum = Math.Round(rowsvalue/20, 1) 

k = 0 

For Counter = 16 To 46 
    Worksheets("Single L Angle").Cells("F", Counter).Value = rowsnum * k 
    k = k + 1 
    Next Counter 
End Sub 

我不能算出这个,我试图作出VB码取从细胞“C38”的值,通过20将它,然后粘贴在细胞F16那些值 - > F36。到目前为止,一切都很好,但谈到:错误13不匹配 - For循环单元格值

Worksheets("Single L Angle").Cells("F", Counter).Value = rowsnum * k 

我不断收到失配13错误。

+2

尝试总是有“选项明确”在你的模块的第一线,这是一个很好的帮助,我可以看到你一定不要”没有激活它,因为k没有被声明。 –

回答

0

您可以使用

Worksheets("Single L Angle").Cells(Counter,6) = rowsnum * k 

或者

Worksheets("Single L Angle").range("F" & format(counter)).Value = rowsnum * k 
0
For Counter = 16 To 46 
    Worksheets("Single L Angle").Range("F" & Counter).Value = rowsnum * k 
    k = k + 1 
Next Counter 

这是否工作更好?

1

.Cells()方法将行和列作为整数。你不能像“A2”那样传递一个字符串。如果您想使用它来访问单元格,请使用该单元格的行号和列号。

E.g:选择单元格 “A2”:

Cells(1,2).Select 

所以你的情况,你想:

Worksheets("Single L Angle").Cells(Counter,6).Value = rowsnum * k 

由于F是6号。您可以通过嵌套循环来循环遍历一块单元格。

或者,您可以使用MattHead93所述的Range()方法。