我有以下 2 个代码,第二个正在尝试使用 call 函数来调用第一个代码。
我在范围内有一些分数(“e42:e48”)。
但是,第二个代码不通过分数列表,它一次只检查每个分数,直到单击下一个分数并运行代码。
非常感谢您的帮助。谢谢。辛
Sub IfElseIfTest_1()
Dim score As Integer
score = activecell.Value
If score >= 0 And score <= 35 Then
activecell(1, 2).Value = "F"
activecell(1, 2).HorizontalAlignment = xlCenter
activecell(1, 3).Value = "Terrible - needs attention"
ElseIf score >= 36 And score <= 50 Then
activecell(1, 2).Value = "D"
activecell(1, 2).HorizontalAlignment = xlCenter
activecell(1, 3).Value = "Needs attention"
ElseIf score >= 51 And score <= 65 Then
activecell(1, 2).Value = "C"
activecell(1, 2).HorizontalAlignment = xlCenter
activecell(1, 3).Value = "Not bad, could do better"
ElseIf score >= 66 And score <= 80 Then
activecell(1, 2).Value = "B"
activecell(1, 2).HorizontalAlignment = xlCenter
activecell(1, 3).Value = "Good score"
ElseIf score >= 81 And score <= 100 Then
activecell(1, 2).Value = "A"
activecell(1, 2).HorizontalAlignment = xlCenter
activecell(1, 3).Value = "Excellent score, well done!"
Else
MsgBox "Score not valid"
End If
End Sub
Sub IfElseIfTest_1_CallFunction()
Dim score As Range
' need to Dim cell as RANGE, IF AS STRING WILL NOT WORK.
For Each score In Range("e42:e48")
Call IfElseIfTest_1
Next score
End Sub
您应该避免使用SELECT
,并ACTIVATE
提到在这里。试试下面的代码。
Sub IfElseIfTest_1(cel As Range)
Dim score As Integer
score = cel.Value
If score >= 0 And score <= 35 Then
cel.Offset(0, 1).Value = "F"
cel.Offset(0, 2).Value = "Terrible - needs attention"
ElseIf score >= 36 And score <= 50 Then
cel.Offset(0, 1).Value = "D"
cel.Offset(0, 2).Value = "Needs attention"
ElseIf score >= 51 And score <= 65 Then
cel.Offset(0, 1).Value = "C"
cel.Offset(0, 2).Value = "Not bad, could do better"
ElseIf score >= 66 And score <= 80 Then
cel.Offset(0, 1).Value = "B"
cel.Offset(0, 2).Value = "Good score"
ElseIf score >= 81 And score <= 100 Then
cel.Offset(0, 1).Value = "A"
cel.Offset(0, 2).Value = "Excellent score, well done!"
Else
MsgBox "Score not valid"
End If
cel.Offset(0, 1).HorizontalAlignment = xlCenter
End Sub
Sub IfElseIfTest_1_CallFunction()
Dim score As Range
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet4") 'change Sheet4 to your data sheet
Application.ScreenUpdating = False
For Each score In ws.Range("e42:e48")
Call IfElseIfTest_1(score) 'call IfElseIfTest_1 by passing range score
Next score
Application.ScreenUpdating = True
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句