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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2013, 20:24   #1
АННА-ЕАО
Форумчанин
 
Аватар для АННА-ЕАО
 
Регистрация: 24.08.2011
Сообщений: 193
Радость VBA как установить формат дата для N-го столбца в ListBox'е

Всем здравствуйте.
Подскажите, пожалуйста, если в форме ListBox заполняется данными из ячеек и содержит несколько столбцов, как для столбца №4 установить формат дата (т.е. 10.10.2010, а не 10/10/210(в ячейки формат - дата)) если сам ListBox заполняется таким образом:
Цитата:
...
arr = Range("A3:L" & il)
ListBox9.List = arr()
Если заполняю массив через счётчик ставлю Str и всё получается, но так уж слишком длинно...
Цитата:
.....
arr(k, 4) = Str(Cells(i, 4))
.....
АННА-ЕАО вне форума Ответить с цитированием
Старый 06.03.2013, 21:14   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

АННА-ЕАО, не решение вашей задачи, просто замечание по коду.
Можно без VBA-массива поместить данные в ListBox:
Код:
Private Sub CommandButton1_Click()
    
    Me.ListBox1.List = Range("A1:B2").Value
    
End Sub
Если никто не предложит ничего, то можно так ускорить ваш код. Если данных много на Excel-листе, то тогда нужно сделать два VBA-массива (с VBA-массивами быстрее работать, чем с Excel-ячейками):
  1. в один массив помещаете данные из Excel-листа;
  2. второй массив делаете с типом данных "String" и помещаете в него данные из первого массива. Затем данные из второго массива помещаете в ListBox.

Последний раз редактировалось Скрипт; 06.03.2013 в 21:35.
Скрипт вне форума Ответить с цитированием
Старый 06.03.2013, 21:46   #3
АННА-ЕАО
Форумчанин
 
Аватар для АННА-ЕАО
 
Регистрация: 24.08.2011
Сообщений: 193
По умолчанию

Скрипт Спасибо Вам большое, попробовала без массива, получилось. Буду знать.
АННА-ЕАО вне форума Ответить с цитированием
Старый 06.03.2013, 21:59   #4
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Не знаю, какие там механизмы действуют, но вот так не искажается дата:
Код:
Me.ListBox1.RowSource = Range("A1:B2").Address
Скрипт вне форума Ответить с цитированием
Старый 07.03.2013, 08:14   #5
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Короче:
Код:
Me.ListBox1.RowSource = "A1:B2"
:-)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 07.03.2013, 09:58   #6
АННА-ЕАО
Форумчанин
 
Аватар для АННА-ЕАО
 
Регистрация: 24.08.2011
Сообщений: 193
По умолчанию

kuklp, Скрипт Спасибо, попробовала все варианты - всё получилось.
Только вот вопросик по ходу возник, а зачем Вы указываете перед ListBox1 слово Me, на что это влияет, ведь ListBox1 на форме в любом случае один единственный.
Без него ещё короче можно было б:
Цитата:
ListBox1.RowSource = "A1:B2"
АННА-ЕАО вне форума Ответить с цитированием
Старый 07.03.2013, 10:22   #7
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

АННА-ЕАО, да, Me не нужно. Я указываю "Me" для удобства написания кода, т.к. если поставить точку, то появляются всплывающие подсказки и удобно писать код.
Скрипт вне форума Ответить с цитированием
Старый 07.03.2013, 10:36   #8
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Только вот вопросик по ходу возник, а зачем Вы указываете перед ListBox1 слово Me, на что это влияет, ведь ListBox1 на форме в любом случае один единственный.
Это приблизительно как ActiveSheet объект. Или ThisWorkbook. Обычно указывать не требуется, но иногда возникают случаи, когда есть необходимость неявного указания родителя данного объекта.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 07.03.2013, 11:05   #9
АННА-ЕАО
Форумчанин
 
Аватар для АННА-ЕАО
 
Регистрация: 24.08.2011
Сообщений: 193
По умолчанию

Понятно, ещё раз всем спасибо за помощь

АННА-ЕАО вне форума Ответить с цитированием
Старый 07.03.2013, 23:16   #10
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

И все же, можно ли решить данную задачу, если
Код:
ListBox1.List = arrSh
У меня подобная задача, только даты находятся в первом столбце, а массив содержит несколько тысяч строк и собирается динамически из четырех баз.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тестовое поле, тип дата, формат даты Ципихович Эндрю Microsoft Office Word 15 08.04.2012 21:26
Как установить формат даты при вводе Santosh Microsoft Office Access 3 28.07.2011 13:35
VBA Как задать формат даты и времени kaa1977 Microsoft Office Excel 5 02.04.2010 12:19
Как в VB6 получить доступ к содержимому колонок в ListBox'е? AndreyMust19 Помощь студентам 3 21.03.2009 00:06
Как установить формат даты на всю книгу ? SD_KOROLEV Microsoft Office Excel 3 02.03.2008 20:14