2016-02-23 54 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