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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2011, 18:27   #1
pavel.ignatenko
Пользователь
 
Регистрация: 01.11.2009
Сообщений: 23
По умолчанию Базовые понятия

День добрый.

Может и ламмерские вопросы задам (как обычно), но с VBA приходится сталкиваться не часто, но бывает нужно. Итак:

1. Как быть если длина Query запроса к вэбу превышает 255 символов? У меня получается порядка 470.
2. Если в результате Query запроса есть возможность получать эксель файл с необходимой информацией, как его "принять". Т.е. как с ним работать, как получить доступ к листу в нем? Имя файла отдается каждый раз разное.

3. Есть лист с данными. Каким образом найти строку первого в которой искомое значени встречается первый раз? Пример: список фамилий. Нужно найти строчку, в которой "Петров" встречается первый раз.

4. Есть лист. Какой командой можно удалить строки. Ну или полностью их очистить, влючая оформление? При этом оставив нетронутыми первые две строки и ширины столбцов и высоты рядов. Пример: есть лист с таблицей. Шапку нужно оставить, всю таблицу, вместе с рамками удалить.

5. Как изменить у ячейки такое свойство как рамка? Т.е. нужно у ячейки задать рамку. Цвет текста, фона -- знаю. А вот рамку -- нет

Еще раз извините за может быть дурацкие вопросы и заранее спасибо за ответы.
pavel.ignatenko вне форума Ответить с цитированием
Старый 16.04.2011, 18:28   #2
pavel.ignatenko
Пользователь
 
Регистрация: 01.11.2009
Сообщений: 23
По умолчанию

Извините, за такое дурацкое название темы, но форум не хотел давать мне создать тему со следующим названием "Разноплановые вопросы".
pavel.ignatenko вне форума Ответить с цитированием
Старый 16.04.2011, 18:34   #3
pavel.ignatenko
Пользователь
 
Регистрация: 01.11.2009
Сообщений: 23
По умолчанию

Забыл еще про один вопрос:

6. Как определить номер последней строки с данными? Есть такая функция? Интересует именно вариант, когда среди строк встречаются пустые и нужна именно последняя.

Спасибо.
pavel.ignatenko вне форума Ответить с цитированием
Старый 16.04.2011, 19:28   #4
Hugo121
Старожил
 
Регистрация: 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
Hugo121 вне форума Ответить с цитированием
Старый 16.04.2011, 19:50   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
6. очень популярный приём:
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
т.е. ищем первую занятую снизу по выбранному столбцу.
Врёт, если столбец забит полностью, что бывает очень редко.
вот так не врёт:
Код:
iLastRow = Range("A" & Rows.Count).End(IIf(Len(Range("A" & Rows.Count)), xlDown, xlUp)).Row
EducatedFool вне форума Ответить с цитированием
Старый 16.04.2011, 20:28   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

на чистом листе запишите что угодно в ячейки А2, В3, С4 и D5. два предыдущих варианта вернут 2 (последнюю заполненную строку в колонке А, потому что исследуют содержимое только колонки А.
такие варианты:
Код:
iLastRow = Cells.SpecialCells(xlLastCell).Row
iLastRow = Sheets(1).UsedRange.Row + Sheets(1).UsedRange.Rows.Count - 1
вернут 5 - номер последней строки листа, содержащей данные.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.04.2011, 20:50   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

С UsedRange и xlLastCell надо быть осторожным.
Это тоже можно сказать "базовые понятия"...
Бывает, что возвращают не 5...
Вложения
Тип файла: zip testiLastrow.zip (10.5 Кб, 8 просмотров)
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.04.2011, 21:23   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

извините.
согласен, это всё - варианты, надо понимать что-где на листе лежит и что мы ищем вообще
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.04.2011, 21:57   #9
pavel.ignatenko
Пользователь
 
Регистрация: 01.11.2009
Сообщений: 23
По умолчанию

Ребят, у меня без "исключений из правил".
Если строка есть, то у нее нет пробелов в ячейках.
Ну и вариант поиска по столбцу тоже подходит, т.к. в моем случае это равносильно.

А что на счет п.3? Есть какая хитрая команда поиска? Что-то типа lookup
Я ей задаю ячейку и диапазон и она ищет первое совпадение в этом диапазоне.

Я это конечно все написал, но оно в уродском виде, хочется сделать правильно.
Вот сейчас поиск максимальной строки заменю на предложенную вами строчку, и выброшу нафиг цикл.
pavel.ignatenko вне форума Ответить с цитированием
Старый 16.04.2011, 22:11   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

у lookup есть три параметра
1.что ищем
2.где ищем
3.как ищем
задайте третий параметр = 0 (по умолчанию он = 1). 0 - поможет найти первое совпадение.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базовые классы в с++ 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