Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2010, 06:43   #1
uncleau
 
Регистрация: 06.06.2010
Сообщений: 8
Восклицание Макрос меняющий местами строки

Уважаемые форумчани, очень нужен макрос для Excel, меняющий местами заданные строки. Строки могут быть разного формата, с обьединенными ячейками.
uncleau вне форума Ответить с цитированием
Старый 14.06.2010, 06:54   #2
uncleau
 
Регистрация: 06.06.2010
Сообщений: 8
Восклицание

Пока вот набросал такой код:
Цитата:
Sub obmen()
a1 = Application.InputBox(PromtAsString, "Выделите строку 1", "1:1", a1)
a2 = Application.InputBox(PromtAsString, "Выделите строку 2", "2:2", a2)
запомним = Range(a1).Value
Range(a1).Value = Range(a2).Value
Range(a2).Value = запомним
End Sub
НО! Возникает ошибка:
При ручном выделении строк (когда вместо 1:1 указывается =$1:$1), мешает знак =, который подставляет Excel при выделении строк.

Опять же, как вариант можно не выделять номер строки, а указывать её номер, вот только как так сделать - незнаю.
uncleau вне форума Ответить с цитированием
Старый 14.06.2010, 11:19   #3
uncleau
 
Регистрация: 06.06.2010
Сообщений: 8
Радость

Вообщем нашёл вот такое решение:
Цитата:
Sub RowSwapper()
rw1 = Application.InputBox("Введите номер первой строки")
rw2 = Application.InputBox("Введите номер второй строки")
Rows(rw2).Cut
Rows(rw1).Insert
Rows(rw1).Cut
Rows(rw2).Insert
End Sub
Так же возможен вариант с заменой между собой двух выделенных строк:
Цитата:
Dim tempRRay As Variant
With Selection
With Range(.Areas(1), .Areas(.Areas.Count)).EntireRow
tempRRay = .Rows(1).Value
.Rows(1).Value = .Rows(.Rows.Count).Value
.Rows(.Rows.Count).Value = tempRRay
End With
End With
uncleau вне форума Ответить с цитированием
Старый 16.06.2010, 16:16   #4
chipok27
Новичок
Джуниор
 
Регистрация: 16.06.2010
Сообщений: 1
Хорошо

К сожалению, в этой программе обмена не произойдёт...
Цитата:
Сообщение от uncleau Посмотреть сообщение
Sub RowSwapper()
rw1 = Application.InputBox("Введите номер первой строки")
rw2 = Application.InputBox("Введите номер второй строки")
Rows(rw2).Cut
Rows(rw1).Insert
Rows(rw1).Cut
Rows(rw2).Insert
End Sub
Обе строки станут равны строке под номером rw2.

А вот второй вариант очень изящный и, главное, рабочий!!!
chipok27 вне форума Ответить с цитированием
Старый 16.06.2010, 17:13   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Подправить несложно:
Код:
Sub RowSwapper()
rw1 = Application.InputBox("Введите номер первой строки")
rw2 = Application.InputBox("Введите номер второй строки")
Rows(rw1).Cut
Rows(rw2).Insert
Rows(rw2).Cut
Rows(rw1).Insert
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.06.2010, 18:17   #6
uncleau
 
Регистрация: 06.06.2010
Сообщений: 8
Стрелка

Цитата:
Сообщение от chipok27 Посмотреть сообщение
К сожалению, в этой программе обмена не произойдёт...
А ты проверял на практике? Видимо плохо знаешь функции методов Cut и Insert.
uncleau вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поменять местами 3-ю и 4-ую строки массива танечка155 Помощь студентам 3 23.11.2010 21:52
матрица B(n,n). поменять местами строки bratello41 Паскаль, Turbo Pascal, PascalABC.NET 0 10.06.2010 23:19
Как поменять строки местами? ar. Microsoft Office Word 1 05.09.2008 11:36
Поменять местами строки в memo Бублик Помощь студентам 5 18.11.2007 15:27
Как поменять строки в текстовом файле местами _ares_ Помощь студентам 8 13.11.2007 02:14