Страница 2 из 4

Re: Диалоговое окно выбора диапазона

Добавлено: 30 ноя 2008, 22:39
heisnod
Я тоже на это обратил внимание. (Я про событие)
Но решил что в любом случае оно должно отрабатываться правильно. Разве я не прав?

Re: Диалоговое окно выбора диапазона

Добавлено: 30 ноя 2008, 22:43
Naeel Maqsudov
А вот от названия листа никак не получается избавиться. :(
Не предоставили они никакого свойства, которое бы управляло типом ссылок: абсолютные\относительные.

Вот так только получилось

Private Sub RefEdit1_Change()
Диапазон = Range(RefEdit1.Text).Address(False, False)
End Sub

Но в самом контроле адрес светится естественно абсолютный

Re: Диалоговое окно выбора диапазона

Добавлено: 30 ноя 2008, 22:48
Naeel Maqsudov
heisnod писал(а):Но решил что в любом случае оно должно отрабатываться правильно. Разве я не прав?


Неправ :)
Событие возникат тогда, когда оно возникает, и никогда в другие моменты.
Change возникает при изменении.
BeforeDrarOver перед тем как обработается любое перемешение указателя мыши над контролом, при условии, что эта мышь что-то тащит :)

Re: Диалоговое окно выбора диапазона

Добавлено: 30 ноя 2008, 23:09
VictorM
Naeel Maqsudov, да, с названием листа в строке и поступил аналогично.
Меня это вполне устраивает, мне главное, что я получил адрес диапазона.
Раз уж мы развили тему выделения диапазано, не подскажете, почему код из справки, которым можно воспользоваться вместо RefEdit
Set myRange = Application.InputBox(prompt := "Sample", type := 8)
у меня вызывает ошибку?
я вообще-то мог бы и это применить, даже проще было бы, не нужно лишних форм городить.

Re: Диалоговое окно выбора диапазона

Добавлено: 30 ноя 2008, 23:21
EducatedFool
Set myRange = Application.InputBox(prompt := "Sample", type := 8)
у меня вызывает ошибку?
А что за ошибка? (номер, описание)

У меня этот код работает без ошибок (Excel 2003).

Ошибка может возникать, если у Вас в коде есть что-то вроде строк:

Dim Application
Dim myRange As String

то есть если где-то ранее объявлена глобальная переменная myRange другого типа,
или переменная Application уже ссылается не на приложение Excel.

Re: Диалоговое окно выбора диапазона

Добавлено: 30 ноя 2008, 23:49
VictorM
да, что - то не то, в чистой книге примера, которую я выложил этот код работает, а в моей реальной книге проекта - нет(((
странно, буду разбираться, спасибо.

Re: Диалоговое окно выбора диапазона

Добавлено: 01 дек 2008, 00:49
EducatedFool
В Вашем случае можно вместо Application написать Excel.Application:

Код: Выделить всё

Sub test()
    Dim Application As String
    Dim myRange As Range
    Set myRange = Excel.Application.InputBox(prompt:="Sample", Type:=8)
    MsgBox myRange.Address
End Sub
Должно помочь... в случае, если у Вас не определена глобальная переменная Excel :)

В этом случае подойдёт что-нибудь вроде Set myRange = ThisWorkbook.Application.InputBox(prompt:="Sample", Type:=8)

Re: Диалоговое окно выбора диапазона

Добавлено: 01 дек 2008, 01:14
VictorM
EducatedFool, спасибо!!!
Завтра обязательно поробую, сегодня уже все, засыпаю а утром еще на работу вставать.

Re: Диалоговое окно выбора диапазона

Добавлено: 01 дек 2008, 09:54
VictorM
Что-то я уже ничего не понимаю ((
Excel 2003 - в чистой книге все работает, в рабочей книге проекта - никак((.
Вылетает ошибка Object required (Error 424).
Все проверил, нигде в книге переменная myRange больше не обьявляется, никаких процедур при открытии - также не выполняется, все заремил, и тем не менее((

Re: Диалоговое окно выбора диапазона

Добавлено: 01 дек 2008, 10:41
heisnod
Попробуй поубирать лишние модули в референсес.