Страница: 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
Теперь вот хотелось бы при открытие книги вызвать форму (Ок, Отмена) тоесть или принять скопированное или отказаться.
Может кто нить помочь? Делал через сравнение, по 
 Если будет 1-2 тыс строк то потребуется 1-2 минуты на проверку.
		
	  
			 
	
		 
    
       
    
Номер ответа: 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"
  ' левый верхний угол вставки