2017-01-24 2 views
0

Контекст: Рабочий лист Excel состоит из пользовательской формы, которая выводится на несколько листов. Функция этой пользовательской формы является селектором дат, который требуется выводить в одну ячейку. Однако, из-за характера его дизайна (Полученный от джентльмена с этого конкретного сайта, Дуга Глэнси) он состоит из трех comboboxes.Excel: возможно ли слияние нескольких выходов ComboBox в одну ячейку?

Он отображается как:

[ComboBox1: день] [ComboBox2: Месяц] [ComboBox3: год]

Here is an image for visual reference

Есть ли конкретный метод принуждать срастания от нескольких выходы в одну ячейку? А если нет, каков будет альтернативный метод для достижения аналогичного результата?

Edit: Вот мой текущий код для передачи данных из UserForm:

Sub Transfer() 

Dim emptyRow As Long 

'Make Sheet2 active 
Sheet2.Activate 

'Determine emptyRow 
emptyRow = WorksheetFunction.CountA(Range("B:B")) + 1 

'Transfer information 
Cells(emptyRow, 2).Value = TextBoxSON.Value 
Cells(emptyRow, 3).Value = TextBoxJobDescription.Value 
Cells(emptyRow, 4).Value = TextBoxCustomer.Value 
Cells(emptyRow, 5).Value = TextBoxQuantity.Value 
Cells(emptyRow, 6).Value = TextBoxDateRequired.Value 

Dim LR As Integer 
LR = Range("B" & Rows.Count).End(xlUp).Row 
Application.EnableEvents = False 
Range("A4:BB" & LR).Sort Key1:=Range("A4"), Order1:=xlAscending, _ 
    Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 
Application.EnableEvents = True 

End Sub 

Edit: Большое спасибо CLR за ответ:

mydate = DateSerial(cboYear.Value, cboMonth.Value, cboDay.Value) 
Cells(emptyRow, 6).Value = mydate 

Этот код позволяет данные для вывода точно так, как хотелось бы. Надеюсь, это поможет любому в будущем.

(Ненужные (Но, казалось бы, необходимо) информация:. Эй, я новый пользователь SO После нескольких часов (и часов) пытаются найти и понять эту проблему, я не пришел к любому возможному выводу и, с сердитыми руками часов, яростно указывающих на меня, я вынужден (позорно) задавать этот вопрос.

Я не владею Excel и не грамотным VBA. Тем не менее, я медленно изучал язык через такие сайты, как HomeandLearn .org, чтобы преодолеть мои трудности, но, по-видимому, не имеет смысла в этой конкретной проблеме. Я должен заранее извиниться за любое неправильное использование или неправильное использование терминологии или любое другое неосведомленное недоразумение, которое было сделано в моем вышеупомянутом вопросе. d, чтобы ознакомиться с сообществом и правилами этого сайта, прежде чем задавать этот вопрос и широко искать ответы.

Любая помощь будет оценена по достоинству. Спасибо.)

ответ

0

Если вы хотите, чтобы ячейка содержит только текст в пределах 3 коробки, а затем использовать:

mydate = ComboBoxDay.Value & ComboBoxMonth.Value & ComboBoxYear.Value 
Cells(2, 7).Value = mydate 

Однако более полезный подход может быть, чтобы заполнить ячейку с фактической датой:

mydate = DateSerial(ComboBoxYear.Value, ComboBoxMonth.Value, ComboBoxDay.Value) 
Cells(2, 7).Value = mydate 
+0

Как ни странно, выход даты фактически отличается от ввода даты, например: 06 // 03/2017 приводит к выходу 07.07.2011 на лист. Любые идеи о том, почему это происходит?Вот код, адаптированный для пользовательской формы: 'mydate = DateSerial (cboDay.Value, cboMonth.Value, cboYear.Value) Ячейки (emptyRow, 6) .Value = mydate' – Zemwot

+0

Предполагая, что вы используете второй вариант, re, предоставляя параметры 'DateSerial' в правильном порядке .. ie ** Year **, ** Month ** then ** Day **? – CLR

+0

Ах, я просто не знал, что функция DateSerial (Thing) имеет необходимый формат и просто предположила, что они представляют порядок, в котором они были переданы на лист. Теперь он работает по желанию. Я буду обновлять основную запись, чтобы отразить ваш функциональный ответ. (PS: Большое спасибо!) – Zemwot

0

Это?

MyDate = ComboBox1.Value & ComboBox2.Value & ComboBox2.Value 
Cells(emptyRow, 7).Value = MyDate 
+0

Похоже, вы выглядите правильно. Большое спасибо! Однако остается одна проблема: дата выводится как целое, длинное целое число. Например: 31012017, поэтому в формате даты отображается как #######. Есть ли способ вывода этой информации с помощью «/» в качестве разделителей? (Кроме того, я подтвердил ваш комментарий, но из-за того, что моя учетная запись была новой, она не отображается как таковая). Еще раз спасибо за вашу помощь. – Zemwot

Смежные вопросы