У меня есть пользовательская форма, которая предназначена для вставки данных в листы, называемые «Финальные туры» и «Разделение», но по-разному.
Я выбираю строку в «Final Tours», нажимаю кнопку «Split Tour» и вводю новые детали тура.Затем он копирует новые детали тура в конец «Final Tours» (это работает нормально) и удаляет исходную строку.Он также предназначен для копирования данных в разделы.Однако в разделе «Разделение», когда он правильно вводит данные в строку, каждый раз, когда я вводю новые данные в пользовательскую форму, он оставляет две пустые строки из предыдущей строки.
Итак, если я разделю три тура, на «Разделениях» будут отображаться данные в строках 1, 4, 7 и т. Д. Вместо 1, 2, 3. Я не могу понять, почему это происходит.Какие-нибудь мысли?Мой код ниже:
Option Explicit
Dim originalRow As Range
Private Sub UserForm_Initialize()
Set originalRow = ActiveCell.EntireRow
With Me
.OriginalTourCode.Value = originalRow.Cells(1).Value
.OriginalStartDate.Value = originalRow.Cells(2).Value
.OriginalEndDate.Value = originalRow.Cells(3).Value
End With
End Sub
Private Sub SplitTourCommand_Click()
Dim ctrl As Control
Dim wsSplits As Worksheet
Set wsSplits = Sheets("Splits")
Dim wsTours As Worksheet
Set wsTours = Sheets("Final Tours")
Dim WSheet As Variant
Dim DTable As Variant, RowCount As Long
Application.ActiveWorkbook.Save
For Each WSheet In ActiveWorkbook.Worksheets
If wsTours.AutoFilterMode Then
If wsTours.FilterMode Then
wsTours.ShowAllData
End If
End If
For Each DTable In wsTours.ListObjects
If DTable.ShowAutoFilter Then
DTable.Range.AutoFilter
DTable.Range.AutoFilter
End If
Next DTable
Next WSheet
With wsSplits.Cells(Rows.Count, "A").End(xlUp)
With .Offset(1, 0).EntireRow
With .Offset(2, 0).EntireRow
.Cells(1) = OriginalTourCode.Text
.Cells(2) = OriginalStartDate.Text
.Cells(3) = OriginalEndDate.Text
.Cells(4) = NewTourCode1.Text
.Cells(5) = NewStartDate1.Text
.Cells(6) = NewEndDate1.Text
.Cells(7) = NewTourCode2.Text
.Cells(8) = NewStartDate2.Text
.Cells(9) = NewEndDate2.Text
.Cells(10) = ReasonForSplit.Text
.Cells(11).Value = Date
End With
End With
With wsTours.Cells(Rows.Count, "A").End(xlUp)
.Offset(1, 0).Value = NewTourCode1.Text
.Offset(1, 1).Value = NewStartDate1.Text
.Offset(1, 2).Value = NewEndDate1.Text
.Offset(2, 0).Value = NewTourCode2.Text
.Offset(2, 1).Value = NewStartDate2.Text
.Offset(2, 2).Value = NewEndDate2.Text
End With
originalRow.Delete 'remove the row the split tour
MsgBox "Tour " & OriginalTourCode.Text & _
" has been split to " & NewTourCode1.Text & _
" and " & NewTourCode2.Text
Unload Me
End With
End Sub
Private Sub CloseCommand_Click()
Unload Me
End Sub
Заранее благодарен за любую помощь.