Добавляйте новые столбцы и строки в Excel без изменения кода VBA. - PullRequest
0 голосов
/ 28 декабря 2018

Я создал код Excel VBA для группового проекта.Но теперь команда хочет добавить / переставить столбцы и строки.Проблема в том, что эти изменения изменят мой код и сделают его непригодным для использования.Как я могу сделать это без изменения кода VBA?

Sub Stacy()
    Dim WS As Worksheet
    Dim Rng As Range
    Dim myWs As Worksheet
    Set myWs = ThisWorkbook.Sheets("MASTER")
    Set Rng1 = myWs.Range("A1:AJ4")
    Set Rng2 = myWs.Range("A975:AJ984")
    Application.Workbooks.Add
    Set WS = Application.ActiveSheet

    Rng1.Copy Destination:=WS.Range("A1:AJ4")
    Rng2.Copy Destination:=WS.Range("A5:AJ50")

    Rows(3).RowHeight = 36
    Rows(4).RowHeight = 64.5
    Rows("5:50").RowHeight = 15

    Columns(11).ColumnWidth = 11.57
    Columns(12).ColumnWidth = 30.43
    Columns(14).ColumnWidth = 15.57
    Columns(22).ColumnWidth = 14
    Columns(24).ColumnWidth = 13.71
    Columns(25).ColumnWidth = 13.71


    Set column1 = Columns("A:J")
        column1.Hidden = True
    Set column2 = Columns("R:T")
        column2.Hidden = True
    Set column3 = Columns("M:M")
        column3.Hidden = True
    Set column4 = Columns("U:U")
        column4.Hidden = True
    Set column5 = Columns("W:W")
        column5.Hidden = True
    Set column6 = Columns("Z:AJ")
        column6.Hidden = True

    [N1].Value = "Watenberg"
    [O1].Value = "Stacy"
    [N2].Value = "US Private Banking"

    Range("X15").Select
        ActiveCell.FormulaR1C1 = "'Total:"
    Range("Y15").Select
        ActiveCell.FormulaR1C1 = "=SUM(R[-10]C:R[-1]C)"
    Range("Y16").Select

'Protect the sheet
    Range("V1:V50").Locked = False
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        ActiveSheet.EnableSelection = xlUnlockedCells

    WS.SaveAs "L:\17_Year_End\2018\Distribution\Stacy"

End Sub

1 Ответ

0 голосов
/ 28 декабря 2018

Возможно, это утомительно, но если вы знаете, какие столбцы будут называться, вы можете поработать над этим.

Например, скажем, некоторые заголовки столбцов - «Дата покупки», «сумма "и" цена ".

'get last column variable, or if it wont change you can hard code in
lastCol = ActiveSheet.Cells(1, sht.Columns.Count).End(xlToLeft).Column

'Loop through column headers, if statements for each one you care about
For i = 1 To lastCol
    If Cells(1, i).Value = "Purchase Date" Then
        Set Column1 = ActiveSheet.Columns(i)
    End If
    If Cells(1, i).Value = "amount" Then
        '... and so on ...
    End If
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...