| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
Помогите переделать макрос для Excel.
Текст макроса:
---------------------------------------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Excel.Range) '*********************************************** ' help urllink-doggie-yandex.ru '*********************************************** On Error GoTo Err iClm = Target.Column: iRow = Target.Row iDate = Target.Value If iClm = 1 And iRow >19 And iRow < 301 Then Select Case iDate Case "1" iDate = "Рога и копыта" Case "2" iDate = "Кидалов и сыновья" Case "3" iDate = "ООО Торговый Дом Шелупонь" Case "4" Rem : И так далее ... End Select Application.EnableEvents = False Application.Undo Target.Value = iDate Application.EnableEvents = True End If Err: End Sub ---------------------------------------------------------------------- Вопрос1 А можно этот макрос как нибудь расширить он делает автоподмену только в столбце А а мне нужно чтобы он делал подмену на одном листе но в нескольких столбцах к примеру в А, С, H. Вопрос2 И можно ли в iDate = "" писать не текст а номер ячейки из которой нужно брать значение? |
|
|
# 2 | ||
|
Full Member
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Цитата:
Вообще, не очень понятно, что именно макрос делает и что нужно. Если нужна одинаковая замена в трёх столбцах, тогда самый простой вариант: Заместо строки (If iClm = 1 And iRow >19 And iRow < 301 Then ) написать iClm = 1 ' столбец "А" If iRow >19 And iRow < 301 Then ' тут дальше всю замену Range("A"&iRow).Value = iDate 'Вместо Target.Value = iDate End If iClm = 2 ' столбец "B" If iRow >19 And iRow < 301 Then ' тут дальше всю замену Range("B"&iRow).Value = iDate 'Вместо Target.Value = iDate End If iClm = 3 ' столбец "C" If iRow >19 And iRow < 301 Then ' тут дальше всю замену Range("C"&iRow).Value = iDate 'Вместо Target.Value = iDate End If Как работает не проверял. |
||
|
|