Страница: 1 | 2 |
Вопрос: Как сохранть Выделенный диапозон
Добавлено: 19.07.07 22:34
Автор вопроса: Yolokuko
Как сохранить Выделенный диапазон?
Пользователь выделяет диапазон ячеек, дальше выполняются действия,а затем восстанавливается выделенный диапазон.
Понимаю что это Range
или Selection
Но как реализовать не понимаю???
Всё уже попробовал что знаю.
Так где же храниться выделенный пользователем диапазон, подскажите пожалуйста?
Ответы
Всего ответов: 20
Номер ответа: 1
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #1
Добавлено: 19.07.07 23:01
Public myrangsel As Range
Sub SaveRange()
Set myrangsel = ActiveWindow.RangeSelection
End Sub
Sub RestoreRange()
myrangsel.Select
End Sub
Номер ответа: 2
Автор ответа:
Yolokuko
Вопросов: 3
Ответов: 7
Профиль | | #2
Добавлено: 20.07.07 00:15
Спасибо очень помогло!
От себя добавлю код для нахождения диапазона выделенных ячеек
Public myrangsel As Range
Public re As Integer
Public ce As Integer
Public rb As Integer
Public cb As Integer
Sub SaveRange()
Set myrangsel = ActiveWindow.RangeSelection
cb = myrangsel.Column 'íà÷àëî
rb = myrangsel.Row
re = rb + myrangsel.Rows.Count - 1 'êîíåö
ce = cb + myrangsel.Columns.Count - 1
End Sub
Номер ответа: 3
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #3
Добавлено: 20.07.07 00:46
Это было бы очень хорошо, если бы выделенный диапазон всегда был бы прямоугольный, тогда можно сохранять только границы. Но удерживая ctrl можно мышкой навыделять диапазоны хоть в шахматном порядке.
Номер ответа: 4
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #4
Добавлено: 20.07.07 00:52
____ Да и зачем знать его границы? Диапазон — это всего лишь множество ячеек и какой-либо порядок в них — частный случай.
Номер ответа: 5
Автор ответа:
Yolokuko
Вопросов: 3
Ответов: 7
Профиль | | #5
Добавлено: 20.07.07 01:54
Хорошо
а как тогда обойти все ячейки, которые мы выделили Ctrl
так
For Each c in Selection
[Do something]
Next
Номер ответа: 6
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #6
Добавлено: 20.07.07 02:05
Sub scancellsinrange()
Dim c As Range
For Each c In Selection
Debug.Print c.Row & vbTab & c.Column & vbTab & c.Value
Next
End Sub
Номер ответа: 7
Автор ответа:
Yolokuko
Вопросов: 3
Ответов: 7
Профиль | | #7
Добавлено: 20.07.07 02:20
Теперь у всё встало на свои места, ещё раз спасибо!
Номер ответа: 8
Автор ответа:
Yolokuko
Вопросов: 3
Ответов: 7
Профиль | | #8
Добавлено: 20.07.07 17:20
For Each c In Selection
Debug.Print c.Row & vbTab & c.Column & vbTab & c.Value
Next
хм...
теперь я запутался совсем, а как изменить то что внутри выделенного диапазона?
Номер ответа: 9
Автор ответа:
Stormy
ICQ: 527-627
Вопросов: 0
Ответов: 3
Web-сайт:
Профиль | | #9
Добавлено: 21.07.07 09:26
Всем привет!
В продолжение темы.
А как можно скопировать плавающий диапазон в закрытой книги (книга1) и вставить в указанное место активной книги (книга2)?
Плавающий диапазон - находиться так. В ячейках А1 и В1 есть значения. В А1 - пишеться номер послед заполненной в Книга1 (Лист1)при предыдущем копировании, в ячейке В1 формульно расчитывается текущий послед номер строки в Книга1 Лист 1 , получается примерно такое.
А1= 10 , В1 = 35
Теперь вот хотелось бы при открытие книги вызвать форму (Ок, Отмена) тоесть или принять скопированное или отказаться.
Может кто нить помочь? Делал через сравнение, по
Номер ответа: 10
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #10
Добавлено: 21.07.07 17:27
Если Yolokuko и Stormy переформулируют вопросы, то, возможно, найдутся ответы.
Номер ответа: 11
Автор ответа:
Yolokuko
Вопросов: 3
Ответов: 7
Профиль | | #11
Добавлено: 21.07.07 23:26
Всё с Range я разобрался!
Теперь другая проблемма
Объект RefEdit
Пользователь может ввести туда диапазон, но я так и не нашёл, как проверить, что это действительно диапазон, туда же можно ввести всё что угодно!
Неужели писать собственную функцию...
При постраении диаграмм Excel срузу ругается если введённая информация не диапазон.
Значит процедура есть, а найти не могу(
Номер ответа: 12
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #12
Добавлено: 22.07.07 03:40
Private Sub RefEdit1_Change()
Debug.Print IsRangeOk(RefEdit1.Text)
End Sub
Function IsRangeOk(s As String) As Boolean
On Error Resume Next
IsRangeOk = Not Range(RefEdit1.Text) Is Nothing
End Function
Номер ответа: 13
Автор ответа:
Stormy
ICQ: 527-627
Вопросов: 0
Ответов: 3
Web-сайт:
Профиль | | #13
Добавлено: 23.07.07 08:11
Значить есть у меня 2 книги, одна на компе 1(книга1), вторая на компе 2 (книга2).
Нужно переодически проверять книгу1 на наличие обновления и если они есть, то копировать их в книгу 2. Данные должны браться из закрытой книги, диапазон поиска думаю, тоже можно указать точный. Но вот как проделать все остальное не знаю
Номер ответа: 14
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #14
Добавлено: 23.07.07 18:07
сторми, для синхронизации двух файлов есть великолепная вещь под названием портфель. правой клавишей в проводнике - создать - портфель. остальное в справке винды, сам этим не пользовался почти
Номер ответа: 15
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #15
Добавлено: 23.07.07 20:25
Dim r1 As Range
Set r1 = Workbooks("Книга1".Worksheets(1).Range("A10:B35" ' произвольный диапазон
r1.Copy Workbooks("Книга2".Worksheets(1).Range("E2" ' левый верхний угол вставки