Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

макрос в Excel

2.5K
05 ноября 2002 года
Openki
4 / / 05.11.2002
Я в макросе пишу
....
Range("H128:H135").FormulaR1C1 = "N/A"
.....
И теперь, если добавить новую строку на лист, то макрос летит. Что делать?
267
06 ноября 2002 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by Openki
Я в макросе пишу
....
Range("H128:H135").FormulaR1C1 = "N/A"
.....
И теперь, если добавить новую строку на лист, то макрос летит. Что делать?



Что-то у меня ничего не летит. Пиши подробнее.

2.5K
06 ноября 2002 года
Openki
4 / / 05.11.2002
Цитата:
Originally posted by Cutty Sark


Что-то у меня ничего не летит. Пиши подробнее.



Ну как не летит?
Там же смещение на одну строчку происходит.

267
06 ноября 2002 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by Openki


Ну как не летит?
Там же смещение на одну строчку происходит.



Ага, понятно что тебе надо.
Есть много способов. Какой из них оптимальный, надо выбирать в зависимости от назначения твоей программы.
Вот, например, один из них:
1. Присваиваешь нужному диапазону какое-нибудь имя (для этого в самом Экселе выделяешь его, и в поле слева от строки формул (там изначально будет написан адрес начальной ячейки твоего дипазона) вписываешь что-нибудь типа "MyRange").
2. В программе пишешь
Range("MyRange").FormulaR1C1 = "N/A"

2.5K
06 ноября 2002 года
Openki
4 / / 05.11.2002
[QUOTE]Originally posted by Cutty Sark

А другие способы?
У меня 100 ячеек, на всех мне фантазии не хватит
:)
267
07 ноября 2002 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by Openki
[QUOTE]Originally posted by Cutty Sark

А другие способы?
У меня 100 ячеек, на всех мне фантазии не хватит
:)



Возьми другой рабочий лист, скроешь его потом, на нём создашь в фиксированных ячейках формулы типа =СУММ(H128:H135). А когда понадобится адрес, возьмёшь эти ячейки (они никуда не денутся), узнаешь у них .Formula, отбросишь "=SUM(" в начале и ")" в конце. Получишь адрес.

Если это тоже по каким-то причинам не подходит, расскажи, что у тебя за задача поподробнее.

2.5K
25 ноября 2002 года
Openki
4 / / 05.11.2002
Да просто надо значения ячеек автоматически заполнять, а я только знаю указанным способом. А документ постоянно обновляется, добавляются новые строки и получается, что абсолютная адресация в макросе на ячейки не подходит. А листы прятать тоже вроде нельзя.
267
25 ноября 2002 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by Openki
Да просто надо значения ячеек автоматически заполнять, а я только знаю указанным способом. А документ постоянно обновляется, добавляются новые строки и получается, что абсолютная адресация в макросе на ячейки не подходит. А листы прятать тоже вроде нельзя.



Подожди-ка, а чем тебе не подходит способ:
------
Возьми другой рабочий лист, скроешь его потом, на нём создашь в фиксированных ячейках формулы типа =СУММ(H128:H135). А когда понадобится адрес, возьмёшь эти ячейки (они никуда не денутся), узнаешь у них .Formula, отбросишь "=SUM(" в начале и ")" в конце. Получишь адрес.
------
Тем что "листы прятать тоже вроде нельзя"?
А почему нельзя. Ты его сделаешь xlVeryHidden, его кроме тебя никто не найдёт :)
В макросе у тебя будет абсолютная адресация на вспомогательные ячейки, они никуда не денутся.
А формулы в этих ячейках будут сами меняться при вставлениях-удалениях на твоём основном листе.

В общем, кончай темнить, выкладывай подробно что там у тебя за задача. Если стесняешься прям вот так при всём честном народе, мой е-мейл найдёшь в профайле. :D

2.5K
02 декабря 2002 года
ataman
11 / / 02.12.2002
Цитата:
Originally posted by Cutty Sark


Подожди-ка, а чем тебе не подходит способ:
------
Возьми другой рабочий лист, скроешь его потом, на нём создашь в фиксированных ячейках формулы типа =СУММ(H128:H135). А когда понадобится адрес, возьмёшь эти ячейки (они никуда не денутся), узнаешь у них .Formula, отбросишь "=SUM(" в начале и ")" в конце. Получишь адрес.
------
Тем что "листы прятать тоже вроде нельзя"?
А почему нельзя. Ты его сделаешь xlVeryHidden, его кроме тебя никто не найдёт :)
В макросе у тебя будет абсолютная адресация на вспомогательные ячейки, они никуда не денутся.
А формулы в этих ячейках будут сами меняться при вставлениях-удалениях на твоём основном листе.

В общем, кончай темнить, выкладывай подробно что там у тебя за задача. Если стесняешься прям вот так при всём честном народе, мой е-мейл найдёшь в профайле. :D

2.5K
02 декабря 2002 года
ataman
11 / / 02.12.2002
Сорри за ошибку...

Попробуй вот это:

'<--- Code Begin
Option Explicit
Sub FillTheseStupidCells()
Dim stActiveSheet As String: stActiveSheet = ActiveSheet.Name
Dim stTmpString As String: stTmpString = "N/A"
Dim a As Object
Dim c As Object

'setting a requiered Range of Cells
Set a = Sheets(stActiveSheet).Range("H128:H135")

'You may select this range if it's necessary
'a.Select

'fill it up
For Each c In a
If c.Value <> stTmpString Then
c.Value = stTmpString
End If
Next c

End Sub
'<--- Code End

С бестами и регардами,
Алекс
2.5K
02 декабря 2002 года
ataman
11 / / 02.12.2002
Цитата:
Originally posted by Cutty Sark


Ага, понятно что тебе надо.
Есть много способов. Какой из них оптимальный, надо выбирать в зависимости от назначения твоей программы.
Вот, например, один из них:
1. Присваиваешь нужному диапазону какое-нибудь имя (для этого в самом Экселе выделяешь его, и в поле слева от строки формул (там изначально будет написан адрес начальной ячейки твоего дипазона) вписываешь что-нибудь типа "MyRange").
2. В программе пишешь
Range("MyRange").FormulaR1C1 = "N/A"



Точно так и есть.
Только лучше присваивать изначально 2 имени:
TopLeftCell -- верхняя левая клетка диапазона и
BottomRightCell -- нижняя правая клетка.

'<--- Code Begin
Sub Dura()
Dim a As Object

'as the 1st in the Workbook: Menu->Insert->Name->Define
'
'TopLeftCell
'BottomRightCell
'
Application.Goto Reference:="TopLeftCell:BottomRightCell"
Set a = Selection

End Sub
'<--- Code End

После этого сколько угодно строчек добавляй/вырезай, а результатом будет искомый диапазон.

С бестами и регардами,
Алекс

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог