【发布时间】:2018-07-07 19:21:30
【问题描述】:
我正在尝试编写一个程序,该程序将根据每个学生的分数向他们显示字母等级。基本上,指示的等级将显示在 C 列中。从数据表中,John 将获得等级“A”,因为他的分数高于或等于 85。另外,他的等级单元格将被填充为绿色并居中对齐.但是,对于分数低于 35 的学生,学生将在 C 列中获得“F”级。此外,该学生的整行(A、B、C 列)将被填充为红色。当我尝试运行程序时,我得到一个
运行时错误 = '1004'。
有人知道如何解决这个问题吗?
**也是我用数据计算行列的方法对吗?
Sub Green()
Dim Mark As Integer
Dim c As Integer
Dim r As Integer
Dim i As Integer
Dim j As Integer
r = Cells(Rows.Count, 1).End(xlUp).row
c = (Selection.End(xlToRight).row) / r
For i = 0 To r
For j = 0 To c
Mark = Range(i, "B").Value
If Mark >= 85 And Mark <= 100 Then
Range(i, "C").Value = "A"
Range(i, "C").Interior.Color = RGB(0, 255, 0)
Range(i, "C").HorizontalAlignment = xlCenter
ElseIf Mark >= 0 And Mark <= 35 Then
Range(i, "C").Value = "F"
Range(i, j).Interior.Color = RGB(255, 0, 0)
Range(i, "C").HorizontalAlignment = xlCenter
Else
End If
Next j
Next i
MsgBox ("Rows = " & r)
MsgBox ("Columns =" & c)
End Sub
【问题讨论】:
-
在
c = (Selection.End(xlToRight).row) / r中的.row不应该是.column吗?此外,您为什么要依赖Selection以及产生错误的代码行是什么? -
声明变量只要
c r i j -
@Jeep 是的,这是列的计数。但是我不知道为什么当只使用 A 列和 B 列时,列数的输出显示为 8。错误状态“应用程序定义或对象定义错误”
-
c = cells(columns.count, r).End(xlToLeftt).column并开始使用正确引用的父工作表。
标签: vba excel for-loop runtime-error