2016-02-23 56 views
-1

我一直致力於在MS Excel中創建動態報表。我正在研究傳統的VB6應用程序,並且遇到了一些我希望你們可以幫我解決的問題。我在下面做的是將數據抓取到我的記錄集g_RS3中 - 通常這有3到20個項目,我使用g_RS3在我的Excel中輸入值(標題和每個標題下的2列值)電子表格。我試圖對它進行編輯,但我一直在努力。這是我的代碼....Excel VBA報表編輯

Do While Not g_RS3.EOF 
    With xlSheet.Cells(xlRow, xlCol) 
     .Value = g_RS3("Label") 
      .Offset(1, 0).Value = "Clients" 
      .Offset(1, 1).Value = "Buyers" 
       With .Offset(1, 0) 
        .Font.Bold = True 
       .Borders.Weight = xlThin 
      End With 
      With .Offset(1, 1) 
       .Font.Bold = True 
       .Borders.Weight = xlThin 
      End With 
      With .Resize(1, 2) 
       .Font.Bold = True 
       .WrapText = True 
       .VerticalAlignment = xlCenter 
       .Merge 
       .HorizontalAlignment = xlCenter 
       .Borders.Weight = xlThin 
      End With 
    End With 
    xlCol = xlCol + 2 
    g_RS3.MoveNext 
Loop 

我附上了一個圖像,它會顯示它的樣子。在記錄集的末尾,我試着添加另一個標題,它只是表示TOTAL並且在其下面有2列。但我很難做到這一點。

enter image description here

+1

這不應該是一個數據透視表嗎?只需將您的原始數據轉儲到工作表中,然後進行轉換即可。沒有? –

+0

不確定。我在報告中完成了大約95%的工作,我只是提出了一個總TOTAL標題可以幫助完成所有總計的請求。試圖看看我可以在我的記錄集結束時動態添加它。 – FatBoySlim7

+0

側面問題:如果'g_RS3'包含*標題*,那爲什麼它不叫'rsHeadings'呢? –

回答

1

這是很有道理,從你的主代碼中提取的獨立片的功能的情況下:頭塊格式可以去到一個單獨的小組,這樣你就可以從記錄中調用它環或單組標題

主代碼然後變成

'headers from recordset 
Do While Not g_RS3.EOF 
    DoBlock xlsheet.Cells(xlRow, xlCol), g_RS3("Label"), "Clients", "Buyers" 
    g_RS3.MoveNext 
    xlCol = xlCol + 2 
Loop 
'Extra header 
DoBlock xlsheet.Cells(xlRow, xlCol), "Total", "Clients", "Buyers" 

提取的代碼: 編輯 - 收拾

Sub DoBlock(rng As Range, h1, h2, h3) 
    With rng 
     .Value = h1 
     .WrapText = True 
     .VerticalAlignment = xlCenter 
     .HorizontalAlignment = xlCenter 

     .Offset(1, 0).Value = h2 
     .Offset(1, 1).Value = h3 

     With .Resize(2, 2) 
      .Font.Bold = True 
      .Borders.Weight = xlThin 
     End With 
     .Resize(1, 2).Merge 
    End With 
End Sub 
+0

兩個答案都是正確的,謝謝各位! – FatBoySlim7

0

我認爲只是增加一個WITH語句添加細胞總數後你的循環會做到這一點。 xlCol應該已經基於循環的最後一部分(xlCol = xlCol + 2)指向下一列,所以我認爲這應該起作用。

Do While Not g_RS3.EOF 
    With xlSheet.Cells(xlRow, xlCol) 
     .Value = g_RS3("Label") 
      .Offset(1, 0).Value = "Clients" 
      .Offset(1, 1).Value = "Buyers" 
       With .Offset(1, 0) 
        .Font.Bold = True 
       .Borders.Weight = xlThin 
      End With 
      With .Offset(1, 1) 
       .Font.Bold = True 
       .Borders.Weight = xlThin 
      End With 
      With .Resize(1, 2) 
       .Font.Bold = True 
       .WrapText = True 
       .VerticalAlignment = xlCenter 
       .Merge 
       .HorizontalAlignment = xlCenter 
       .Borders.Weight = xlThin 
      End With 
    End With 
    xlCol = xlCol + 2 
    g_RS3.MoveNext 
Loop 

    With xlSheet.Cells(xlRow, xlCol) 
     .Value = "TOTAL" 
      .Offset(1, 0).Value = "Clients" 
      .Offset(1, 1).Value = "Buyers" 
       With .Offset(1, 0) 
        .Font.Bold = True 
       .Borders.Weight = xlThin 
      End With 
      With .Offset(1, 1) 
       .Font.Bold = True 
       .Borders.Weight = xlThin 
      End With 
      With .Resize(1, 2) 
       .Font.Bold = True 
       .WrapText = True 
       .VerticalAlignment = xlCenter 
       .Merge 
       .HorizontalAlignment = xlCenter 
       .Borders.Weight = xlThin 
      End With 
    End With