 |
on-line-teaching.com Онлайн курсы MS Office: Word, Excell. Как сделать сайт: HTML, JS, PHP
|
Предыдущая тема :: Следующая тема
|
Автор |
Сообщение |
svat Prizivnik - draftee

Зарегистрирован: 13.02.2010 Сообщения: 2
|
Добавлено: Сб Фев 13, 2010 9:16 am Заголовок сообщения: макрос активная ячейка |
|
|
Добрый день, хотелось бы написать макрос, который реагирует на изменение данных в ячейке, то есть если в одном листе excel-евского файла в какой-то ячейке ввести число например 543 то макрос переходит не визуально, а в памяти, на другой лист файла, а там таблица из нескольких столбцов с числами, так вот макрос находит в определенном солбце это (543) число, далее сравнивает рядом с ним стоящее в одной строке число с нулем, если оно меньше нуля то макрос возвращает в ту ячейку куда вводили число 543 значение того отрицательного числа которое стоит рядом в одной строке с числом 543. Ну а если число которое стоит в таблице рядом с 543 больше нуля то макрос ни чего не делает, а оператор вводит данные в другую ячейку. Ну в общем-то как сравнивать числа и выводить число в какую-то ячейку с этим я сам справлюсь, а вот как написать чтобы макрос начинал работу после введения данных в ячейку - вот это я не знаю. Кто знает подскажите пожалуйста?
Привожу примерый макрос НО без начала
Sub сравнение()
'
' сравнение Макрос
' Макрос записан 13.02.2010 (ккк)
'
' Сочетание клавиш: Ctrl+s
'
Dim a As Integer ' - это номер строки в таблице где происходит сравнение
Dim n As Integer ' - это переменная которой присваивается значение числа после того как его ввели
Dim x As Integer ' - это номер строки на которой находиться ячейка в которую вводиться число
Dim y As Integer ' - это номер столбца в котором находиться ячейка в которую вводиться число
a = 1 'задается номер строки с которой начинаем
' ВОТ ТУТ КАК РАЗ В МЕСТО ЭТИХ ТРЕХ СТРОЧЕК И ДОЛЖНА ПО ИДЕЕ БЫТЬ КОМАНДА
' КОТОРАЯ ЗАПУСКАЕТ МАКРОС ПОСЛЕ ВВОДА ЧИСЛА В ЯЧЕЙКУ
' Range("B2").Select
' ActiveCell.FormulaR1C1 = "543"
' n = введенному в ячейку числу
x = 2 ' для того чтобы макрос хоть как то работал задаем умышленно фиксированное значение
y = 2 ' для того чтобы макрос хоть как то работал задаем умышленно фиксированное значение
n = Sheets("лист-данные").Cells(x, y) 'присваиваем переменной n значение введенного в ячейку числа
2 If n = Sheets("лист-таблица").Cells(a, 1) Then GoTo 1 ' находим такое же число как оператор вводил но уже в эталонной таблице
a = a + 1
If a <= 50 Then GoTo 2
1 If Sheets("лист-таблица").Cells(a, 2) > 0 Then GoTo 3 ' Число найдено, а сдесь выясняем отрицательное ли число которое стоит рядом в эталонной таблице
Sheets("лист-данные").Cells(x, y) = Sheets("лист-таблица").Cells(a, 2) 'присваивается здачение отрицательного числа ячейке в которую изначально был ввод
Sheets("лист-данные").Select 'ну тут ниже меняетс цвет шриф для яркости
Cells(x, y).Select
Selection.Font.ColorIndex = 3
Selection.Font.Bold = True
With Selection.Font
.Name = "Arial Cyr"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
End With
pause (20 = cek) ' то же не знаю как писать паузу в работе, а она нужна чтобы оператор увидел результат
4 r = r + 1
If r < 50000000 Then GoTo 4 ' пришлось вместо паузы вот такой ерундой заниматься
Selection.ClearContents 'очистка ячейки куда был ввод
Selection.Font.ColorIndex = 1
3 End Sub
Естественно макрос до коца не проработан, да это не главное сейча для меня, проработаю, мне важно начало его написать. |
|
Вернуться к началу |
|
 |
zaal Prizivnik - draftee

Зарегистрирован: 03.02.2010 Сообщения: 4 Откуда: СПб
|
Добавлено: Пт Фев 19, 2010 8:51 pm Заголовок сообщения: |
|
|
чтобы отслеживать изменения на рабочем листе используйте процедуру:
Private Sub Worksheet_Change(ByVal Target As Range)
' Здесь параметр Target содержит адрес ячейки в которой были сделаны изменения
' Процедура выполняется при изменении любой ячейки
' Если необходимо отслеживать только определнный диапазон добавьте условие:
If Not Intersect (Target, Range("Ваш_Диапазон") then ' действия которые нужно сделать
End Sub
Процедура должна находиться в модуле соответствующего листа (двойной клик на имени листа в дереве проекта VBA) |
|
Вернуться к началу |
|
 |
inco_by Prizivnik - draftee


Зарегистрирован: 08.08.2011 Сообщения: 1 Откуда: Беларусь, Минск, ул.Гикало 7/А, офис 6
|
Добавлено: Пн Авг 08, 2011 11:12 am Заголовок сообщения: |
|
|
а может быть, для простоты, есть скрипт в виде плагина? |
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|