Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2010, 10:59   #1
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию Правильность расстановки переменных

Здравствуйте.
Подскажите, правильна ли расстановка переменных i, q, a, b, d в коде?
Код:
Private Sub Cmd_Select_Click()
    
If Дата Or Год Then
    '...
    Exit Sub
End If

Dim i As Integer
Dim q As Integer
Dim a: Dim b: Dim d
For i = 1 To 444
For q = 1 To 444
'=============================================================================
If Условие = 1 Then 'Условие1
    If Условие = 1.1 Then
        If i = Дата Then
            If i3 = "" Then
                '...
                Exit Sub
            End If
                With ooo
                    a = i = 1 + i = 2 + 1 = 2
                    b = i = 3 + i = 4 + i = 5
                    d = i = 6
                        If (a - b - d) < 0 Then
                            '...
                            Exit Sub
                        End If
                End With
                    If Условие = 1.2 Then
                        If Условие = 1.3 Then
                            '...
                                With ooo
                                    '...
                                End With
                                    '...
                        End If
                    End If
        Else
            If Условие = 1.4 Then
                '...
            Else
                '...
                    If Условие = 1.5 Then
                        If Условие = 1.6 Then
                            '...
                        End If
                    End If
            End If
        End If
    End If
End If 'Конец условия 1
'=============================================================================
If Условие = 2 Then 'Условие2
    If Условие = 2.1 Then
        '...
        Exit Sub
    End If
        If i = Дата Then
            If MsgBox() = vbYes Then GoTo wyhod
                '...
                Exit Sub
wyhod:
                    '...
        End If
            If q = Месяц Then
                If Условие = 2.2 Then q
            End If
                    '...
End If 'Конец условия 2
'=============================================================================
If Условие = 3 Then 'Условие3
    If Условие = 3.1 Then
        '...
        Exit Sub
    End If
        If i = Дата Then
            If i26 = "" Then
                '...
                Exit Sub
            End If
        End If
            If Условие = 3.2 Then
                If Условие = 3.3 Then
                        If i = Дата Then
                            '...
                        End If
                End If
            End If
End If 'Конец условия 3
'=============================================================================
'If Условие = 4 Then 'В разработке
    '...
        'If i = Дата Then
            '...
        'End If
    '...
'End If 'Конец условия 4
'=============================================================================
'If Условие = 5 Then 'В разработке
    '...
        'If i = Дата Then
            '...
        'End If
    '...
'End If 'Конец условия 5
'=============================================================================
Next
    '...
End Sub

Последний раз редактировалось segail; 01.09.2010 в 11:29.
segail вне форума Ответить с цитированием
Старый 01.09.2010, 12:55   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
With ooo
a = i = 1 + i = 2 + 1 = 2
b = i = 3 + i = 4 + i = 5
d = i = 6
If (a - b - d) < 0 Then
'...
Exit Sub
Я так и не постиг всю глубину глубин смыcла кода но
Код:
If (a - b - d) < 0 Then
                            '...
     Exit Sub
Это условие никогда не сработает,
всегда a=0 ,b=0
d при i =6 примет значение-1,в остальных случаях 0
ИТОГО a - b - d=0,
только при i=6 a - b - d=1
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 01.09.2010, 12:59   #3
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Попробуйте словами описать, что вы хотели сделать (типа "присваиваем переменной а значение ..."):
Код:
With ooo
    a = i = 1 + i = 2 + 1 = 2
    b = i = 3 + i = 4 + i = 5
    d = i = 6 ...
End With
Там, где много If-Then, может лучше, например:
Код:
Select Case Условие
    Case 1.4
        ...
    Case 1.5
        ...
    Case 1.6
        ...
    ...
End Select
Медленно пишу, повтор получился.

Последний раз редактировалось nilem; 01.09.2010 в 13:02.
nilem вне форума Ответить с цитированием
Старый 01.09.2010, 16:57   #4
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Условие здесь проставлены условно, мне главное переменные.
Мне кажется, я с Next напутал, или еще одно дополнительное Next необходимо поставить, где то…
segail вне форума Ответить с цитированием
Старый 01.09.2010, 17:01   #5
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

А насчет этого куска кода он выглядит так
Код:
                With Sheets("Отчет")
                    a = .Cells(i, 11).Value + .Cells(i, 13).Value + .Cells(i, 14).Value
                    b = .Cells(i, 3).Value + .Cells(i, 5).Value + .Cells(i, 6).Value + .Cells(i, 8).Value
                    d = .Cells(i, 16).Value
                        If (a - b - d) < 0 Then
                            MsgBox "Внимание! Зафиксировано грубое нарушение учета движения ГСМ." & vbCrLf & "При удалении данных прихода за " & .Cells(i, 1) & " значение конечного остатка составит " & Format((a - b - d), "0.000") & " л. Удаление запрещено.", 16, "Запрет удаления"
                            'Команда - отменить выбор даты и закрыть форму
                            If IsDate(SelectedDate) Then SelectedDate = CStr(DateValue(dt_2))
                            Unload Me
                            Exit Sub
                        End If
                End With
segail вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм Лас Вегаса для расстановки восьми ферзей Сурка Помощь студентам 18 31.05.2010 18:59
Программы расстановки переносов в тексте на русском и английском языке. Lazio Фриланс 8 15.10.2009 17:49
Нужна помощь с алгоритмом расстановки ударения в предложении. Gauss Общие вопросы Delphi 10 14.04.2008 15:31
проверить правильность расстановки операторов begin и end Тёмка Помощь студентам 1 10.12.2007 13:07
Вопрос по организации поиска и расстановки меток Melifaro Компоненты Delphi 4 01.11.2007 09:53