Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Обмен значений двух диапозонов, Ребят, милые, нужна помощь в объяснении макроса. Пожалуйста, буду очень признательна.
 
Ребят, в лабораторной работе задание: произвести обмен данными (значениями) между двумя диапазонами.
Нашла макрос, он работает как надо, все замечательно...
Но мне для защиты нужно объяснить каждую функцию, строку и их значения.

вот сам макрос:
Код
Sub SelsXchange()
With Selection
If Not .Areas.Count = 2 Then Exit Sub
If Not .Areas(1).Columns.Count = .Areas(2).Columns.Count Then Exit Sub
If Not .Areas(1).Rows.Count = .Areas(2).Rows.Count Then Exit Sub
Dim tmpArea: tmpArea = .Areas(1)
'Range("A1:A10").Value = tmpArea.Value
.Areas(1).Value = .Areas(2).Value
.Areas(2).Value = tmpArea
'.Areas(2).Value = Range("A1:A10").Value
End With
End Sub
Пожалуйста :cry:
Изменено: KatherineBack - 18 Фев 2016 20:18:50 (Неверное оформление кода)
 
KatherineBack, код следует оформлять соответствующим тегом. Ищите такую кнопку и исправьте своё сообщение. Спасибо!
Тег VBA.jpg (19.2 КБ)
 
Как-то так:
Код
Sub SelsXchange()
With Selection 'короткое обращение к выделенной области, чтобы не писать Selection в каждой строке
'Если количество выделенных несмежных диапазонов не равно двум - выход из процедуры
If Not .Areas.Count = 2 Then Exit Sub
'Если количество столбцов несмежных диапазонов не равно - выход из процедуры
If Not .Areas(1).Columns.Count = .Areas(2).Columns.Count Then Exit Sub
'Если количество строк несмежных диапазонов не равно - выход из процедуры
If Not .Areas(1).Rows.Count = .Areas(2).Rows.Count Then Exit Sub
'массив для хранения значений одного из диапазонов, т.к. придется затереть его значениями другого
Dim tmpArea
'записываем в массив значения первого выделенного диапазона
tmpArea = .Areas(1)
'первому диапазону присваиваем значения второго диапазона
.Areas(1).Value = .Areas(2).Value
'во второй диапазон записываем значения из массива tmpArea, в котором у нас значения первого диапазона
.Areas(2).Value = tmpArea
End With
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
:) Спасибо огромное
 
Цитата
KatherineBack написал: мне для защиты нужно объяснить каждую функцию, строку и их значения.
Офф. А если уточняющие вопросы будут? Успехов на защите  :)
Согласие есть продукт при полном непротивлении сторон.
 
Ну я надеюсь, учебник мне в помощь... Просто именно этот раздел непонятно описан
Страницы: 1
Читают тему (гостей: 1)
Наверх