Excel VBA 调用函数和循环

xin pds

我有以下 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章