Страница 1 из 1

if\ case vba

Добавлено: 17 ноя 2010, 17:36
akva
помогите решить 2 задачки, только начали проходить vba а уже грузят по жести
1. IF. Определить делителем каких из чисел a,b,c является число k
2. CASE. Составить программу которая по заданным году и номеру месяца m определяет количестводней в этом месяце
Буду очен благодарен если кто нибудь откликнется

Re: if\ case vba

Добавлено: 17 ноя 2010, 18:48
VictorM
Насчет If не совсем понял, Case, см. применение и использование.
Управляющая инструкция Select Case 'End Select

Re: if\ case vba

Добавлено: 18 ноя 2010, 12:06
Asya
2.

Функция:

Код: Выделить всё

Function MonthDayCount(iyear As Integer, imonth As Integer) As Integer

Dim LeapYear As Boolean

LeapYear = IIf(month(DateSerial(iyear, 2, 29)) = 2, True, False)

    Select Case imonth
           Case 1, 3, 5, 7, 8, 10, 12
           MonthDayCount = 31
           Case 4, 6, 9, 11
           MonthDayCount = 30
           Case 2
           MonthDayCount = IIf(LeapYear = True, 29, 28)
    End Select


End Function

Re: if\ case vba

Добавлено: 19 ноя 2010, 07:03
SAS888
1. Возможно, что нужно нечто подобное:

Код: Выделить всё

Sub Делитель()
    Dim a As Long, b As Long, c As Long, k As Long, msg As String
    a = 12: b = 13: c = 14: k = InputBox("Введите делитель k")
    If a Mod k = 0 Then msg = ", " & a
    If b Mod k = 0 Then msg = msg & ", " & b
    If c Mod k = 0 Then msg = msg & ", " & c
    If Len(msg) = 0 Then MsgBox "Число " & k & " не является делителем для чисел " & a & ", " & b & " и " & c _
        Else MsgBox "Число " & k & " является делителем для: " & Right$(msg, Len(msg) - 2)
End Sub
2. Если Вам обязательно требуется использовать Select Case, то Asya Вам уже дал ответ.
Хотя, данную задачу можно решить существенно проще:

Код: Выделить всё

Sub Год_Месяц()
    Dim Y As Integer, M As Integer
    Y = InputBox("Введите год"): M = InputBox("Введите номер месяца")
    MsgBox "Дней в " & G & " году, в месяце " & MonthName(M) & ": " & Day(DateSerial(Y, M + 1, 1) - 1)
End Sub
P.S. Если нужно, добавьте проверку на "правильность" ввода данных пользователем.