Как перенести данные на другой лист в одной книге (используя ComboBox1) в форме пользователя? - PullRequest
0 голосов
/ 01 ноября 2018

Пользователь @ K.Davis предоставил код для даты, не занесенной в лист (проблема решена!), По моему запросу он предоставил код для использования выпадающего списка из формы пользователя, чтобы выбрать, в какой лист будут вводиться данные. Но я уверен, что я делаю это неправильно и получаю сообщение об ошибке. Вот код:

Private Sub CommandButton1_Click()

Dim dcc As Long
Dim abc As Worksheet

Set abc = Worksheets(Me.ComboBox1.Value)
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
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""

End Sub

Теперь я уверен, что если я удалю строку dcc = sheet ("January2019"). Range through (xlup) .row, тогда она перестанет вводить дату в первую свободную строку. Я могу ошибаться. но это код CommandButton1, который передает данные из пользовательской формы на лист. В настоящий момент в рабочей тетради делаются только листы, Ян и Фев, но я добавлю больше листов. Стоит упомянуть здесь, я сделал выпадающий список для использования в combobox1 при просмотре видео. просто добавьте название месяцев на новом листе и добавьте имя листа в исходный текст поля со списком1, и поле со списком заполнено. Название листа месяцев называется Sheet1.

Спасибо за помощь заранее.

Приветствие.

1 Ответ

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

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

Итак, какой бы у вас ни был код, который заполняет ваш ComboBox1 - избавьтесь от него. Кроме того, удалите Sheet1, так как вы больше не будете его использовать.

Private Sub UserForm_Initialize()
    Dim i As Long
    For i = 1 To ThisWorkbook.Sheets.Count
        Me.ComboBox1.AddItem ThisWorkbook.Sheets(i).Name
    Next
End Sub

Private Sub CommandButton1_Click()

    Dim dcc As Long
    Dim abc As Worksheet

    Set abc = ThisWorkbook.Worksheets(Me.ComboBox1.Value)

    With abc

        dcc = .Range("A" & Rows.Count).End(xlUp).Row

        .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
    TextBox1.Text = ""
    TextBox2.Text = ""
    TextBox3.Text = ""
    TextBox4.Text = ""
    TextBox5.Text = ""

End Sub

Ваша переменная dcc также должна быть квалифицирована на листе abc - поэтому я переместил ее в ваш блок With...End With.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...