Формула автозаполнения столбец даты работает на листе, но не в форме - PullRequest
0 голосов
/ 01 ноября 2018

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

=If(B9="","",IF(A9="",NOW(),B9))

После этого я применил формулу к ячейкам до строки 48. Теперь при вводе в исходном коде (скриншот для ссылки) дата заполняется автоматически. Работает как шарм, все хорошо.

Разработана пользовательская форма для ввода данных за вычетом даты, поскольку используется формула выше. Должно работать, но это не так. Дата приходит как 1/1/1900. Немного отсталая от века +18 лет, ничего страшного, лол.

Код, который вы видите на скриншотах, которые я использовал для ввода данных. Первоначально я сделал лист до 48 рядов. Поскольку при использовании пользовательской формы данные вводятся «только» после строки 48, таблица продолжает расширяться, включаться и выключаться. Я удалял строки после 48 раз так много раз, что это уже не смешно.

Теперь код VBA отключен или является неполным, что делает все это забавным. Как я могу это исправить?

P.S. Использование Excel 2016

Код кнопки «Добавить данные» в форме. Для этого данные не начинают заполняться из строки 9 столбца B. Они начинаются после строки 48.

Private Sub CommandButton1_Click()

Dim dcc As Long
Dim abc As Worksheet

Set abc = Worksheets("January2019")
dcc = Sheets("January2019").Range("A" & Rows.Count).End(xlUp).Row

With abc

.Cells(dcc + 1, 2).Value = Me.TextBox1.Value
.Cells(dcc + 1, 3).Value = Me.TextBox2.Value
.Cells(dcc + 1, 4).Value = Me.TextBox3.Value
.Cells(dcc + 1, 5).Value = Me.TextBox4.Value
.Cells(dcc + 1, 6).Value = Me.TextBox5.Value


End With

Код даты.

=If(B9="","",IF(A9="",NOW(),B9))

Дата работает автоматически, если вводить данные вручную, но при использовании пользовательской формы дата вводится как 01.01.1900 и, как указано выше, ввод производится после строки 48.

С этим кодом и пользовательской формой я надеюсь / стремлюсь:

В пользовательской форме нет опции для даты. Я добавил формулу даты в строку 9, а затем перетащил ее в строку 48. Сделал пользовательскую форму минус поле даты, потому что как только данные будут введены, дата будет заполняться автоматически. И данные начинают заполняться с первой доступной строки, которая является B9. Так что теперь я заблудился, потому что я не знаю, где ошибка или что происходит, что делает это добавление в случайных строках и с датой, которая уже не работает.

1 Ответ

0 голосов
/ 01 ноября 2018

Вы можете заменить свою формулу и просто использовать текущую пользовательскую форму, чтобы добавить сегодняшнюю дату.

Private Sub CommandButton1_Click()

    Dim dcc As Long
    Dim abc As Worksheet

    Set abc = Worksheets("January2019")
    dcc = Sheets("January2019").Range("A" & Rows.Count).End(xlUp).Row

    With abc

        .Cells(dcc + 1, 1).Value = Date
        .Cells(dcc + 1, 2).Value = Me.TextBox1.Value
        .Cells(dcc + 1, 3).Value = Me.TextBox2.Value
        .Cells(dcc + 1, 4).Value = Me.TextBox3.Value
        .Cells(dcc + 1, 5).Value = Me.TextBox4.Value
        .Cells(dcc + 1, 6).Value = Me.TextBox5.Value

    End With

Вам не нужно добавлять пробел в пользовательской форме для даты, которую нужно ввести.

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

Это должно работать:

Dim abc As Worksheet

Set abc = Worksheets(me.ComboBox1.Value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...