+ Reply to Thread
Results 1 to 4 of 4

Public Function Problems

  1. #1
    Registered User
    Join Date
    12-24-2005
    Posts
    3

    Public Function Problems

    Hi,

    I am very new to VBA and am attempting to use a public Function without much luck.

    What I need is I have 6 test results in columns C to H and I need a Public Function to add the scores up make certain divisions and output a mark e.g Merit for the score they achieved. I have attempted it in the code below and have chopped and changed thing so much I am now totally confused.

    This is the code...

    Please Login or Register  to view this content.
    Any help anyone can offer would be great!

    Thanks

    Andy

  2. #2
    Bob Phillips
    Guest

    Re: Public Function Problems

    At the very least you need to properly identify ranges

    Do Until Range("$I" & ActiveCell.Row) = ""
    If Range("$H" & ActiveCell.Row) = 0 Then

    but you really should not be using activecell and hardcoded columns in a
    UDF, you should pass them as UDF arguments. Similarly, it is better to
    declare the whole range rather than just one cell and offset it, as changes
    to any of those cells will trigger a recalc of your UDF.

    What exactly are you trying to do with the data in H & I?

    --
    HTH

    Bob Phillips

    (remove nothere from email address if mailing direct)

    "Andy123" <[email protected]> wrote in
    message news:[email protected]...
    >
    > Hi,
    >
    > I am very new to VBA and am attempting to use a public Function without
    > much luck.
    >
    > What I need is I have 6 test results in columns C to H and I need a
    > Public Function to add the scores up make certain divisions and output
    > a mark e.g Merit for the score they achieved. I have attempted it in
    > the code below and have chopped and changed thing so much I am now
    > totally confused.
    >
    > This is the code...
    >
    >
    > Code:
    > --------------------
    >
    > Option Explicit
    >
    > Public Function Grade(cell As Range) As String
    >
    > Dim dblTest1 As Double
    > Dim dblTest2 As Double
    > Dim dblTest3 As Double
    > Dim dblTest4 As Double
    > Dim dblTest5 As Double
    > Dim dblProject As Double
    > Dim dblTotal As Double
    >
    > Do Until "$I" & ActiveCell.Row = ""
    > If "$H" & ActiveCell.Row = 0 Then
    > Grade = "No Project"
    > Else
    > dblTest1 = cell.Offset(0, -6).Value
    > dblTest2 = cell.Offset(0, -5).Value
    > dblTest3 = cell.Offset(0, -4).Value
    > dblTest4 = cell.Offset(0, -3).Value
    > dblTest5 = cell.Offset(0, -2).Value
    > dblProject = cell.Offset(0, -1).Value
    >
    > dblTest1 = (dblTest1 / 20)
    > dblTest2 = (dblTest2 / 20)
    > dblTest3 = (dblTest3 / 10)
    > dblTest4 = (dblTest4 / 10)
    > dblTest5 = (dblTest5 / 5)
    > dblProject = (dblProject / 2)
    >
    > dblTotal = dblTest1 + dblTest2 + dblTest3 + dblTest4 _
    > + dblTest5 + dblProject
    >
    > Select Case dblTotal
    > Case Is < 40
    > Grade = "Not Achieved"
    > Case Is < 60
    > Grade = "Pass"
    > Case Is < 80
    > Grade = "Merit"
    > Case Is < 100
    > Grade = "Distinction"
    > Case Else
    > Grade = "Error"
    > End Select
    >
    > End If
    > Loop
    > End Function
    >
    > --------------------
    >
    >
    > Any help anyone can offer would be great!
    >
    > Thanks
    >
    > Andy
    >
    >
    > --
    > Andy123
    > ------------------------------------------------------------------------
    > Andy123's Profile:

    http://www.excelforum.com/member.php...o&userid=29886
    > View this thread: http://www.excelforum.com/showthread...hreadid=495902
    >




  3. #3
    Registered User
    Join Date
    12-24-2005
    Posts
    3
    Hi Bob,

    I have a spreadsheet that has a student name in column B, in column C is the first test result, in column D the second test result, column E has the third test result, F has the fourth, G has the fifth, and H has the sixth. In column I i would like to add a function that will add up all the scores and if the overall score is under 40 they failed under 60 they pass and so on. I want it to show the words instead of the score so I am guessing I need a case statement.

    Hope this helps.

    Andy

  4. #4
    Registered User
    Join Date
    12-24-2005
    Posts
    3
    Bump.

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1