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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.11.2008, 12:47   #1
Janny
 
Регистрация: 07.11.2008
Сообщений: 4
По умолчанию Перемещение столбцов

Добрый день! Помогите, плиз!
Как посредством VBA поменять местами значения в столбцах?
Ситуация следующая: есть таблица диапазоном от А1:An до D1:Dn (n - некое число строк, постоянно меняется), нужно перенести все значения из столбца D в A и соответственно значения остальных сдвинуть на 1 вправо
Janny вне форума
Старый 07.11.2008, 13:24   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Например, так:
Код:
Sub Main()

    Application.ScreenUpdating = False
    Columns("A").Insert
    Columns("E").Cut [A1]
    
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 07.11.2008, 13:38   #3
Janny
 
Регистрация: 07.11.2008
Сообщений: 4
По умолчанию

Забыла сказать об одном условии.. это отчет, и данные столбцы нужно переставлять под шапкой, а после столбца D заполнены также столбцы E, F и т.д. - они должны остаться на месте

Последний раз редактировалось Janny; 07.11.2008 в 14:03.
Janny вне форума
Старый 07.11.2008, 14:45   #4
Janny
 
Регистрация: 07.11.2008
Сообщений: 4
По умолчанию

Пока что пришла к такому решению.. можно ли его как-то упростить?

Код:
Sub Main()
    Worksheets("Лист1").Activate
    Dim Range1 As Range
    Dim Range2 As Range
    Dim Range3 As Range
    Set Range1 = Range("A4:A10000")
    Range1.Select
    'Application.ScreenUpdating = False
    Range1.Insert
    Set Range2 = Range("E4:E10000")
    Range2.Select
    Range2.Cut [A4]
    Set Range3 = Range("E4:E10000")
    Range3.Select
    Range3.Delete
End Sub

Последний раз редактировалось Janny; 07.11.2008 в 14:51.
Janny вне форума
Старый 07.11.2008, 16:28   #5
Janny
 
Регистрация: 07.11.2008
Сообщений: 4
По умолчанию

Возник еще один вопрос.. т.к. может меняться диапазон значений в столбцах, нужно знать верхнюю и нижнюю границу и выделение должно быть только результативного диапазон.. чтоб не лазить постоянно в макрос и не менять значения.. если диапазон A4:А23, а в след. раз А4:А26.. заданый диапазон А4:А10000 не устраивает

Последний раз редактировалось Janny; 07.11.2008 в 18:06.
Janny вне форума
Старый 08.11.2008, 09:18   #6
arendaa
Новичок
Джуниор
 
Регистрация: 07.11.2008
Сообщений: 1
По умолчанию

Дорогие подскажите как правильно использовать VBA? у меня не получается.
arendaa вне форума
Старый 10.11.2008, 07:58   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
нужно знать верхнюю и нижнюю границу и выделение должно быть только результативного диапазон.. чтоб не лазить постоянно в макрос и не менять значения.
А зачем знать нижнюю границу?
Если у Вас под таблицей есть данные, которые нельзя передвигать, то необходимо знать какой-нибудь признак того, что это конец таблицы (например, слово "Итого" в столбце "A", или что другое).
Следующий пример отыскивает первую пустую строку в диапазоне столбцов "A:D", начиная со строки 4 (переменная i), затем перемещает данные в этих столбцах в диапазоне строк от 4 до i. Но, если в таблице нет пустой строки, то перемещаться будут данные со строки 4 до конца данных в этих столбцах, включая и то, что под таблицей. Данные "правее" таблицы остаются неизменными.
Код:
Sub Main()
    Dim i As Long
    Application.ScreenUpdating = False
    Sheets("Лист1").Select
    For i = 4 To Rows.Count
        If Range(Cells(i, "A"), Cells(i, "D")).Text = "" Then Exit For
    Next
    Range([A4], Cells(i, "A")).Insert
    Range([E4], Cells(i, "E")).Cut [A4]
    Range([E4], Cells(i, "E")).Delete
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение картинки на JS. tunyash JavaScript, Ajax 2 27.03.2009 20:41
Перемещение TImage Романнн Общие вопросы Delphi 1 27.10.2008 18:38
Перемещение данных Мария100684 Microsoft Office Access 6 26.09.2008 03:45
Перемещение компонентов _SERGEYX_ Общие вопросы Delphi 2 10.04.2008 13:33
Перемещение файлов Nasya Microsoft Office Excel 2 13.10.2007 20:37