VBA . Как активировать кнопку ?

Nelly1992

Понимаю, что вопрос очень интеллектуальный, но мне нужна ссылка на определённую ячейку, к примеру А1, чтоб занести туда инфу. А известные мне функции работают с активной ячейкой, которую пользователь выбирает в риал-тайме, а не заранее(как нужно мне). Может знает кто?:)

gajdar_k

Можно, например, так
Worksheets(1).Range("A1:A1").Cells(1, 1).Formula = "=rand"

Nelly1992

отлично, спасибо! А может вы ещё знаете, как при этом способе можно воспользоваться функцией offset, если выполняются определённые условия?

a7137928

А чем методы activate или select не подходят?
Пишем range("A1").select или cells(1,1).activate
Только перед этим надо сделать активным лист, на котором находится нужная ячейка, при помощи тех же activate или select, иначе ругаться будет.

a7137928

Че надо-то? А то на такой вопрос есть простой ответ: берешь оффсет и пользуешься им.
Можно писать, например:
activecell.offset(0,1).activate
Это сдвинет активную ячейку на одну позицию.

Nelly1992

ну да, я так и пыталась, вот смори код:
Dim count As Integer
Dim range1 As Range
Dim range2 As Range
Dim finished As Boolean
Set range1 = ActiveSheet.Range("A2")
count = -1
Do
count = count + 1
e(count) = ActiveCell.Value
ActiveCell.Offset(1, 0).Activate
If ActiveCell.Value = "" Then finished = True
Loop Until finished
он у меня почему-то не переносит никуда активнуюб ячейку- она там, куда я её ручками поставила!

a7137928

Че-то я ни хрена не понял. Чего он там куда не переносит?
Во-первых, ты перед циклом не определила переменную finished. Это, короче, охрененно плохо. Есть даже анекдот специальный на эту тему, про яблоки, знаешь его?
Еще я не понял, что за зверь "e(count)", но это не очень важно.
Во-вторых, у тебя ясно в цикле написано ActiveCell.Offset(1, 0).Activate
И цикл как минимум раз да выполнится. Это значит, что хоть ты тресни, но активная ячейка у тебя пойдет вниз, и оказаться там, куда ты ее поставила перед запуском макроса, она не может никак.
Конечно, кроме случая, когда ты ставила ручками на одном листе, а актившитом на момент запуска программы был другой лист. Я рекомендую пройтись по шагам, то заходишь в вижл бейсик, ставишь курсор на свой макрос и жмешь Ф8. Периодически наводишь мышку на переменные, чтобы посмотреть, чему они равны (ну или можно watch добавить в меню Debug>Add Watch и переключаешься из окна бейсика в окно экселя, чтобы увидеть, кто бишь есть актившит и активселл в данный момент.

a7137928

А вообще, это все неправильно. Надо знать
1) исходные данные
2) код
3) что должно быть на выходе
а ты даешь только код. Так разобраться не получится, опиши все целиком. Если все будет плохо, и отладить не удастся, вышли xls с макросом вместе мне на мыло rambler.ru или лучше выложи здесь, может тебе быстрее подскажут.

Nelly1992

мне прям неудобно, что столько эмоций на меня потратили. Спасибо.
Оставить комментарий
Имя или ник:
Комментарий: