Диалоговое окно выбора диапазона
Модератор: Naeel Maqsudov
Я тоже на это обратил внимание. (Я про событие)
Но решил что в любом случае оно должно отрабатываться правильно. Разве я не прав?
Но решил что в любом случае оно должно отрабатываться правильно. Разве я не прав?
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
А вот от названия листа никак не получается избавиться. 
Не предоставили они никакого свойства, которое бы управляло типом ссылок: абсолютные\относительные.
Вот так только получилось
Private Sub RefEdit1_Change()
Диапазон = Range(RefEdit1.Text).Address(False, False)
End Sub
Но в самом контроле адрес светится естественно абсолютный

Не предоставили они никакого свойства, которое бы управляло типом ссылок: абсолютные\относительные.
Вот так только получилось
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)
у меня вызывает ошибку?
я вообще-то мог бы и это применить, даже проще было бы, не нужно лишних форм городить.
Меня это вполне устраивает, мне главное, что я получил адрес диапазона.
Раз уж мы развили тему выделения диапазано, не подскажете, почему код из справки, которым можно воспользоваться вместо 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:
Должно помочь... в случае, если у Вас не определена глобальная переменная Excel 
В этом случае подойдёт что-нибудь вроде Set myRange = ThisWorkbook.Application.InputBox(prompt:="Sample", Type:=8)
Код: Выделить всё
Sub test()
Dim Application As String
Dim myRange As Range
Set myRange = Excel.Application.InputBox(prompt:="Sample", Type:=8)
MsgBox myRange.Address
End Sub

В этом случае подойдёт что-нибудь вроде 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 больше не обьявляется, никаких процедур при открытии - также не выполняется, все заремил, и тем не менее((
Excel 2003 - в чистой книге все работает, в рабочей книге проекта - никак((.
Вылетает ошибка Object required (Error 424).
Все проверил, нигде в книге переменная myRange больше не обьявляется, никаких процедур при открытии - также не выполняется, все заремил, и тем не менее((
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
Попробуй поубирать лишние модули в референсес.