Вопрос № 53686: Уважаемые эксперты!
Пытался по разному найти информацию, но не получилось. Вопрос, в принципе, простой. Как узнать что содержится в ячейке? К примеру, в ячейке а1 содержится некая текстовая информация. Как создать условие по принципу if <...Вопрос № 53688: Уменя есть задача в которой мне нужно выделить ячейки листа EXСEL с определенным условием(есть огромный список в котором нужно выделить определенные данные, как например выделяешь мышкой удерживая CTRL) именно так выделить у меня
не получается. А VBA...Вопрос № 53695: Уважаемые эксперты, у меня вопрос как в VBA можно обратиться к строке как к массиву. то есть например
у меня набор символов str = "фыамм,ауапапююывпы....000аывп345"
как мне организовать средсвами VBA вычлинение цыфр из это строки?<b...Вопрос № 53769: Уважаемые эксперты! Хотелось бы узнать как правильно пользоваться зарезервированной дерективой Is в VB
у меня есть функиция, но она не работает, как коректно записать такое выражение?
Заранее благодарен!...
Вопрос № 53.686
Уважаемые эксперты!
Пытался по разному найти информацию, но не получилось. Вопрос, в принципе, простой. Как узнать что содержится в ячейке? К примеру, в ячейке а1 содержится некая текстовая информация. Как создать условие по принципу if <a1> = "test" then ...
Посоветуйте, пожалуйста, справочник по командам VBA. В котором, к примеру, написанно Cells.xxx.yyy - делает то-то и т.п.
Заранее благодарен.
Отправлен: 29.08.2006, 18:41
Вопрос задал: Vadimf (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Vadimf!
Для получения полной информации по языку VBA необходимо установить из OFFICE помощь по Basic . Тогда после запуска EXCEL выбираете СЕРВИС > МАКРОС > РЕДАКТОР Visual Basic . В нем выбираете HELP > СПРАВКА Microsoft Visual Basic и задаете свои вопросы . Наберите RANGE и получите свойства диапазона ячеек ( CELLS является подтипом RANGE ) .
Для ознакомления с командами можно воспользоваться макросами :
выбираете СЕРВИС > МАКРОС > Начать запись
Делаете необходимые действия, которые Вам нужно обрабатывать в программе , затем
выбираете СЕРВИС > МАКРОС > Остановить запись
выбираете СЕРВИС > МАКРОС > МАКРОСЫ > находите свой макрос > Изменить
и смотрите команды для обработки .
Конкретно по Вашему вопросу можно предложить :
if cells ( "A1" ) . Value = "test" then
Но это сработает для текстовых ячеек и ячеек общего вида с текстовым содержимым . Для того , чтобы узнать тип формата ячейки , можно воспользоваться свойством NumberFormat , который возвращает или устанавливает формат ячейки .
Range ( "A1" ) . NumberFormat = "General" 'Основной
Range ( "A2" ) . NumberFormat = "0.00" 'Числовой два знака после нуля
Range ( "A3" ) . NumberFormat = "m/d/yyyy" 'Дата
Range ( "A4" ) . NumberFormat = "@" 'Текст
Т.е. сначала надо проверить ячейку на текстовый вид поля, а затем сравнивать содержимое.
Описать все свойства для работы с ячейкой проблематично, их около сотни. Задавайте конкретные вопросы, что Вы хотите делать и получите решение.
1) Приведу пример макроса, проверяющего при активации Листа3, содержит ли его ячейка А1
значение "Вася Пупкин":
В проводнике объектов проекта выберите Лист3 (дважды кликните на нем). Справа в окне кода
в событии Private Sub Worksheet_Activate() введите
Dim V
V = Range("A1").Value
If V = "Вася Пупкин" Then
MsgBox ("OK, Вася!")
Else
MsgBox ("Текущее значение ячейки А1 -" & " " & V)
End If
При активации Листа3 у Вас должно выскочить сообщение (одно из этих двух).
Надеюсь, пример поможет Вам.
2) Я пользуюсь книгой А. Гарнаева "Самоучитель VBA: технология создания пользовательских приложений" издательства "БХВ-Петербург" 2002 года. Книга просто замечательная, на мой взгляд. Материал излагается доступно и последовательно, с большим количеством примеров. Рекомендую !
--------- Труд сделал обезьяну человеком, а лень человека - программистом !
Ответ отправил: Кокорич Вадим Леонидович (статус: 5-ый класс)
Ответ отправлен: 29.08.2006, 19:54
Вопрос № 53.688
Уменя есть задача в которой мне нужно выделить ячейки листа EXСEL с определенным условием(есть огромный список в котором нужно выделить определенные данные, как например выделяешь мышкой удерживая CTRL) именно так выделить у меня не получается. А VBA для меня незнаком...
Если возможно бросьте фрагмент кода, или подскажите где подсмотреть.
Заранее спасибо.
Отправлен: 29.08.2006, 18:55
Вопрос задал: Andrey_ (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: din
Здравствуйте, Andrey_!
Вот пример:
Range("A1:A100").Select - Выделит ячейки с 1 по 100 столбца А
Selection.Copy - устанавливаем выделение для копирования
Range("B1").Select - выделяем другую ячейку начиная с которой нужно сделать вставку
ActiveSheet.Paste - вставляем данные
Application.CutCopyMode = False - снимаем выделение для копирование
Удачи!
Приложение:
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Студент)
Ответ отправлен: 29.08.2006, 19:09
Отвечает: Genyaa
Здравствуйте, Andrey_!
Посмотрите и попробуйте код в приложении.
Процедура выделяет все ячейки на листе, отвечающие вводимому в диалоге критерию.
Опробовано только для числовых значений на листе.
Приложение:
--------- Всякое решение плодит новые проблемы.
Ответ отправил: Genyaa (статус: 7-ой класс)
Ответ отправлен: 30.08.2006, 15:05
Вопрос № 53.695
Уважаемые эксперты, у меня вопрос как в VBA можно обратиться к строке как к массиву. то есть например
у меня набор символов str = "фыамм,ауапапююывпы....000аывп345"
как мне организовать средсвами VBA вычлинение цыфр из это строки?
заранее благодарен
Отправлен: 29.08.2006, 19:35
Вопрос задал: Blajimir (статус: Посетитель)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: C4tnt
Здравствуйте, Blajimir!
Такого счастья как в C++ конечно нет, но есть функция instr, которая выбирает подстроку
Используйте так X = mid(CTPOKA,n,1) - в Х будет символ с номером n (отсчёт с 1)
Количество символов - len(CTPOKA)
Для ускорения можно использовать instr(from,where,what)
from - номер символа, с которого начинаем поиск
where - строка в которой ищем
what - искомая подстрока
Функция возвращает номер первого символа первого вхождения подстроки или
ноль, если ничего не найдёт.
--------- Теперь к нашим ответам осталось лишь найти вопросы
Ответ отправил: C4tnt (статус: 2-ой класс)
Ответ отправлен: 29.08.2006, 19:45
Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Blajimir!
Например так , как в приложении. В строку цифр не попадут разделители целой и дробной части, т.е. только цифры от 0 до 9 .
Результат будет строковым выражением.
Отвечает: din
Здравствуйте, Blajimir!
В приложении код, не самый изящный но работает.
Удачи!
Приложение:
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Студент)
Ответ отправлен: 29.08.2006, 20:14
Отвечает: Tossha
Здравствуйте, Blajimir!
После приведённого ниже цикла:
str=""
str1="<цифры из бывшего str>"
Суть проста: берём 1 символ слева строки, сравниваем его ascii код с 0 и 9-кой и если он между ними(то есть мы имеем дело с цифрой), то записываем его в str1, и потом удаляем его.
Приложение:
Ответ отправил: Tossha (статус: 1-ый класс)
Ответ отправлен: 29.08.2006, 20:46
Отвечает: Bonapart
Здравствуйте, Blajimir!
это очень просто
с помощью функций
mid
left
rigth
Ответ отправил: Bonapart (статус: 1-ый класс)
Ответ отправлен: 30.08.2006, 09:31
Отвечает: Fsl
Здравствуйте, Blajimir!
Для этого выдергиваем по одному символу из строки, сравниваем с кодом таблицы ASCII.
dim a as string
txt = "фыамм,ауапапююывпы....000аывп345"
for i=0 to len(txt)
if asc(mid(txt,i,1))<48 or asc(mid(txt,i,1)>57 then txt1=txt1 & mid(txt,i,1)
next
--------- В Интернете всегда есть место подвигу ... даже в чатах
Ответ отправил: Fsl (статус: 2-ой класс)
Ответ отправлен: 30.08.2006, 09:31
Вопрос № 53.769
Уважаемые эксперты! Хотелось бы узнать как правильно пользоваться зарезервированной дерективой Is в VB
у меня есть функиция, но она не работает, как коректно записать такое выражение?
Заранее благодарен!
Приложение:
Отправлен: 30.08.2006, 14:05
Вопрос задал: Blajimir (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Fsl
Здравствуйте, Blajimir!
Директиву Is можно использовать, в частности, в качестве переменной в операторе выбора Select.
Например:
Select Case Button.Key
Case Is = "open" ' Open file.
'следует код
Case Is = "save" ' Save file.
'следует код
Case Else
'следует код
End Select
--------- В Интернете всегда есть место подвигу ... даже в чатах
Ответ отправил: Fsl (статус: 2-ой класс)
Ответ отправлен: 30.08.2006, 14:28
Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Blajimir!
Оператор IS используется для сравнения двух переменных , содержащих ссылки на объекты . Применяется как объект1 IS объект2 . Результатом операции будет TRUE / FALSE . Если переменные объект1 и объект2 содержат ссылки на один объект, результат имеет значение True , в противном случае результат имеет значение False . Ссылка на объекты осуществляется оператором SET :
Set A = D
В вашем примере для определения цифр можно воспользоваться кодом :
Option Base 1 ' установить используемую по умолчанию нижнюю границу индексов , равную 1
For i = 1 To Len ( str )
if mid ( str , i , 1 ) > = "0" and mid ( str , i , 1 ) < = "9" then
n = n & Mid ( str , i , 1 )
End If
NEXT
Посмотри ответы на вопрос 53695, в том числе и мой.