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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2011, 10:57   #1
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию VBA объединение макросов

Доброго всем времени суток!!!

Дело в том что у меня ситуация следующая - есть таблица, в столбце (А) которой чередуется текст с нулями и столбец (Х), где я написал условие и там идут единицы по строкам а в конце нули, которые говорят о том что это конец таблицы, то есть с помощью этого цикла:

For i = 1 To 1000
If Range("X" & Trim(Str(i))).Value = "0" Then
Exit For
End If
Next
Range("Z1") = i

Я получаю общее число заполненных строк в таблице, ну и для себя я его присвоил ячейке Z1, чтоб проверить.

Пожалуйста подскажите, как в этом макросе:

Sub Merge()

Dim r As Range
With Application
.ScreenUpdating = 0: .DisplayAlerts = 0
For Each r In Range([a1], Cells(Rows.Count, 1).End(xlUp)).Areas.Item(1)
If r.Value = 0 Then Range(r, r.Offset(-1)).Merge
Next
.ScreenUpdating = 1: .DisplayAlerts = 1
End With
End Sub

сделать так чтоб объединение ячеек завершилось на значении i, включительно, полученном при выполнении моего цикла.

Буду очень признателен!!!
DJTreeno вне форума Ответить с цитированием
Старый 17.06.2011, 11:13   #2
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

В ст. Х идут подряд единицы и потом подряд нули. Строка с последней единицей - это последняя обрабатываемая строка в ст.А. Так?
Если так, то можно вот так
Код:
Sub MergeAtA()
Dim r As Range, i&
i = WorksheetFunction.Sum(Range("X1:X" & Cells(Rows.Count, "X").End(xlUp).Row))
'MsgBox i
With Application
    .ScreenUpdating = 0: .DisplayAlerts = 0
    For Each r In Range("A1:A" & i).Areas.Item(1)
        If r.Text = 0 Then Range(r, r.Offset(-1)).Merge
    Next
    .ScreenUpdating = 1: .DisplayAlerts = 1
End With
End Sub
Строк у вас сколько, i чему равно?
nilem вне форума Ответить с цитированием
Старый 17.06.2011, 11:16   #3
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

Количество строк меняется в зависимости от пользователя, щас попробую, спасибо!!!
DJTreeno вне форума Ответить с цитированием
Старый 17.06.2011, 11:33   #4
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

Все работает. Спасибо огромное за помощь!!!
DJTreeno вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA объединение и скрытие SOS!!! DJTreeno Microsoft Office Excel 9 16.06.2011 15:10
Объединение макросов Pilot Microsoft Office Excel 13 31.08.2010 18:05
Как организовать базу макросов в VBA (framework) ? bdfy Microsoft Office Excel 2 10.04.2010 21:01
Функции в VBA, поиск макросов. Ант@н Помощь студентам 1 17.11.2009 12:17
excel+vba странности взаимодействия при сохранении книги без макросов alvazor Microsoft Office Excel 7 06.07.2009 17:22