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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2010, 01:08   #1
Mirth
 
Регистрация: 22.06.2010
Сообщений: 5
По умолчанию База данных Excel

Здравствуйте...со ссылкой на приложеный файл...пытаюсь создать что-то путное...для ввода данных через форму, в связи с чем возникли некоторые вопросы:
1. Как сделать заливку линии, допустим от A1 до S1 если в программе описание строки (конкретной ячейки) идет следующим образом:
Worksheets.Cells(I, 1), где I = 1, n
По правилам это могло бы быть Range("A1:S1")...просто все упирается в цикл с переменной I

В конечном итоге я хочу сделать так, что если выбран один из 2-х вариантов на форме, то тогда вся активная строка базы данных становится определенного цвета.

2. Как сделать так, чтобы встроенный DateTime Picker и Months View показывал текущую дату автоматически?

3. Как видно, список судов для ComboBox vessels находится на листе Data...но в свою очередь этот список представляет собой 4 группы судов, численность каждой в базе данных мне потом нужно определить. Как можно разбить эти суда на группы, при условии что весь список остается прежним?

Если непонятно изъясняюсь, вот пример:
если выбрано судно Battersea, группа A пополняется на 1...но весь combobox состоит из 4-х групп по алфавиту.

СПАСИБО ОГРОМНОЕ ЗА ПОМОЩЬ!
Вложения
Тип файла: rar DB.rar (23.9 Кб, 33 просмотров)
Mirth вне форума Ответить с цитированием
Старый 22.06.2010, 01:26   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

1) например, так:
Код:
Sub ОформлениеСтроки_I()
    I = 18
    ' окраска линии под строкой
    Range("b:f").Rows(I).Borders(xlEdgeBottom).Weight = xlThick
    ' окраска самой строки
    Range("a:s").Rows(I).Interior.ColorIndex = 4
End Sub
2) А разве не показывает?
Можно добавить установку нужного значения в процедуру UserForm_Initialize
EducatedFool вне форума Ответить с цитированием
Старый 22.06.2010, 15:08   #3
Mirth
 
Регистрация: 22.06.2010
Сообщений: 5
По умолчанию

спасибо огромное! подскажите пожалуйста ошибку:

If DB.Cells(I, 3).Value = "Navios Kypros" Or "Fantasy Star" Or "Floral Lake" Then
Range("A:S").Rows(I).Interior.Color Index = 4
Range("A:S").Rows(I).Borders(xlEdge Bottom).Weight = xlThin


почему нельзя задавать несколько значений Value? не хочется для каждого расписывать...
Mirth вне форума Ответить с цитированием
Старый 22.06.2010, 15:24   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

А так?
Код:
Select Case Cells(I, 3).Value
Case "Navios Kypros", "Fantasy Star", "Floral Lake"
Range("A:S").Rows(I).Interior.ColorIndex = 4
Range("A:S").Rows(I).Borders(xlEdge Bottom).Weight = xlThin
End Select
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 22.06.2010, 16:36   #5
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию

Функция логической дизъюнкции (конъюнкции) работает только для ДВУХ выражений. Примените скобки:
"Navios Kypros" Or ("Fantasy Star" Or "Floral Lake") Then
alvazor вне форума Ответить с цитированием
Старый 22.06.2010, 16:39   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Сообщение от alvazor Посмотреть сообщение
Функция логической дизъюнкции (конъюнкции) работает только для ДВУХ выражений. Примените скобки:
"Navios Kypros" Or ("Fantasy Star" Or "Floral Lake") Then
Вы хоть пробуйте, прежде чем советовать...

Помимо оптимального варианта от Hugo121 подойдёт лишь такой:

Код:
If DB.Cells(I, 3).Value = "Navios Kypros" Or DB.Cells(I, 3).Value ="Fantasy Star" Or DB.Cells(I, 3).Value ="Floral Lake" Then
Ну и ещё есть пара способов, но они чуть сложнее для понимания.
EducatedFool вне форума Ответить с цитированием
Старый 22.06.2010, 17:48   #7
alvazor
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 122
По умолчанию

Да уж, действительно на элементарном лоханулся, прошу прощения!
Другим будет наука!
alvazor вне форума Ответить с цитированием
Старый 22.06.2010, 23:34   #8
Mirth
 
Регистрация: 22.06.2010
Сообщений: 5
По умолчанию

Огромное спасибо всем за помощь! Мой директор, блин, генератор идей... сегодня новая фишка...кто нибудь знает, как ставить условие, отталкиваясь от дня недели? Допустим, в первой колонке содержится дата (просто по формату, а не через DateTimePicker)...требуется для Вс и Пн вычислить одно выражение, а для остальных -другое...и так по мере пополнения базы данных...
Кстати, как задается цикл для дат? каждая запись базы заводится ежедневно...так что без перерывов. Начиная, допустим, с 1 января 2010. Так что при каждой новой записи мне нужна следующая дата...может, как-то через счетчик?

Ну и еще о наболевших датах. Может, кто подскажет как выводить в ячейку значение MonthView при его свойстве Multiselect - True. Мне необходимо указать помежуток времени в ячейке...вроде 1.10.2010 - 12.10.2010...это свойство используется для чего-то подобного? ну а насчет даты по умолчанию...в DTPIcker и в MonthsView в свойстве Value автоматически присваевается дата создания данного объекта на форме...и в итоге она высвечвается серым цветом, а текущая дата обводится красным. Может возможно их задать на одно текущее число

Спасибо за оказание помощи полусвихнувшейся на VBA девушке! +)
Mirth вне форума Ответить с цитированием
Старый 22.06.2010, 23:48   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Кстати, как задается цикл для дат
Точно также, как и для любых других ячеек \ значений.
Был бы пример файла - получили бы готовый пример.

Цитата:
каждая запись базы заводится ежедневно...так что без перерывов. Начиная, допустим, с 1 января 2010. Так что при каждой новой записи мне нужна следующая дата...может, как-то через счетчик?
не понял...

Цитата:
Мне необходимо указать помежуток времени в ячейке...вроде 1.10.2010 - 12.10.2010...
Лучше выводить в 2 разные ячейки - иначе потом обрабатывать (а, тем более, анализировать) эти данные будет сложно.

А для выбора дат можно использовать такие варианты кода:
http://www.programmersforum.ru/showp...02&postcount=5
http://www.programmersforum.ru/showp...83&postcount=5
EducatedFool вне форума Ответить с цитированием
Старый 23.06.2010, 00:24   #10
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от Mirth Посмотреть сообщение
каждая запись базы заводится ежедневно...так что без перерывов. Начиная, допустим, с 1 января 2010. Так что при каждой новой записи мне нужна следующая дата...может, как-то через счетчик?

+)
так подойдет событие в столбце b
Вложения
Тип файла: zip id data.zip (6.7 Кб, 27 просмотров)
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Единая база в Excel на сервере. Как? anridka Microsoft Office Excel 21 24.11.2010 06:43
в 3 вариантиках: Excel, база данных, Бейсик Маня Помощь студентам 0 10.06.2010 18:42
Небольшая база в Open Office База данных. sashaman Фриланс 3 11.04.2010 20:13
База на Excel OgE®_M@G Microsoft Office Excel 3 10.01.2010 08:21
База данных с возможностью приема данных из файлов Excel Al_Sha БД в Delphi 6 16.10.2009 15:34