powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / при сдвиге месяца, выполнить нужный код.
19 сообщений из 44, страница 2 из 2
при сдвиге месяца, выполнить нужный код.
    #36721443
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Как его устроить та?
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721445
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segailShocker.Pro,
Как его устроить та?
Блин
Код: plaintext
1.
2.
For j= 1  to  12 
  .Cells(i + формула,  21 ).Value =  0 : .Cells(i + формула,  26 ).Resize( 31 ) = "": .Cells(i + формула,  31 ).Resize( 31 ) = ""
Next
формулу, надеюсь, сами сможете сделать
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721450
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Что-то проясняется. Попробую.
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721455
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segailShocker.Pro,
Что-то проясняется. Попробую.

Может сначала почитать учебник в разделе "циклы"?

P.S. Зачем вы 450 раз очищаете почти одни и те же ячейки?
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721460
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Да я английский не шарю.
Как одни и те же ячейки. Если идет очищение февраля, то должны очистятся все ячейки последующих месяцев, кроме января. Или я Вас опять не понял?
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721463
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВызов процедуры "по указателю" можно реализовать с помощью классов CreateObject (progid - переменная) или с помощью CallByName (переменная — название метода).

CreateObject - ты имеешь ввиду - создать собственный класс и потом создавать его экземпляр?

Но я несколько другое имел ввиду - вроде получали адрес процедуры с помощью Address Of и потом вызывали с помощью какой-то недокументированной функции... Ну может это был и не ты...
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721468
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segailДа я английский не шарю.
Учебников достаточно на русском

segailКак одни и те же ячейки. Если идет очищение февраля, то должны очистятся все ячейки последующих месяцев, кроме января. Или я Вас опять не понял?
Возьмем вот этот фрагмент внутри цикла:
Код: plaintext
Cells(i +  148 ,  26 ).Resize( 31 ) = ""
грубо говоря, при первом проходе цикла очищается диапазон "Z149:Z180"
при втором проходе "Z150:Z181"
при третьем проходе "Z151:Z182"
и так 450 раз

То есть отдельно взятая ячейка (скажем, "Z181" будет очищена 31 раз) и так почти каждая (за исключением крайних).
"Первое лезвие бреет чисто, второе еще чище.... 31-е полирует челюсть" (с)
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721472
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Не понял, почему он столько раз очищается…
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721473
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segailShocker.Pro,
Не понял, почему он столько раз очищается…
Это я не понял, поэтому и задал вам вопрос - "зачем?"
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721476
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Ну как я предполагал до этого, найденный диапазон очищается и на этом все…
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721479
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segailShocker.Pro,
Ну как я предполагал до этого, найденный диапазон очищается и на этом все…
и где же команда, которая обеспечивает "на этом все"?
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721481
segail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proи где же команда, которая обеспечивает "на этом все"?
Чем дальше в лес, тем больше дров…

Какую литературу можно почитать, как говорят, написано легко для понимания.
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721483
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
segailShocker.Proи где же команда, которая обеспечивает "на этом все"?
Чем дальше в лес, тем больше дров…
Какую литературу можно почитать, как говорят, написано легко для понимания.
для понимания основ.... в общем-то любую

Конкретных рекомендаций дать не могу, поищите в этой ветке по слову "литература"
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721566
Gray_Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
segail
Чем дальше в лес, тем больше дров…
Какую литературу можно почитать, как говорят, написано легко для понимания.
Тут дело даже не в литературе, а в понимании того что вы хотите сделать.
Вот пример:
Ваша процедура:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Public Sub Test()
    Dim i As Integer
    For i =  1  To  450 
        With Sheets("Отчет")
            If Form_SelectDate.ComboBox_Month = CStr(.Cells(i,  27 ).Text) Or UserForm4.ComboBox1 = CStr(.Cells(i,  27 ).Text) Then 
                ' Удаление данных на выбранный месяц, и ниже следующих м-ц
                .Cells(i +  35 ,  21 ).Value =  0 : .Cells(i,  26 ).Resize( 31 ) = "": .Cells(i,  31 ).Resize( 31 ) = "" 'a*
                .Cells(i +  72 ,  21 ).Value =  0 : .Cells(i +  37 ,  26 ).Resize( 31 ) = "": .Cells(i +  37 ,  31 ).Resize( 31 ) = ""
                .Cells(i +  109 ,  21 ).Value =  0 : .Cells(i +  74 ,  26 ).Resize( 31 ) = "": .Cells(i +  74 ,  31 ).Resize( 31 ) = ""
                .Cells(i +  146 ,  21 ).Value =  0 : .Cells(i +  111 ,  26 ).Resize( 31 ) = "": .Cells(i +  111 ,  31 ).Resize( 31 ) = ""
                .Cells(i +  183 ,  21 ).Value =  0 : .Cells(i +  148 ,  26 ).Resize( 31 ) = "": .Cells(i +  148 ,  31 ).Resize( 31 ) = ""
                .Cells(i +  220 ,  21 ).Value =  0 : .Cells(i +  185 ,  26 ).Resize( 31 ) = "": .Cells(i +  185 ,  31 ).Resize( 31 ) = ""
                .Cells(i +  257 ,  21 ).Value =  0 : .Cells(i +  222 ,  26 ).Resize( 31 ) = "": .Cells(i +  222 ,  31 ).Resize( 31 ) = ""
                .Cells(i +  294 ,  21 ).Value =  0 : .Cells(i +  259 ,  26 ).Resize( 31 ) = "": .Cells(i +  259 ,  31 ).Resize( 31 ) = ""
                .Cells(i +  331 ,  21 ).Value =  0 : .Cells(i +  296 ,  26 ).Resize( 31 ) = "": .Cells(i +  296 ,  31 ).Resize( 31 ) = ""
                .Cells(i +  368 ,  21 ).Value =  0 : .Cells(i +  333 ,  26 ).Resize( 31 ) = "": .Cells(i +  333 ,  31 ).Resize( 31 ) = ""
                .Cells(i +  405 ,  21 ).Value =  0 : .Cells(i +  370 ,  26 ).Resize( 31 ) = "": .Cells(i +  370 ,  31 ).Resize( 31 ) = ""
                .Cells(i +  442 ,  21 ).Value =  0 : .Cells(i +  407 ,  26 ).Resize( 31 ) = "": .Cells(i +  407 ,  31 ).Resize( 31 ) = ""
            End If
        End With
    Next
End Sub

Вот тот-же код но совсем немного подумав:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Sub Test()
    Dim i As Integer
    Dim const as Integer
    const= 0 
    For i =  1  To  450 
        With Sheets("Отчет")
            If Form_SelectDate.ComboBox_Month = CStr(.Cells(i,  27 ).Text) Or UserForm4.ComboBox1 = CStr(.Cells(i,  27 ).Text) Then 
                ' Удаление данных на выбранный месяц, и ниже следующих м-ц
                .Cells(i +  35  + const,  21 ).Value =  0 : .Cells(i + const,  26 ).Resize( 31 ) = "": .Cells(i + const,  31 ).Resize( 31 ) = "" 'a*
                const = const +  37 
            End If
        End With
    Next
End Sub
Найдите 10 отличий в результате...
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721567
Gray_Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя главная проблема тут всё-же в этом адском цикле...
Код: plaintext
For i =  1  To  450 
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721570
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gray_Wolf
Найдите 10 отличий в результате...
Я нашел.
Вы забыли внутренний цикл (1-12).
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721571
Gray_Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Упс, ошибся, конечно-же процедура будет выглядеть так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Sub Test()
    Dim i As Integer
	Dim j As Integer
	Dim const as Integer
    For i =  1  To  450 
	const =  0 
        With Sheets("Отчет")
            If Form_SelectDate.ComboBox_Month = CStr(.Cells(i,  27 ).Text) Or UserForm4.ComboBox1 = CStr(.Cells(i,  27 ).Text) Then 'a*    Form_SelectDate.ComboBox_Month = месяц  или  UserForm4.ComboBox1 = месяц
                ' Удаление данных на выбранный месяц, и ниже следующих м-ц
                For j =  1  to  12 
				.Cells(i +  35  + const,  21 ).Value =  0 : .Cells(i + const,  26 ).Resize( 31 ) = "": .Cells(i + const,  31 ).Resize( 31 ) = "" 'a*
				const = const +  37 
				next j
            End If
        End With
    Next i
End Sub
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721575
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gray_WolfУпс, ошибся, конечно-же процедура будет выглядеть так:
На самом деле, в переменной const нет абсолютно никакой необходимости.
Либо For со Step 37, либо домножать j на 37
...
Рейтинг: 0 / 0
при сдвиге месяца, выполнить нужный код.
    #36721694
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAntonariyВызов процедуры "по указателю" можно реализовать с помощью классов CreateObject (progid - переменная) или с помощью CallByName (переменная — название метода).

CreateObject - ты имеешь ввиду - создать собственный класс и потом создавать его экземпляр?

Но я несколько другое имел ввиду - вроде получали адрес процедуры с помощью Address Of и потом вызывали с помощью какой-то недокументированной функции... Ну может это был и не ты...Вполне документированной — CallWindowProc. Просто в VB смысла в этом нет. Какая разница, какой переменной описана функция, long-указателем или sting-названием? Только в сложности вызова.
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / при сдвиге месяца, выполнить нужный код.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]