Перемена местами диапазонов ячеек

Программирование на Visual Basic for Applications
GUR
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 10.11.2005 (Чт) 14:39

Перемена местами диапазонов ячеек

Сообщение GUR » 25.11.2005 (Пт) 17:37

Всем привет!
Мне очень нужен макрос, который бы менял местами два любых выделенных диапазона ячеек в Excel (в том числе несвязанных диапазона (через удерживание Ctrl); например целиком строки - 1 и ,скажем, 21, или, например, ячейку А4 и С47, или и т.д.). При этом, чтобы менялось местами все: значения, ссылки, примечания, форматы и т.д.

Приятель написал упрощенный вариант вот так:

Sub Range_Rotation()
Dim strNLst As String
Dim strNCel As String
Dim strNLstDel As String

'On Error Resume Next

strNLst = ActiveSheet.Name
strNCel = ActiveCell.Address

Selection.Copy
Sheets.Add
ActiveSheet.Paste
strNLstDel = ActiveSheet.Name
Sheets(strNLstDel).Select
ActiveSheet.Columns("A:A").Select
' Application.CutCopyMode = False
Selection.Cut Destination:=ActiveSheet.Columns("C:C")
ActiveSheet.Range("B1").Select
Selection.CurrentRegion.Select
Selection.Copy
Sheets(strNLst).Select
Range(strNCel).Select
ActiveSheet.Paste
Sheets(strNLstDel).Select
ActiveWindow.SelectedSheets.Delete

End Sub

Но он кривовато работает (только для связанных диапазонов). И мне кажется, можно более грамотно написать, используя, может, динамические массивы, переменные типа Range или еще что-то в этом роде.


ЗАРАНЕЕ БЛАГОДАРЕН!

Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 80

    TopList