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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2012, 13:30   #1
KApSuL
Форумчанин
 
Регистрация: 04.09.2010
Сообщений: 119
По умолчанию Удаление столбцов с..по...

есть таблица, в ней нужно удалить лишние строки
выделяю строки вот так:
Код:
    Set nachalo = [A:A].Find("", LookIn:=xlValues).EntireRow
    Set konec = [C:C].Find("", LookIn:=xlValues).EntireRow
    Union(nachalo, konec).Select
не знаю как сделать, чтобы выделить диапазон строк между этими двумя строками
помогите пожалуйста
KApSuL вне форума Ответить с цитированием
Старый 18.09.2012, 14:18   #2
KApSuL
Форумчанин
 
Регистрация: 04.09.2010
Сообщений: 119
По умолчанию

как-то так может?
Код:
    Rows(("& nachalo.Row.Adress &") : ("& konec.Row.Adress $")).Select
KApSuL вне форума Ответить с цитированием
Старый 18.09.2012, 15:10   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Set nachalo = [A:A].Find("", LookIn:=xlValues)
nachalo.resize([C:C].Find("", LookIn:=xlValues).row-nachalo.row+1,1).entirerow.delete
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.09.2012, 15:36   #4
KApSuL
Форумчанин
 
Регистрация: 04.09.2010
Сообщений: 119
По умолчанию

спасибо большое
KApSuL вне форума Ответить с цитированием
Старый 19.09.2012, 07:30   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Пара замечаний:
1. Предложенный способ подразумевает, что первая найденная пустая ячейка в столбце "A" имеет меньший номер строки, чем первая найденная пустая ячейка в столбце "C". Если иначе - будет ошибка.
2. Метод Find имеет один нюанс. Например, если при поиске первой пустой ячейки в столбце использовать
Код:
Set nachalo = [A:A].Find("", LookIn:=xlValues)
то поиск начнется с ячейки "A2". Т.е. если "A1" пустая, то она будет пропущена.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 19.09.2012, 11:56   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Че так сложно-то?
Код:
Set nachalo = [A:A].Find("", LookIn:=xlValues)
Set konec = [C:C].Find("", LookIn:=xlValues)
Range(nachalo, konec).EntireRow.Delete '.Select
И неважно, у какой из найденных ячеек номер строки больше.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 19.09.2012, 13:11   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
И неважно, у какой из найденных ячеек номер строки больше.
Нам с Вами "не важно". А автору темы?
Да и 1-ю строку, по большому счету, нужно проверять отдельно.
Как проще сделать, во многом зависит от начальных условий. Можно, например, так:
Код:
Set nachalo = [A:A].SpecialCells(xlCellTypeBlanks).Cells(1, 1)
Set konec = [C:C].SpecialCells(xlCellTypeBlanks).Cells(1, 1)
Range(nachalo, konec).EntireRow.Delete '.Select
Данный способ не пропустит пустую ячейку в 1-й строке, но он применим только для таблицы с значениями, без формул.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 25.09.2012, 10:53   #8
KApSuL
Форумчанин
 
Регистрация: 04.09.2010
Сообщений: 119
По умолчанию

ребят, подскажите пож как задать область печати?
нашёл вот такой способ
Код:
ActiveSheet.PageSetup.PrintArea = ...
Не могу понять как туда переменные задать
пробую что-то по типу:
Код:
ActiveSheet.PageSetup.PrintArea = Range(nachalo, konec).EntireRow.Select
подскажите пож как будет правильно
KApSuL вне форума Ответить с цитированием
Старый 25.09.2012, 10:57   #9
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
ActiveSheet.PageSetup.PrintArea = intersect(ActiveSheet.usedrange,Range(nachalo, konec).EntireRow).address
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 25.09.2012 в 11:10.
kuklp вне форума Ответить с цитированием
Старый 25.09.2012, 11:01   #10
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
ActiveSheet.PageSetup.PrintArea = Intersect(Range(nachalo, konec), UsedRange).Address
Вот так должно работать.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление строк и столбцов на C++ Orbit@L Помощь студентам 0 12.03.2012 15:59
удаление связи и столбцов zenner Microsoft Office Excel 3 17.11.2011 23:03
удаление столбцов delphi nikita33321 Помощь студентам 2 16.10.2009 18:25
Поиск и удаление столбцов mchip Microsoft Office Excel 4 17.05.2009 18:48
Удаление столбцов в DBGrid-e artemavd БД в Delphi 4 24.10.2008 14:30