Страницы: 1
RSS
Как проверить лист на пустоту.?
 
Добрый день. Каким образом можно узнать, лист пустой или нет, путем перебора страниц в цикле? Т.е. берем  2 стр проверяем ее на пустоту, если не пустая, копируем из нее текст в первый лист, затем проверяем 3 стр, если не пустая, копируем из нее текст в 1 лист, ниже данных, взятых со 2стр. Если например попадается пустая стр, то выдается сообщение об этом.
 
Код
If mySheet.Cells.Text = "" Then 'пустой
Изменено: Казанский - 13.09.2018 09:24:30
 
Не понятно, Вы не знаете как проверить есть ли данные или Вы хотите увидеть готовый код всего, что описали? Если опираться на вопрос темы, то проверить есть ли что-то вообще на листе(заполнена ли хоть одна ячейка) можно так:
Код
    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
        If IsNull(ws.UsedRange.Text) Or ws.UsedRange.Text <> "" Then
            'копируем
        End If
    Next
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Благодарю вас за ответы, вроде все получилось.  Возник еще такой вопрос. Мне необходимо скопировать со всех листов текст, начиная со второго и вставить по порядку его на первый лист. со сдвигом вниз. Каким образом это сделать?

Worksheets(f).Range(FirstCell, LastCell).Copy Worksheets(1).Range("b:c") таким образом у меня производится копирование на данный момент. Копирование происходит в цикле. С начала цикла происходит копирование со второго листа и вставляется в первый. На втором шаге происходит копирование с 3его листа на первый, при этом вся инфа, скопированная с 2 листа затирается инфой с 3 листа.

если после Worksheets(f).Range(lastCell, FirstCell).Copy Worksheets(1).Range("b:c") пишем shift:=xldown, то обработчик выдает ошибку.  
 
примерно так
Код
With Worksheets(1)
  Worksheets(f).Range(FirstCell, LastCell).Copy .Range("b:" & .UsedRange.Row + .UsedRange.Rows.Count)
End With
 
Цитата
Казанский написал:
примерно такКод ? 123With Worksheets(1)  Worksheets(f).Range(FirstCell, LastCell).Copy .Range("b:" & .UsedRange.Row + .UsedRange.Rows.Count)End With
При исполнении выдается ошибка run-time error '1004'
 
у Алексея опечатка. Не должно быть двоеточия:
Код
Worksheets(f).Range(FirstCell, LastCell).Copy .Range("b" & .UsedRange.Row + .UsedRange.Rows.Count)
и хочется верить, что переменные FirstCell и LastCell содержат значения, отличные от нуля :)
Изменено: Дмитрий(The_Prist) Щербаков - 13.09.2018 14:10:26
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Код
  Worksheets(f).Range(FirstCell, LastCell).Copy .Range("b" & .UsedRange.Row + .UsedRange.Rows.Count)
 
Скрипт начал копировать строки. Но дело в том, что копируется не только диапазон, заключенный в ячейки  Range(FirstCell, LastCell), но и куча пустых строк. Т.е. на первой странице скопированный со второго листа текст  начинается аж с 800 строки, потом еще куча пустых строк и вставлен диапазон с листа 3 Причем это как то работает через раз. Не могу понять в чем причина. НЕ могли бы вы подробней объяснить строку .Range("b" & .UsedRange.Row + .UsedRange.Rows.Count). Что она конкретно делает? И еще вопрос, почему в данном макросе было невозможно использовать метод paste или insert ?
Выкладываю весь файл с полным скриптом. Используется Макрос 6.
Изменено: Judgementday - 13.09.2018 15:34:05
 
Подниму тему. Прошу помочь, если это возможно.
 
Judgementday, Вы бы посмотрели, какой диапазон копируется. Поставьте точку останова на With Worksheets(1) и в окне Immediate
Код
Range(lastCell, FirstCell).select
И первый лист на вид пустой, но попробуйте
Код
activesheet.usedrange.select

Гиперссылки надо сохранить или нужны только значения?
 
Цитата
Казанский написал:
Гиперссылки надо сохранить или нужны только значения?
Гиперссылки нужны обязательно.
 
Поправил/добавил пару строк. Кривовато, но с данным файлом работает
Скрытый текст
 
Цитата
Казанский написал:
Поправил/добавил пару строк. Кривовато, но с данным файлом работает
Спасибо огромное. Все работает. Вы просто волшебник ))))
 
Judgementday, а какое отношение Ваш второй вопрос имеет к этой теме?
 
Цитата
Judgementday написал:
Подниму тему
в #2 дан точный ответ на вопрос из #1 (ни добавить, ни отнять - коротко и точно по вопросу, что еще подымать?)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх