Пользовательская форма Excel VBA: данные меняются при изменении первого столбца ввода данных - PullRequest
0 голосов
/ 24 июня 2018

Я использую следующий код для ввода данных из пользовательской формы в лист Excel и работает нормально.Проблема в том, что он перезаписывает один и тот же ряд данных.Но если я изменю: .Cells(RowCount, 4).Value = Me.DepSectDrop.Value на 1 -> .Cells(RowCount, 1).Value = Me.DepSectDrop.Value, а также на остальные (2 для SiteFacOpen, 3 для CaseStartOpen и т. Д.), Он не будет перезаписан.

Private Sub cmdAdd_Click()
    'Copy input values to sheet.
    Dim RowCount As Long
    Dim ws As Worksheet
    Set ws = Worksheets("TRACK")
    RowCount = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    With ws
        .Cells(RowCount, 4).Value = Me.DepSectDrop.Value
        .Cells(RowCount, 5).Value = Me.SiteFacOpen.Value
        .Cells(RowCount, 6).Value = Me.CaseStartOpen.Value
        .Cells(RowCount, 7).Value = Me.TypeDrop.Value
        .Cells(RowCount, 8).Value = Me.ProcessDrop.Value
        .Cells(RowCount, 9).Value = Me.CompNameOpen.Value
        .Cells(RowCount, 10).Value = Me.CompEIDOpen.Value
        .Cells(RowCount, 11).Value = Me.RespNameOpen.Value
        .Cells(RowCount, 12).Value = Me.RespEIDOpen.Value
        .Cells(RowCount, 13).Value = Me.DescOpen.Value

    End With
    'Clear input controls.
    Me.DepSectDrop.Value = ""
    Me.SiteFacOpen.Value = ""
    Me.CaseStartOpen.Value = ""
    Me.TypeDrop.Value = ""
    Me.ProcessDrop.Value = ""
    Me.CompNameOpen.Value = ""
    Me.CompEIDOpen.Value = ""
    Me.RespNameOpen.Value = ""
    Me.RespEIDOpen.Value = ""
    Me.DescOpen.Value = ""

End Sub

Что мне нужно сделать, чтобы я поддерживал правильные столбцы для всего этого, чтобы его можно было вводить, но не перезаписывать?Спасибо

1 Ответ

0 голосов
/ 24 июня 2018

Вам нужно изменить все строки, которые начинаются

     .Cells(RowCount, 5).Value ...

Для

     .Cells(RowCount + 1, 5).Value 

Бит «+1» означает, что вы используете следующую пустую строку.

Кроме того, как указал Самуил, вам также следует изменить на

 RowCount = ws.Cells (Rows.Count, 4).End (xlUp).Offset (1,0).Row

чтобы вы тестировали столбец, в котором гарантированно есть данные!


Извините, я пропустил бит смещения ... Нет необходимости '+1', если вы смещаете на 1 ... Это равносильно тому же.

...