powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Макрос Worksheet_Change(ByVal Target As Range) - что изменить, чтобы макрос выдавал данные
1 сообщений из 1, страница 1 из 1
Макрос Worksheet_Change(ByVal Target As Range) - что изменить, чтобы макрос выдавал данные
    #39707605
Alkhimik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Имеется макрос:
Код: vbnet
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.
]Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim sh_res As Worksheet, lc As Long, r As Long
    
        
    ' Смотрим, что значение больше нуля.
    If Target.Value <= 0 Then
        Exit Sub
    End If
    
    ' Проверяем, что изменение произошло в строке 45 и дальше.
    If Target.Row < 45 Then
        Exit Sub
    End If
    
    ' Отключение пересчёта формул и монитора, чтобы ускорить макрос.
    Dim calc As Long: calc = Application.Calculation
    Application.ScreenUpdating = False
    
    ' Смотрим, в каком столбце произошло изменение.
    Select Case Target.Column
        Case 74
            ' Присваиваем листу-результату имя 'sh_res'.
            Set sh_res = Worksheets("Sheet1")
        Case 82
            Set sh_res = Worksheets("Sheet2")
    End Select
    
    ' Копируем данные на лист-результат из ячейки, в которой произошло изменение.
    ' Записываем в переменную 'r' номер строки, в которой произошло изменение.
    r = Target.Row
    ' Поиск последнего столбца. End не ищет в скрытых столбцах.
    If sh_res.Cells(r, "A").Value = "" Then
        lc = 1
    Else
        lc = sh_res.Cells(r, sh_res.Columns.Count).End(xlToLeft).Column + 1
    End If
    ' Вставка данных.
    sh_res.Cells(r, lc).Value = Target.Value
    
    ' Включение того, что отключено.
    Application.Calculation = calc
    Application.ScreenUpdating = True

End Sub




Но этот макрос выводит на новый лист только введенные вручную данные в столбцах 74 и 82. А в этих столбцах должные быть формулы, записанные в ячейках. Что надо изменить в макросе, чтобы он воспринимал данные из формул в ячейках? И сразу второй вопрос, как совместить этот макрос с макросом счетчика, который и изменяет данные по формулам. Вот макрос счетчика:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Sub Counter()
Dim CounterCell As Range
Set CounterCell = ActiveSheet.Range("K1")
CounterCell.Value = 0
Do While CounterCell.Value < 10000#
    CounterCell.Value = CounterCell.Value + 0.01
Loop
End Sub



Помогите, пожалуйста. На всякий случай прилагаю и сам файл.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Макрос Worksheet_Change(ByVal Target As Range) - что изменить, чтобы макрос выдавал данные
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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