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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2010, 19:36   #11
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

А что придумать без переменной? Если например известен диапазон поиска =Отчет!$AA$6:$AA$443

Последний раз редактировалось segail; 14.02.2010 в 19:52.
segail вне форума Ответить с цитированием
Старый 14.02.2010, 20:19   #12
Dophin
Форумчанин
 
Аватар для Dophin
 
Регистрация: 13.01.2010
Сообщений: 410
По умолчанию

а нафига что то придумывать без переменной? к чему вообще такое условие?

Практическое применение этого "без переменной" какое?
Dophin вне форума Ответить с цитированием
Старый 14.02.2010, 21:03   #13
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Заплутал в алгоритме, дополнительное условие в основной код не могу вставить, чтобы оно выполнялось перед Else.

Дополнительное условие:
Код:
            For z = 1 To 444
             If Sheets("Отчет").Cells(z, 27).Text = Sheets("Отчет").Range("AB1").Text Then
                Sheets("Отчет").Cells(z, 27).Offset(, -1).Resize(31) = ""
            Next
            End If
Основной код:
Код:
If Условие = 1 Then ' Прриход. . Начало условия 1

If CDate(Form_SelectDate.TextBox_Year) <> CDate(Sheets("Отчет").Range("R1")) Or CDate(Form_SelectDate.TextBox_Data) < CDate(Form_SelectDate.TextBox_Дата) Then
MsgBox " Год ввода данных выбран не верно, или выбранная дата опережает событие.", vbInformation, "Информационное сообщение"

'Команда - отменить выбор даты и закрыть форму
If IsDate(SelectedDate) Then SelectedDate = CStr(DateValue(dt_2))
   Unload Me
Exit Sub
End If
    
    Dim i,z As Integer
    For i = 1 To 444
        If Sheets("Отчет").Cells(i, 1).Value = CStr(DateValue(dt_1)) Then 'Поиск даты
'Удаление данных на выбранную дату, если ТextBox1 пустой
            If UserForm1.TextBox1.Text = "" Then
            With Sheets("Отчет")
             .Cells(i, 2).Resize(, 8).ClearContents ' очищаем сразу 8 ячеек
             .Cells(i, 21) = "=sum(R[-1]C)" ' Значения берутся из строки выше
             .Cells(i, 22) = "=sum(R[-1]C)" ' Значения берутся из строки выше
             
             .Cells(i, 28) = ""
            '_________________________________________________________________________
             .Cells(i, 31) = ""
            '-------------------------------------------------------------------------
            End With
            UserForm1.Label6.Caption = "Полная очистка данных на " & TextBox_Дата & " произведена"
            UserForm1.Label6.ForeColor = &HFF&
            Else
'Ввод данных на выбранную дату.
            With Sheets("Отчет")
            If Form_SelectDate.chb_Time.Value = True Then Sheets("Отчет").Cells(i, 2).Value = Form_SelectDate.Label_Hour.Caption + ":" + Form_SelectDate.Label_Minute 'Ввод времени если chb_Time обозначен галочкой
            If Form_SelectDate.chb_Time.Value = False Then Sheets("Отчет").Cells(i, 2).Value = "" 'Удаление времени если chb_Time не обозначен галочкой
             .Cells(i, 3).Value = UserForm1.TextBox1.Text + .Cells(i, 3).Value
             .Cells(i, 4).Value = UserForm1.TextBox2.Text + .Cells(i, 4).Value
             
             .Cells(i, 5).Value = VBA.Val(VBA.Replace(UserForm1.TextBox3.Text, ",", ".")) + .Cells(i, 5).Value
             .Cells(i, 6).Value = VBA.Val(VBA.Replace(UserForm1.TextBox5.Text, ",", ".")) + .Cells(i, 6).Value
             .Cells(i, 7).Value = VBA.Val(VBA.Replace(UserForm1.TextBox6.Text, ",", ".")) + .Cells(i, 7).Value

             .Cells(i, 8).Value = UserForm1.TextBox7.Text + .Cells(i, 8).Value
             .Cells(i, 9).Value = UserForm1.TextBox8.Text + .Cells(i, 9).Value
             .Cells(i, 21).Value = Range("F10").Value
             .Cells(i, 22).Value = Range("G10").Value
            
             .Cells(i, 28).Value = Round(([d13] + [d16] + [d19] + [d22]), 0) + .Cells(i, 28).Value
            '_________________________________________________________________________
            If .Cells(i, 31).Value > "" Then .Cells(i, 31) = .Cells(i, 31) & Range("A9").Value & "    " & Range("G8").Value & "    " & UserForm1.TextBox1.Text & " л. " & UserForm1.TextBox2.Text & " кг.  /  " Else .Cells(i, 31) = "/  " & Range("A9").Value & "    " & Range("G8").Value & "    " & UserForm1.TextBox1.Text & " л. " & UserForm1.TextBox2.Text & " кг.  /  "
            '-------------------------------------------------------------------------
            End With
            UserForm1.Label6.Caption = "Ввод данных прихода на " & TextBox_Дата & " произведен"
            UserForm1.Label6.ForeColor = &HC00000
           
            End If
        End If
    Next
End If 'Конец условия 1

Последний раз редактировалось segail; 14.02.2010 в 21:17.
segail вне форума Ответить с цитированием
Старый 14.02.2010, 21:28   #14
Dophin
Форумчанин
 
Аватар для Dophin
 
Регистрация: 13.01.2010
Сообщений: 410
По умолчанию

код не рассматривал

For z = 1 To 444
If Sheets("Отчет").Cells(z, 27).Text = Sheets("Отчет").Range("AB1").Text Then
Sheets("Отчет").Cells(z, 27).Offset(, -1).Resize(31) = ""
Next
End If

тут поменяйте местами End if и Next
Dophin вне форума Ответить с цитированием
Старый 14.02.2010, 21:46   #15
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Код как бы работает, но не идет очищение по данному условию, которое в предлагаемом виде
Код:
            For z = 1 To 444
             If Sheets("Отчет").Cells(z, 27).Text = Sheets("Отчет").Range("AB1").Text Then
                Sheets("Отчет").Cells(z, 27).Offset(, -1).Resize(31) = ""
            End If
            Next
вставлено непосредственно перед Else
segail вне форума Ответить с цитированием
Старый 14.02.2010, 21:56   #16
Dophin
Форумчанин
 
Аватар для Dophin
 
Регистрация: 13.01.2010
Сообщений: 410
По умолчанию

прикладывайте файл
Dophin вне форума Ответить с цитированием
Старый 14.02.2010, 22:14   #17
segail
Форумчанин
 
Регистрация: 13.06.2009
Сообщений: 691
По умолчанию

Не жалко, но не реально. Мы проведем с Вами “дружескую” беседу около недели…
Код работает все нормально. Но возникла необходимость вставить дополнительное условие до Еlse. Код также работает, но дополнительное условие не срабатывает…

Код:
If Условие = 1 Then ' Прриход. . Начало условия 1

If CDate(Form_SelectDate.TextBox_Year) <> CDate(Sheets("Отчет").Range("R1")) Or CDate(Form_SelectDate.TextBox_Data) < CDate(Form_SelectDate.TextBox_Дата) Then
MsgBox " Год ввода данных выбран не верно, или выбранная дата опережает событие.", vbInformation, "Информационное сообщение"

'Команда - отменить выбор даты и закрыть форму
If IsDate(SelectedDate) Then SelectedDate = CStr(DateValue(dt_2))
   Unload Me
Exit Sub
End If
    
    Dim i, z As Integer
    For i = 1 To 444
        If Sheets("Отчет").Cells(i, 1).Value = CStr(DateValue(dt_1)) Then 'Поиск даты
