Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
Alemox написал: Ну так и напишите как написали в вопросе
Это привычка такая? Шутить на профильных форумах?
есть объект objRange as Excel.Range, ему присвоен некий диапазон [A1:B4]. Каким методом можно было бы переразмерить, чтобы он начинался со второй строки? Думал может Offset или Resize..., как обычно делают? чтобы на выходе был диапазон [A2:B4].
Ну если ему присвоен диапазон [A1:B4], то присвойте ему диапазон [A2:B4]. В чём тут шутка?
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
Set objRange = objRange.Rows(2).Resize(objRange.Rows.Count - 1)
или
Set objRange = objRange.Offset(1).Resize(objRange.Rows.Count - 1)
или
Set objRange = Range(objRange.Range("A2"), objRange(objRange.Count))
Спасибо! Казанский, в очередной раз убеждаюсь в вашем мега профессионализме. кстати, на всякий пожарный ещё спрошу, с вашего позволенья, а если Range получен через
Вы спрашиваете непонятно о чем, а потом возмущаетесь. что народ шутит
Цитата
можно ли "заложить" начало с нужной строки? Пробовал писать Rows(2), то берёт только одну конкретную строку.
Вопрос об ОДНОЙ строке, т.е. определить диапазон с началом со строки, которую находим. Вам и "берёт только одну конкретную строку", как Вы и спрашиваете.
Еще замечание: что пишут правила о размещении разных вопросов в одной теме?
Вот вы любители поболтать ) Как учитель с линейкой, нна по рукам, а ну вон из класса!
Что за жизнь по некоему алгоритму? Шаг влево, шаг вправо - расстрел. Что я такого спросил? Стандартный вопрос про методы объекта. Просто чел обиделся, что не смог предложить решение раньше всех, а написать надо было что-то.
Тут главное успокоится, вся автоматизированная жизнь приводит к депрессиям. Т.к. если выходит что-то за пределы алгоритма, начинается психоз.
Сергей Немец написал: Что я такого спросил? Стандартный вопрос про методы объекта.
Цитата
Сергей Немец написал: Это привычка такая? Шутить на профильных форумах?
Это про методы? И не следует использовать слово "чел". Это невежливо. Не находите? Да и не обижалося никто на Вас. === И не нужно писать чеерез 1-2 строки.
Сергей Немец, Понимаете, вот пришел на форум с тем же вопросом кто-то, вы думаете ваше первое пояснение , да и само название темы поможет ему найти ответ? Вот по этому мы и шутим, чтоб даже на профильном форуме, фот такие мы Профитроли.
Приветствую, Михаил! Оно, может и так, но лично мне не очень нравится их описание
Сергей Немец, Я обычно смотрю "переваренные" решения и прежде всего у отличного спеца Дмитрия Щербакова на этом сайте или на Perfect-Excel (2 ссылки). Есть ещё несколько мест, но вам этого должно хватить, к тому же buchlotnik и Казанский вам уже подсказали тэги для сёрфинга. Смотрите примеры, вникаете, пробуете, применяете для различных вариантов, развиваете в своих проектах и, таким образом, обучаетесь
Если кратко, то Offset(r,c) "двигает" прямоугольную рамку Range на "r" строк вниз и "c" столбцов вправо (допустимы нулевые и отрицательные значения для "r" и "c"), а вот Resize(r,c) нужна только левая верхняя (первая то есть) ячейка диапазона. От этой ячейки он формирует диапазон высотой "r" строк вниз и "c" столбцов вправо. В отличие от Offset, тут (и для "r" и для "c") не допустимы значения <1. А недопустимы именно потому что диапазон на листе (к коим Range и относится) не может содержать 0 или меньше строк или столбцов - хоть 1, но должно быть. Поэтому, для того, чтобы "расширить" диапазон вверх и/или влево, нужно сначала туда добраться (в левую верхнюю ячейку, откуда хотим расширять), а потом уже "ресайзить" вниз и вправо, как положено Можно также запомнить как:Resize это "сколько", а Offset это "НА сколько"
Offset и Resize могут и очень часто комбинируются. Они являются очень шустрым и коротким в написании методом при формировании/изменении диапазонов. Бывают крайне полезны в циклах и при создании массивов.
Примеры для ActiveSheet:Range("A3:C5") = [a3:c5] (квадратные скобки это не то же самое, а что-то вроде вынужденного преобразования и могут использоваться не только для диапазонов) = [a3].Resize(3,3) = Cells(1,1).Offset(2,0).Resize(3,3) = Cells(10,10).Offset(-7,-9).Resize(3,3). Или [a3:c5] = [a4:c6].Offset(-1,0) = [b4:d6].Offset(-1,-1) Рекомендую поэкспериментировать с Immediate Window в редакторе (см. скрин). Мог ошибиться в примерах, т.к. не проверял, но суть вы, надеюсь, поняли
Я, в своё время, тоже ни хрена не понимал в этих 2х методах и постоянно их путал и ошибался. Потом запомнил именно вот так, как вам попытался объяснить
P.S.: И не надо на нас дуться - "со своим уставом в чужой монастырь не ходят", знаете ли тут на форуме здорово
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous написал: Оно, может и так, но лично мне не очень нравится их описание
Нравится, не нравится , но этот источник достоверен и если надо получить представление о чем-то , и поиск дал ссылку на эти ресурсы то избегать их уж точно не стоит. Конечно и там есть баги и машинный перевод добавляет приколов например таких, однако это компенсирует объем и охват.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous написал: когда спец тебе "разжевал" с примерами - это просто, удобно и быстро
а еще лучше сделал за тебя, ведь он же спец и у него получится лучше. Собственно этим и пользуются часто ТСы. Зачем 4 минуты тратить на поиск и прочтение статьи, ведь минуту потратить на топик и через 10 мин получить готовое решение. При этом еще есть шанс сказать, что не правильно поняли задачу и попросить переделать. Я не говорю что труд Дмитрия бесполезен, наоборот, но к несчастью готовые решения , для многих палочка выручалочка мозги отключалочка.
БМВ написал: а еще лучше сделал за тебя, ведь он же спец и у него получится лучше
это намеренное утрирование и перегибы. К слову, очень часто, действительно, так и есть. Но это вопрос подхода, ведь интернет - это тоже огромный кладезь знаний, но многие тут только и делают, что постят фотки еды и смотрят котиков/фэйлы/порно. У медали 2 стороны. Например, ядерная энергетика - это и прекрасный источник энергии и смертоносное оружие массового поражения. Вопрос подхода
А вообще, нам давно пора бы встретиться - я столько всего хочу спросить у вас))) завтра напишу Андрею и вам
P.S.: прошу прощения за оффтоп у Юрия (он, вроде. дежурный) - прекращаю
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Jack Famous, не, ну зря вы так, в самом деле, не только подробно расписали, а и добавили смайлы для информативности - яж не заслужил, из-за своего поведения. Но в целом, да, правда, вот копаешь бывает что-то и наскакиваешь на очевидную мелочь, читаешь доку, тестишь и что-то выпускаешь из виду. И реально, некое отчаяние нападает, что бьёшься-бьёшься, и тогда понимаешь, что нужно вот срочно совет от коллег, пока основная идея заполоняет разум. Всё же если тут есть профессионалы, то они могут и в состоянии отделить зёрна от плевел и понять, где ламерский вопрос с просьбой сделайте за меня, и где технический вопрос, касаемый особенностей или неких деталей языка. Знать всё по языку не всегда получается, особенно если ты и швец и жнец по жизни, и vba необходим, как анализатор для быстрых разработок и подсчётов. И учить слишком глубоко не хватает возможностей. Учитывая данные обстоятельства, насколько я понимаю, и возникают подобные форумы профильной тематики.
А злой я, потому что форумы меня расшатали. Уж какой есть, нервный и резкий. Но в то же время я ни на кого не обижаюсь, раз они не такие как я )
П.С. Кстати, этот Offset не работает на прерывистом диапазоне. Да и Resize как-то тоже. Лишь один метод здесь заработал, и его я бы врядли нашёл в документации за 4 минуты.
почти, но не всегда. Уверен, что есть моменты (сходу не вспомню), когда логика не прямая или совсем нарушена/отсутствует)) В данном случае совпад: "offset" - это "смещаем" (двигаем то есть), а "resize" - это переопределяем (переразмериваем).
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