2013-06-05 18 views
8

Chciałbym wstawić kolumny podziału do raportu programu Excel, aby istniejące kolumny były łatwiejsze do wyświetlenia.Jak dynamicznie wstawiać kolumny w programie Excel?

Raport jest tworzony dynamicznie i nigdy nie wiadomo, ile kolumn będzie; nie może być 5, 10, 17, itd.

Odcinek rozpoczyna się F i idzie do ival=Application.WorksheetFunction.CountIf(range("D2:D" & LastRow), "Other")

Więc jeśli ival=10 następnie kolumny są FGHIJKLMNO i muszę wstawić kolumny pomiędzy F & G, G & H, H & ja, ja & J ... i N & O.

To może być możliwość wstawiania kolumn: Workbooks("yourworkbook").Worksheets("theworksheet").Columns(i).Insert

Ale nie jestem pewien, jak przechodzić przez ival.

Sub InsertColumns() 
    Dim iVal As Integer 
    Dim Rng As range 
    Dim LastRow As Long 
    Dim i As Integer 

    With Sheets("sheet1") 
     LastRow = .range("D" & .Rows.Count).End(xlUp).Row 
    End With 

    iVal = Application.WorksheetFunction.CountIf(range("D2:D" & LastRow), "Other") 

    For i = 7 To iVal - 1 
    Workbooks("yourworkbook").Worksheets("theworksheet").Columns(i+1).Insert 
    Next i 

End Sub 

Odpowiedz

9

Poniższy kod powinien działać bez potrzeby martwić ival:

Sub InsertSeparatorColumns() 

    Dim lastCol As Long 

    With Sheets("sheet1") 
     lastCol = Cells(2, .Columns.Count).End(xlToLeft).Column 

     For i = lastCol To 7 Step -1 
      .Columns(i).Insert 
      .Columns(i).ColumnWidth = 0.5 
     Next 

    End With 

End Sub 
3

Spróbuj tego:

Sub InsertSeparatorColumns() 
    Dim ws as Worksheet 
    Dim firstCol As String 
    Dim lastRow As Long 
    Dim i As Long 
    Dim howManySeparators As Long 

    Set ws = ThisWorkbook.Sheets("Sheet1") 
    firstCol = "F" 
    lastRow = ws.Range("D" & ws.Rows.Count).End(xlUp).Row 
    howManySeparators = Application.WorksheetFunction.CountIf _ 
          (ws.range("D2:D" & LastRow), "Other") 

    For i = 1 To howManySeparators * 2 Step 2 
     ws.Range(firstCol & 1).Offset(, i).EntireColumn.Insert 
    Next i 
End Sub 
Powiązane problemy