добавление строк на основе значения поля - PullRequest
0 голосов
/ 11 марта 2020

Я новичок в сценариях VBA и все еще пытаюсь найти свой путь. Можно ли работать с массивом и добавлять количество строк через поле? Так что в этом случае это 28. Если я наберу 12, он должен адаптироваться, чтобы показать 12 строк, включая строки.

У кого-нибудь есть пример кода, которым можно поделиться?

screen 1 screen 2

1 Ответ

1 голос
/ 11 марта 2020

Попробуйте это:

Sub test()
    Dim lRow As Long
    Dim udLoop As Integer
    Dim wb As Workbook: Set wb = ThisWorkbook
    Dim ws As Worksheet: Set ws = wb.Worksheets("Sheet1")

    ' user defined loop
    udLoop = ws.Cells(1, 6) + 1

    ' clear existing data
    ws.Range(Cells(2, 1), Cells(31, 3)).Clear

    ' maximum value validation
    If udLoop > 31 Then
        MsgBox "Days cannot exceed 31." & vbNewLine & "Macro has been halted."
        Exit Sub
    End If

    On Error Resume Next
    For i = 2 To udLoop
        ws.Cells(i, 1).Value = i - 1
        'ws.Cells(i, 2).Value = 'add result value here
        ' percentage of the total results for row i
        ws.Cells(i, 3).Value = Format(ws.Cells(i, 2).Value / Application.WorksheetFunction.Sum(Range(Cells(2, 2), Cells(lRow, 2))), "0%")
    Next i

    ' find last row
    lRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' format new table
    With Range(Cells(1, 1), Cells(lRow, 3))
        .Borders(xlDiagonalDown).LineStyle = xlNone
        .Borders(xlDiagonalUp).LineStyle = xlNone
        With .Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With .Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With .Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With .Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With .Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With .Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        .Borders(xlDiagonalDown).LineStyle = xlNone
        .Borders(xlDiagonalUp).LineStyle = xlNone
        With .Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With .Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With .Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With .Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With .Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With .Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...