Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: refedit и объединение диапазонов Добавлено: 19.11.08 19:26  

Автор вопроса:  maxx
Всем привет. Имеется форма с элементом refedit, при помощи которой пользователь выделяет диапазон ячеек на листе exel, диапазон присваивается переменной:
Set oRange = Range(Me.RefEdit1.Value)

диапазон затем обрабатывается и копируется в новую книгу. Проблема в том, что если пользователь выделил несколько диапазонов (при пом Ctrl), то при использовании вышеозначенной конструкции вылетает ошибка:
Run-time error "1004"
Method 'Range' of object '_Global' failed.

Как можно присвоить переменной типа Range объединенный диапазон?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #1 Добавлено: 19.11.08 23:06
Не мудрено.
  1. Private Sub CommandButton1_Click()
  2.   Dim theRange As Range
  3.   Dim theAddress As String
  4.  
  5.   theAddress = Replace(Me.RefEdit1.Value, ";", ",")
  6.   Set theRange = Range(theAddress)
  7.   MsgBox theRange.Address(False, False)
  8. End Sub

Но я вот что подумал. Лучше, конечно, вместо конкретных символов использовать системные разделители типа Application.International(xlListSeparator), да только сейчас нет времени копаться в этом всём =(

Ответить

Номер ответа: 2
Автор ответа:
 maxx



Вопросов: 1
Ответов: 2
 Профиль | | #2 Добавлено: 20.11.08 11:10
Ошибка перестала вылетать, но легче не стало, в переменную theRange заносится только первая выделенная область, остальные игнорируются, как же быть?

Ответить

Номер ответа: 3
Автор ответа:
 Nytrogen



Вопросов: 18
Ответов: 186
 Профиль | | #3 Добавлено: 20.11.08 17:23
У меня всё работает. Выделите его. А вот заодно и более надёжный вариант:
  1. Private Sub CommandButton1_Click()
  2.   Dim theRange As Range
  3.   Dim theAddress As String
  4.   theAddress = Replace(Me.RefEdit1.Value, ";", ",")
  5.  
  6.   On Error GoTo ErrorAlert
  7.   Set theRange = Range(theAddress)
  8.  
  9.   theRange.Select
  10.  
  11.   On Error GoTo 0
  12.   Exit Sub
  13.  
  14. ErrorAlert:
  15.   MsgBox "The range is not correct"
  16. End Sub

Ответить

Номер ответа: 4
Автор ответа:
 maxx



Вопросов: 1
Ответов: 2
 Профиль | | #4 Добавлено: 04.12.08 14:01
Спасибо. Но я уже сделал через анализ строки, разбивку её на несколько строк, содержащих диапазон и суммирование этих диапазонов.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам