|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.04.2011, 18:27 | #1 |
Пользователь
Регистрация: 01.11.2009
Сообщений: 23
|
Базовые понятия
День добрый.
Может и ламмерские вопросы задам (как обычно), но с VBA приходится сталкиваться не часто, но бывает нужно. Итак: 1. Как быть если длина Query запроса к вэбу превышает 255 символов? У меня получается порядка 470. 2. Если в результате Query запроса есть возможность получать эксель файл с необходимой информацией, как его "принять". Т.е. как с ним работать, как получить доступ к листу в нем? Имя файла отдается каждый раз разное. 3. Есть лист с данными. Каким образом найти строку первого в которой искомое значени встречается первый раз? Пример: список фамилий. Нужно найти строчку, в которой "Петров" встречается первый раз. 4. Есть лист. Какой командой можно удалить строки. Ну или полностью их очистить, влючая оформление? При этом оставив нетронутыми первые две строки и ширины столбцов и высоты рядов. Пример: есть лист с таблицей. Шапку нужно оставить, всю таблицу, вместе с рамками удалить. 5. Как изменить у ячейки такое свойство как рамка? Т.е. нужно у ячейки задать рамку. Цвет текста, фона -- знаю. А вот рамку -- нет Еще раз извините за может быть дурацкие вопросы и заранее спасибо за ответы. |
16.04.2011, 18:28 | #2 |
Пользователь
Регистрация: 01.11.2009
Сообщений: 23
|
Извините, за такое дурацкое название темы, но форум не хотел давать мне создать тему со следующим названием "Разноплановые вопросы".
|
16.04.2011, 18:34 | #3 |
Пользователь
Регистрация: 01.11.2009
Сообщений: 23
|
Забыл еще про один вопрос:
6. Как определить номер последней строки с данными? Есть такая функция? Интересует именно вариант, когда среди строк встречаются пустые и нужна именно последняя. Спасибо. |
16.04.2011, 19:28 | #4 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
4 и 5 вручную сделать умеете? Запишите эти действия рекордером в макрос, посмотрите код. Там конечно понапишет много лишнего - можно подсократить, например п5. (из запасников):
====== Натянуть рамку: With Sheets("Бюджет").Range("A" & r & ":G" & r) .Borders(xlEdgeTop).Weight = xlMedium .Borders(xlEdgeBottom).Weight = xlMedium .Borders(xlEdgeLeft).Weight = xlMedium .Borders(xlEdgeRight).Weight = xlMedium End With Как вариант: For i = 7 To 10 Sheets("Бюджет").Range("A" & r & ":G" & r).Borders(i).Weight = xlMedium Next или лучше и проще Sheets(1).Range("A" & r & ":G" & r).Borders.Weight = xlThin ======= 6. очень популярный приём: iLastRow = Cells(Rows.Count, 1).End(xlUp).Row т.е. ищем первую занятую снизу по выбранному столбцу. Врёт, если столбец забит полностью, что бывает очень редко.
webmoney: E265281470651 Z422237915069 R418926282008
|
16.04.2011, 19:50 | #5 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Цитата:
Код:
|
|
16.04.2011, 20:28 | #6 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
на чистом листе запишите что угодно в ячейки А2, В3, С4 и D5. два предыдущих варианта вернут 2 (последнюю заполненную строку в колонке А, потому что исследуют содержимое только колонки А.
такие варианты: Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
16.04.2011, 20:50 | #7 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
С UsedRange и xlLastCell надо быть осторожным.
Это тоже можно сказать "базовые понятия"... Бывает, что возвращают не 5...
webmoney: E265281470651 Z422237915069 R418926282008
|
16.04.2011, 21:23 | #8 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
извините.
согласен, это всё - варианты, надо понимать что-где на листе лежит и что мы ищем вообще
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
16.04.2011, 21:57 | #9 |
Пользователь
Регистрация: 01.11.2009
Сообщений: 23
|
Ребят, у меня без "исключений из правил".
Если строка есть, то у нее нет пробелов в ячейках. Ну и вариант поиска по столбцу тоже подходит, т.к. в моем случае это равносильно. А что на счет п.3? Есть какая хитрая команда поиска? Что-то типа lookup Я ей задаю ячейку и диапазон и она ищет первое совпадение в этом диапазоне. Я это конечно все написал, но оно в уродском виде, хочется сделать правильно. Вот сейчас поиск максимальной строки заменю на предложенную вами строчку, и выброшу нафиг цикл. |
16.04.2011, 22:11 | #10 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
у lookup есть три параметра
1.что ищем 2.где ищем 3.как ищем задайте третий параметр = 0 (по умолчанию он = 1). 0 - поможет найти первое совпадение.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Базовые классы в с++ | Banner | Помощь студентам | 1 | 31.03.2011 23:43 |
Ассемблер без понятия... | Sobaka_ru | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 10.12.2010 10:00 |
Паскаль, 4 базовые задачи. | t1mer | Помощь студентам | 7 | 26.06.2009 21:02 |
Без понятия ListBox ! | Volkogriz | Общие вопросы Delphi | 9 | 31.12.2007 14:28 |
базовые и производные классы (В чём моя ошибка) | umnix | Общие вопросы C/C++ | 5 | 01.12.2007 17:26 |