Функция для вставки строк в шаблон Excel с данными из списка не работает должным образом - PullRequest
0 голосов
/ 24 февраля 2019

У меня проблема, когда мои элементы списка содержат больше элементов / строк при вставке данных списка в таблицу Excel.Первый набор данных для местоположения 1 всегда работает отлично и вставляет все так, как должен, но иногда местоположение 2 будет работать, если я возьму с собой достаточно функции.Я не могу ничего получить после второго местоположения, чтобы правильно вставить значения, и оно всегда портит и вставляет строки в неправильные места или портит формулу суммы в конце раздела location.

Есть ли способ вставить строки со случайной переменной listcount?На данный момент я настроил его так: если в списке больше 15 элементов, ему нужно вставить число x после списка, а затем проделать то же самое для остальной части листа для каждого местоположения.

Private Sub testbtn_Click()
Dim excelApp As Excel.Application
Dim targetWB As Workbook
Dim targetRange As Range
Set excelApp = New Excel.Application
Dim fName As String
Dim xcelObj As Object
Set xcelObj = CreateObject("Scripting.FileSystemObject")

fName = ("Test - " & Format(Date, "mm-dd-yyyy"))

If FileExists(ThisWorkbook.Path & "\" & "template.xlsm") = False Then Exit Sub

If FileExists(ThisWorkbook.Path & "\" & fName & ".xlsm") = False Then
xcelObj.CopyFile ThisWorkbook.Path & "\template.xlsm", ThisWorkbook.Path & "\" & fName & ".xlsm"
End If

Set targetWB = excelApp.Workbooks.Open(ThisWorkbook.Path & "\" & fName & ".xlsm")

Dim n As Integer
L = lb1.List
n = (UBound(L) + 1) - 15


Call Sheet_AddLBRangeTest(targetWB, 1, 30, dtp.lb1, dtp.lb2, "A16", "B16")

Call Sheet_AddLBRangeTest(targetWB, 1, 51 + n, dtp.lb1, dtp.lb2, "A" & 37 + n, "B" & 37 + n)

Call Sheet_AddLBRangeTest(targetWB, 1, 72 + n + 7, dtp.lb1, dtp.lb2, "A" & 58 + n + 7, "B" & 58 + n + 7)

Call Sheet_AddLBRangeTest(targetWB, 1, 93 + n + 14, dtp.lb1, dtp.lb2, "A" & 79 + n + 14, "B" & 79 + n + 14)

Call Sheet_AddLBRangeTest(targetWB, 1, 114 + n + 21, dtp.lb1, dtp.lb2, "A" & 100 + n + 21, "B" & 100 + n + 21)

'Call Sheet_AddLBRange(targetWB, 1, dtp.lb1, dtp.lb2, "D16", "F16")



targetWB.Close (True)
excelApp.Quit

End Sub

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

Function FileExists(sFullPath As String) As Boolean
    Dim fOBJ As Object
    Set fOBJ = CreateObject("scripting.filesystemobject")
    FileExists = fOBJ.FileExists(sFullPath)
End Function

'функция для добавления списков к листу Excel

Public Sub Sheet_AddLBRangeTest(Wb As Workbook, SN As Integer, RN As Integer, lb1 As MSForms.listbox, lb2 As MSForms.listbox, Cell1 As String, Cell2 As String)
    Dim L As Variant
    Dim L2 As Variant
    Dim n As Integer
    L = lb1.List
    L2 = lb2.List

        If lb1.ListCount = 0 Then
                Wb.Sheets(SN).Range(Cell1).Resize(1, 1).Value = 0
        Else
            If UBound(L) + 1 > 15 Then
                n = (UBound(L) + 1) - 15
                Wb.Sheets(SN).Rows(RN).Resize(n).Insert
            End If
                Wb.Sheets(SN).Range(Cell1).Resize(UBound(L) + 1, 1).Value = L
        End If

        If lb2.ListCount = 0 Then
                Wb.Sheets(SN).Range(Cell2).Resize(1, 1).Value = 0
        Else
                Wb.Sheets(SN).Range(Cell2).Resize(UBound(L2) + 1, 1).Value = L2
        End If
    End Sub

Thisснимок экрана моего файла шаблона Excel

Мессенджер здесь

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