IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Помогите переделать макрос для Excel. (http://www.imho.ws/showthread.php?t=72264)

Rubin 30.10.2004 15:40

Помогите переделать макрос для 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 = "" писать не текст а номер ячейки из которой нужно брать значение?

EvroStandart 01.11.2004 12:37

Цитата:

Rubin:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
В эту процедуру передаётся адрес, в котором и происходит замена. Чтобы он искал и трёх столбцах, нужно зделать другой макрос.

Цитата:

Rubin:
iClm = Target.Column: iRow = Target.Row
Это и есть адрес ячейки, только в двух частях. iClm=1 - это первый столбец (А).

Вообще, не очень понятно, что именно макрос делает и что нужно. Если нужна одинаковая замена в трёх столбцах, тогда самый простой вариант:
Заместо строки (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

Как работает не проверял.


Часовой пояс GMT +4, время: 02:34.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.