'Удаление данных на выбранную дату, если ТextBox1 пустой
            If UserForm1.TextBox1.Text = "" Then
            With Sheets("Отчет")
             .Cells(i, 2).Resize(, 8).ClearContents ' очищаем сразу 8 ячеек
             .Cells(i, 21) = "=sum(R[-1]C)" ' Значения берутся из строки выше
             .Cells(i, 22) = "=sum(R[-1]C)" ' Значения берутся из строки выше
             
             .Cells(i, 28) = ""
            '_________________________________________________________________________
             .Cells(i, 31) = ""
            '-------------------------------------------------------------------------
            End With
            UserForm1.Label6.Caption = "Полная очистка данных на " & TextBox_Дата & " произведена"
            UserForm1.Label6.ForeColor = &HFF&
            For z = 1 To 444
            
            If Sheets("Отчет").Cells(z, 27).Text = Sheets("Отчет").Range("AB1").Text Then
                Sheets("Отчет").Cells(z, 27).Offset(, -1).Resize(31) = ""
            End If
            Next
            
            
            Else


'Ввод данных на выбранную дату.
            With Sheets("Отчет")
            If Form_SelectDate.chb_Time.Value = True Then Sheets("Отчет").Cells(i, 2).Value = Form_SelectDate.Label_Hour.Caption + ":" + Form_SelectDate.Label_Minute 'Ввод времени если chb_Time обозначен галочкой
            If Form_SelectDate.chb_Time.Value = False Then Sheets("Отчет").Cells(i, 2).Value = "" 'Удаление времени если chb_Time не обозначен галочкой
             .Cells(i, 3).Value = UserForm1.TextBox1.Text + .Cells(i, 3).Value
             .Cells(i, 4).Value = UserForm1.TextBox2.Text + .Cells(i, 4).Value
             
             .Cells(i, 5).Value = VBA.Val(VBA.Replace(UserForm1.TextBox3.Text, ",", ".")) + .Cells(i, 5).Value
             .Cells(i, 6).Value = VBA.Val(VBA.Replace(UserForm1.TextBox5.Text, ",", ".")) + .Cells(i, 6).Value
             .Cells(i, 7).Value = VBA.Val(VBA.Replace(UserForm1.TextBox6.Text, ",", ".")) + .Cells(i, 7).Value

             .Cells(i, 8).Value = UserForm1.TextBox7.Text + .Cells(i, 8).Value
             .Cells(i, 9).Value = UserForm1.TextBox8.Text + .Cells(i, 9).Value
             .Cells(i, 21).Value = Range("F10").Value
             .Cells(i, 22).Value = Range("G10").Value
            
             .Cells(i, 28).Value = Round(([d13] + [d16] + [d19] + [d22]), 0) + .Cells(i, 28).Value
            '_________________________________________________________________________
            If .Cells(i, 31).Value > "" Then .Cells(i, 31) = .Cells(i, 31) & Range("A9").Value & "    " & Range("G8").Value & "    " & UserForm1.TextBox1.Text & " л. " & UserForm1.TextBox2.Text & " кг.  /  " Else .Cells(i, 31) = "/  " & Range("A9").Value & "    " & Range("G8").Value & "    " & UserForm1.TextBox1.Text & " л. " & UserForm1.TextBox2.Text & " кг.  /  "
            '-------------------------------------------------------------------------
            End With
            UserForm1.Label6.Caption = "Ввод данных прихода на " & TextBox_Дата & " произведен"
            UserForm1.Label6.ForeColor = &HC00000
           
            End If
        End If
    Next
End If 'Конец условия 1
Основа кода
Очистка данных до Else
И ввод данных после Еlse

Последний раз редактировалось segail; 14.02.2010 в 22:18.
segail вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как объявить диапазон ячеек при известных границах motorway Microsoft Office Excel 9 29.11.2009 03:08
Бейсик. Как передать в формулу диапазон ячеек? Наталья Ивановна Помощь студентам 2 02.06.2009 23:36
Добавление данных в диапазон ячеек denneo Microsoft Office Excel 1 08.02.2009 09:05
Как написать в коде чтобы диапазон А копировался как значение в диапазон В. Dorvir Microsoft Office Excel 12 23.05.2008 22:11
Создать массив только из тех элементов, у которых остаток от деления на М равен L (0<=L<=M-1) Айвенго Microsoft Office Excel 2 12.01.2008 16:28