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

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

heisnod
Сообщения: 70
Зарегистрирован: 24 ноя 2008, 16:53

Я тоже на это обратил внимание. (Я про событие)
Но решил что в любом случае оно должно отрабатываться правильно. Разве я не прав?
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

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

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

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

Но в самом контроле адрес светится естественно абсолютный
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

heisnod писал(а):Но решил что в любом случае оно должно отрабатываться правильно. Разве я не прав?


Неправ :)
Событие возникат тогда, когда оно возникает, и никогда в другие моменты.
Change возникает при изменении.
BeforeDrarOver перед тем как обработается любое перемешение указателя мыши над контролом, при условии, что эта мышь что-то тащит :)
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Naeel Maqsudov, да, с названием листа в строке и поступил аналогично.
Меня это вполне устраивает, мне главное, что я получил адрес диапазона.
Раз уж мы развили тему выделения диапазано, не подскажете, почему код из справки, которым можно воспользоваться вместо RefEdit
Set myRange = Application.InputBox(prompt := "Sample", type := 8)
у меня вызывает ошибку?
я вообще-то мог бы и это применить, даже проще было бы, не нужно лишних форм городить.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
EducatedFool
Сообщения: 197
Зарегистрирован: 06 апр 2008, 14:03
Откуда: Россия, Урал
Контактная информация:

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

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

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

Dim Application
Dim myRange As String

то есть если где-то ранее объявлена глобальная переменная myRange другого типа,
или переменная Application уже ссылается не на приложение Excel.
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

да, что - то не то, в чистой книге примера, которую я выложил этот код работает, а в моей реальной книге проекта - нет(((
странно, буду разбираться, спасибо.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
EducatedFool
Сообщения: 197
Зарегистрирован: 06 апр 2008, 14:03
Откуда: Россия, Урал
Контактная информация:

В Вашем случае можно вместо 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)
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

EducatedFool, спасибо!!!
Завтра обязательно поробую, сегодня уже все, засыпаю а утром еще на работу вставать.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Что-то я уже ничего не понимаю ((
Excel 2003 - в чистой книге все работает, в рабочей книге проекта - никак((.
Вылетает ошибка Object required (Error 424).
Все проверил, нигде в книге переменная myRange больше не обьявляется, никаких процедур при открытии - также не выполняется, все заремил, и тем не менее((
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
heisnod
Сообщения: 70
Зарегистрирован: 24 ноя 2008, 16:53

Попробуй поубирать лишние модули в референсес.
Ответить