Неправильный вывод из вызова в подпрограмму - PullRequest
0 голосов
/ 16 июня 2019

Моя программа предназначена для получения данных о GPA, статусе студента и кредитных часах из рабочего листа Excel и использования их для расчета платы за обучение, платы за обучение, скидки и общей суммы, причитающейся за данного учащегося.

Я должен использовать отдельные подпрограммы для определения платы за обучение, платы, скидок и общей суммы для каждого человека в рабочей таблице.

Моя проблема заключается в том, что я пытаюсь вызвать другую подпрограмму для моего основногоПодпрограмма и получить значение, которое мне нужно, он отображает случайное число и не использует доступ к какой-либо части сборов или других установленных значений подпрограмм.

Я попытался переместить мои объявления, но код просто получает большеошибки.

'Primary subroutine
Sub Proj_5p2()

'Variables
Dim dblGPA As Double
Dim strStat As String 
Dim intRow As Integer
Dim intCredHrs As Integer
Dim curTuition As Currency
Dim curFees As Currency
Dim curDisc As Currency
Dim curTotal As Currency

'Processing
Do While (Range("a" & intRow) <> "")
    'Get required input for each row
    dblGPA = Range("c" & intRow).Value
    strStat = UCase(Range("d" & intRow).Value)
    intCredHrs = Range("e" & intRow).Value

    'Call subroutines
    Call Tuition(curTuition, intCredHrs, strStat)

    'Display subroutines
    Range("f" & intRow) = curTuition
Loop

End sub

'Call from subroutine
Sub Tuition(curTuition As Currency, intCredHrs As Integer, strStat As String)

   If strStat = "GRADUATE" Then
        If intCredHrs < 18 Then
            curTuition = 335 * intCredHrs
        Else
            curTuition = 6500
    End If

    ElseIf strStat = "UNDERGRADUATE" Then
        curTuition = 550 * intCredHrs
    End If

End Sub

Мне это нужно, чтобы рассчитать стоимость обучения студентов на основе их кредитных часов и статуса в колледже.

В моем коде у меня было зачет с 10 кредитными часами.Это должно привести к плате за обучение в размере 3350,00 долл., Но вместо этого получится значение в 300,00 долл.

Я понятия не имею, откуда оно получает 300.

1 Ответ

0 голосов
/ 16 июня 2019

Трудно сказать, не видя всего этого (данные + макрос), но я бы поставил на тот факт, что в основной подпрограмме у вас нет объявления Workbook или Worksheet. Теперь он может читать с какого-то другого листа или даже из открытой книги.

Я бы добавил:

    Sub Proj_5p2()

    ' Delcare your workbook and worksheet
    Dim wb as Workbook
    Dim ws as Worksheet
    ' If data in the same workbook as the macro,
    ' or a static name: Set wb = Workbooks("bookname.xlsx")
    Set wb = ThisWorkbook 
    Set ws = wb.Worksheets("nameofsheet")


    'Variables
    Dim dblGPA As Double
    Dim strStat As String 
    Dim intRow As Integer
    Dim intCredHrs As Integer
    Dim curTuition As Currency
    Dim curFees As Currency
    Dim curDisc As Currency
    Dim curTotal As Currency

    ' Adds the worksheet reference, now each range object with .Range
    With ws

    'Processing
    Do While (.Range("a" & intRow) <> "")
    'Get required input for each row
    dblGPA = .Range("c" & intRow).Value
    strStat = UCase(.Range("d" & intRow).Value)
    intCredHrs = .Range("e" & intRow).Value

    'Call subroutines
    Call Tuition(curTuition, intCredHrs, strStat)

    'Display subroutines
    .Range("f" & intRow) = curTuition
    Loop

    End With

End sub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...