2013-03-12 2 views
0

Я делаю форму, и я нахожу себя с странной проблемой с TextBox.Неверное текстовое поле в форме VBA

Я прошу пользователя вставить некоторые данные, и когда это произойдет, TextBox изменит данные.

В качестве примера, если пользователь вставляет: 03/01/2013, а затем запускает форму, форму вместо того, чтобы выполнить код с исходными данными изменяет его, 01/03/2013.

Я понял, что всегда меняет день и месяц, но не год.

Дополнительная информация, я никогда не «рассказывал», что данные, которые она обрабатывает, являются датой.

Я изо всех сил стараюсь, чтобы это сработало, поэтому любая помощь будет благодарна.

Если необходима дополнительная информация, пожалуйста, сообщите мне об этом.

Код:

Private Sub CommandButton1_Click() 

ThisWorkbook.Sheets("Hidden").Range("D1").Value = TextBox1.Value 

ThisWorkbook.Sheets("Hidden").Range("D2").Value = TextBox2.Value 

If TextBox1.Value < TextBox2.Value Then 

    If TextBox1.Value = "" Or TextBox2.Value = "" Then 

     MsgBox "...", vbExclamation, " ..." 

    Else 

    Run "macro" 

    ThisWorkbook.Sheets("SUMUP").Range("D11").Value = TextBox1.Value 

    ThisWorkbook.Sheets("SUMUP").Range("D12").Value = TextBox2.Value 

    End If 

Else 

MsgBox "..." & vbCrLf & "...", vbExclamation, " ..." 

End If 

End Sub 

Спасибо.

+0

, так что вы говорите, что нет кода за формой, которая ничего не делает с формой? –

+0

Нет, я сказал, что текстовое поле вместо чтения 03/01/2013 оно читает 01/03/2013.Я не знаю, почему он меняет входные данные, и я хотел бы исправить это. Спасибо – themolestones

+0

ладно, тогда позвольте мне перефразировать: есть ли у вас какой-либо код за формой? Не могли бы вы поделиться им? Кажется маловероятным, что вход просто меняется без какого-либо кода, изменяющего его ... :-) –

ответ

0

Чтобы принять формат ввода вашей формы vba, вы должны изменить формат даты вашей системы. Перейти к

Пуск> Панель управления> Часы

языка и даты, в соответствии с Регион и язык Дата выберите Изменить, формат числа времени или. В поле даты и времени выберите раскрывающийся список перед короткой датой, затем выберите dd-mmm-yy. Сделайте это с длинной датой и выберите dddd,mmmm dd,yyyy. Я надеюсь, что это было бы полезно

1

Самая распространенная проблема, связанная с вашим описанием:
Вы можете сохранить пользователей в ячейку. Если так, пожалуйста, проверьте форматирование этой ячейки.

Пожалуйста, предоставьте подробную информацию о том, как хранится ввод пользователей. Какую переменную типа данных вы используете для хранения входных данных пользователей? Каков процесс миграции для ввода?

Post-Edit:

Формат ваши клетки (простое решение)

Range = Format(TextBox1.Value, "dd/mm/yyyy") 

P.S. Вы можете сохранить введенные данные пользователей в переменных:

Dim txtb1, txtb2 As String 

    'ThisWorkbook.Sheets("Hidden").Range("D1").Value = TextBox1.Value 
    'ThisWorkbook.Sheets("Hidden").Range("D2").Value = TextBox2.Value 
    ' 
    ' instead of storing the value in cell, use variables (now youre not going to need a "hidden" sheet 
    ' 
    txtb1 = TextBox1.Value 
    txtb2 = TextBox2.Value 

Надеется, что это помогает.

+0

спасибо, я думаю, что это сработает. Первые вопросы, я думаю, выше моих знаний в VBA. – themolestones

+0

Поскольку вы вызываете один из ваших листов HIDDEN, я почему-то предполагал, что вы сохраняете ввод своих пользователей в ячейку на теоретически «скрытом» листе. Существует способ избежать использования дополнительных или скрытых листингов, сохраняя входы в переменные. Вы можете узнать больше об переменных - уверен, что дядя Google поможет вам. Одна вещь, которую нужно помнить - ее проверить вход ваших пользователей - убедитесь, что пользователь на самом деле вводит дату - не случайные числа или строки ввода sql и т. Д. – 2013-03-12 09:53:11

+0

спасибо, я ценю ваш комментарий. Вы правы в отношении «Скрытого» листа. Да, я проверю кое-какую информацию дядя Google, XD. – themolestones

1

Это VBA:]. Просто перейдите в строку:

ThisWorkbook.Sheets("SUMUP").Range("D11") = Format(TextBox1.Value, "dd/MM/yyyy") 
Смежные вопросы