Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
42 / 4 / 0
Регистрация: 27.02.2013
Сообщений: 84

Application.Ontime и процедура с параметрами

22.04.2013, 11:02. Показов 5475. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Хочу вызвать процедуру BlinkingCell через каждые 3 секунды. Проблема в том, что процедура имеет входящие параметры: x,y, color1, color2. В справочнике про Application.OnTime процедура, кот-ую нужно вызывать заключена в кавычки и не имеет входяших параметров. Когда я заключаю в кавычки свою процедуру, появляется ошибка: не удается выполнить макрос. возможно макрос отсутствует в книге. Если же без кавчек, то такая ошибка: Expected function or variable и выделяет BlinkingCell в строке с Application.Ontime. Что посоветуете?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub BlinkingCell(x, y, color1, color2)
   Static intCalls As Integer  ' Счетчик количества миганий
    ' Если ячейка мигала менее 10 раз, то изменим _
    в очередной раз ее цвет
    Worksheets("Karta").Activate
   If intCalls < 20 Then
      intCalls = intCalls + 1
      ' Определение, какой цвет необходимо установить
      If Cells(x, y).Interior.ColorIndex <> color1 Then
         ' Цвет ячейки не color1, так что теперь назначим _
          именно цвет color1
         Cells(x, y).Interior.ColorIndex = color1
      Else
         ' Назначим ячейке цвет color2
         Cells(x, y).Interior.ColorIndex = color2
      End If
 
      ' Эту процедуру необходимо вызвать через 3 секунд
      Application.OnTime Now + TimeValue("00:00:03"), BlinkingCell(x, y, color1, color2)
   Else
      ' Хватит мигать
      Cells(x, y).Interior.ColorIndex = xlNone
      intCalls = 0
   End If
End Sub
 
Public Sub test_color()
Call BlinkingCell(2, 1, 1, 18)
End Sub
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2013, 11:02
Ответы с готовыми решениями:

Аналог Application.OnTime в OutLook
нужен аналог функции Application.OnTime в Outlook, по аналогии Excel такое решение подходит так как грузит зря процессор Public Sub...

Application.onTime повторно вызывает открытие документа
Добный день. Целый день бьюсь над этой проблемой. Суть в том, что скорее всего (это я уже методом тыка понял) после закрытия книги метод...

Перевод функций Application.OnTime и Format из VBA в VBS
хочу перевести в vbs файл код из vba excel. Private Sub Workbook_Open() ' если будет файлик vbs то я пропишу автозапуск с bat файла ...

2
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,907
22.04.2013, 11:11
Попробуйте обойтись общими переменными -
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
option explicit
dim x, y, color1, color2
 
Sub BlinkingCell()'x, y, color1, color2)
   Static intCalls As Integer  ' Счетчик количества миганий
    ' Если ячейка мигала менее 10 раз, то изменим _
    в очередной раз ее цвет
    Worksheets("Karta").Activate
   If intCalls < 20 Then
      intCalls = intCalls + 1
      ' Определение, какой цвет необходимо установить
      If Cells(x, y).Interior.ColorIndex <> color1 Then
         ' Цвет ячейки не color1, так что теперь назначим _
          именно цвет color1
         Cells(x, y).Interior.ColorIndex = color1
      Else
         ' Назначим ячейке цвет color2
         Cells(x, y).Interior.ColorIndex = color2
      End If
 
      ' Эту процедуру необходимо вызвать через 3 секунд
      Application.OnTime Now + TimeValue("00:00:03") ', BlinkingCell(x, y, color1, color2)
   Else
      ' Хватит мигать
      Cells(x, y).Interior.ColorIndex = xlNone
      intCalls = 0
   End If
End Sub
 
Public Sub test_color()
x=2:y=1:color1=1:color2=18
Call BlinkingCell '(2, 1, 1, 18)
End Sub
2
0 / 0 / 0
Регистрация: 07.07.2017
Сообщений: 32
03.02.2019, 11:25
Всем Добрейшего времени суток!
Подскажите эффективный способ выбора информации из листа Excel в TreeView. Делаю вот так (но длительный процесс):
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Public Sub StructTREE()
    Dim strYes As String
    Dim KeyNod As String
    Dim NameSheetAccounting As String 'имя листа
        NameSheetAccounting = "Stock 2018"
    Dim Col As Integer
    
    Set My_Nod = UserForm1.TreeView1.Nodes.Add(, , "Major", "Главная")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Major", tvwChild, "Stock", "Склад")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Stock", tvwChild, "Y1", "Провода и кабели")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Stock", tvwChild, "Light", "Осветительное оборудование")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Light", tvwChild, "Light_1", "Светильники, пржектроры")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Light", tvwChild, "Light_2", "Лампы (разные)")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Stock", tvwChild, "Y3", "Электроустановочное оборудование")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Y3", tvwChild, "Instal_1", "Выключатели (разные)")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Y3", tvwChild, "Instal_2", "Розетки (разные)")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Y3", tvwChild, "Instal_3", "Кабель-каналы и лотки")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Stock", tvwChild, "Y4", "Силовое и коммутационное оборудование")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Stock", tvwChild, "Boxing", "Щитовое оборудование")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Stock", tvwChild, "Energo", "Учет электроэнергии")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Stock", tvwChild, "Y5", "LEGRAND")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Y5", tvwChild, "LEG_1", "Линейка ""Mosaic""")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Y5", tvwChild, "LEG_2", "Линейка ""Valena""")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Y5", tvwChild, "LEG_3", "Кабельные конструкции Legrand")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Y5", tvwChild, "LEG_4", "Силовое и коммутационное оборудование")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Stock", tvwChild, "Conditioner", "Kондиционеры")
    Set My_Nod = UserForm1.TreeView1.Nodes.Add("Stock", tvwChild, "Y6", "РАЗНОЕ")
    
    
            'записать в Tree все кабели
        strYes = "Кабель"
        KeyNod = "Y1"
        UserForm1.KeyNod_Child = 0
        Col = 6
        '
        UserForm1.ProgressBar1.Value = 2
        UserForm1.lblProgress.Caption = "Загрузка: " & UserForm1.ProgressBar1.Value & "%"
       RecTree NameSheetAccounting, strYes, KeyNod, Col '1-й заход в процедуру
       '....................................
       '....................................
       RecTree NameSheetAccounting, strYes, KeyNod, Col 'n-й заход в процедуру
End Sub
 
 
Public Sub RecTree(ByVal NameSheetAccounting As String, ByVal strYes As String, ByVal KeyNod As String, ByVal Col As Integer)
 
    Dim cnt As Integer
    Dim cntKey As Integer
    Dim LastRow As Integer 'последняя заполненная строка
        LastRow = Sheets(NameSheetAccounting).Cells(Sheets(NameSheetAccounting).Rows.Count, 1).End(xlUp).Row
    Dim FirstRow As Integer
        FirstRow = Sheets(NameSheetAccounting).Columns(6).End(xlDown).Row
        FirstRow = FirstRow + 3
    Dim ElementName As String
    Dim My_Nod As Node
    For cnt = FirstRow To LastRow
        If Not (Sheets(NameSheetAccounting).Cells(cnt, 6)) = True Then
            ElementName = Sheets(NameSheetAccounting).Cells(cnt, Col)
            EnterElementName = InStr(ElementName, strYes)
                
            If EnterElementName > 0 Then
                If Sheets(NameSheetAccounting).Rows(cnt).Hidden = False Then
                        UserForm1.KeyNod_Child = UserForm1.KeyNod_Child + 1
                        Location = Sheets(NameSheetAccounting).Cells(cnt, 168)
                        ElementName = Sheets(NameSheetAccounting).Cells(cnt, 6)
                    cntKey = cntKey + 1
                    Set My_Nod = UserForm1.TreeView1.Nodes.Add(KeyNod, tvwChild, (KeyNod & cntKey), ElementName)                        
        End If
    Next
End Sub
И еще: почему-то не хочет показываться метка UserForm1.lblProgress, показывающая процесс загрузки (при загрузке формы метка скрыта). UserForm1.ProgressBar1 работает нормально.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.02.2019, 11:25
Помогаю со студенческими работами здесь

Application.OnTime: Удалить строку во время, в ней указанное
В excele бд, в 9 столбце которой находиться время(везде разное). Нужно, чтобы макрос, в указанное в ячейке время удалял ту строчку в...

Возможно ли использование более одной Application.OnTime в VBA MS Word
Добрый день! Возник такой вопрос - возможно ли использование более одной Application.OnTime в VBA MS Word? Справка говорит, что нет,...

Не удается вызвать процедуру Application.OnTime в модуле объекта, как исправить?
привет всем, при нажатии кнопки вызывается процедура CommandButton3_Click(), которая должна запускать через 3 секунды функцию Proc,...

Application.OnTime не работает отключение таймера
excel 2007 есть код в модуле, который запускается из UserForm запуск работает,а вот остановка нет В чем дело? ' запуск...

процедура с параметрами
Доброе время суток. Пытаюсь сделать свой автоинкримент в IBExpert для fb. Вот код: create or alter procedure AUTO_INCREMENT ( ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru