VBA:创建具有标高的可变块

VBA:创建具有标高的可变块,vba,excel,excel-2010,Vba,Excel,Excel 2010,我是一名Excel VBA编程的初学者,有15天的经验,我使用宏录制功能使用VBA,我对它非常熟悉 我有一个由以下列组成的工作表:级别、Id、工作产品、开始、结束 级别列由级别1、2、3、4组成,另一列由随机数据组成。因此,第1级基本上包括: Level ID Work Product Start End 1 A1 ABCD 1.1.2011 1.1.2013 类似地,2、3和4级也包含一些数据。现在,我的任务是

我是一名Excel VBA编程的初学者,有15天的经验,我使用宏录制功能使用VBA,我对它非常熟悉

我有一个由以下列组成的工作表:级别、Id、工作产品、开始、结束

级别列由级别1、2、3、4组成,另一列由随机数据组成。因此,第1级基本上包括:

   Level    ID  Work Product    Start       End
    1       A1  ABCD            1.1.2011    1.1.2013
类似地,2、3和4级也包含一些数据。现在,我的任务是创建一个如下所示的变量块:

'First Block Borders
'
    Range("O12:V13,O14:V14,O15:V15,O16:V16,O17:V17").Select
    Selection.BorderAround ColorIndex:=xlColorIndexAutomatic
Level  ID     Start         End             PT

1      A1     01.10.2012    30.09.2013  271.39
2      A1.1   01.10.2012    30.09.2013  83
3      A1.2   01.10.2012    30.09.2013  125.89
'正在为第一个块的合并循环工作

暗排一样长

For row = 12 To 17
    If row = 12 Then
        Range(Cells(row, 15), Cells(row + 1, 22)).Merge
        row = row + 1
    Else
        Range(Cells(row, 15), Cells(17, 22)).Select
        Selection.Merge True
        Exit For
    End If
Next row
现在,我有两个问题:

第一个问题是,这里创建的块是一个固定的块,我希望它是灵活的,这样,如果任何人想要他只需要前4列,那么他就可以用类似的轮廓来做,或者如果他想要添加另一个级别,这也是可能的,程序会自动创建另一个级别或级别类似地,如果用户添加新列,则在块中添加另一行

第二个问题是级别,我想使用循环自动设置级别,以便在查看级别数量后,程序自动创建包含内容的块

我已经彻底搜索了所有的论坛帖子和互联网上的答案,但我无法自动化这一点。我的缺点是我仍处于学习阶段,我知道上面的任务需要一些经验和一些与宏无关的编码

你们谁能帮我完成这项任务,我将不胜感激

谢谢


谢谢你的回复,如果我的问题没有被正确理解,很抱歉。我现在会尽量说得更清楚

共有2个工作表工作表1由数据模型组成,如下所示:

'First Block Borders
'
    Range("O12:V13,O14:V14,O15:V15,O16:V16,O17:V17").Select
    Selection.BorderAround ColorIndex:=xlColorIndexAutomatic
Level  ID     Start         End             PT

1      A1     01.10.2012    30.09.2013  271.39
2      A1.1   01.10.2012    30.09.2013  83
3      A1.2   01.10.2012    30.09.2013  125.89
第二份工作表将包含此工作表中的数据,但形式不同。它是一个WBS(工作分解结构)树。我在上面发布的区块示例是我想象的区块的估计大小。现在,我已经创建了WBS树,但我的要求全错了,因为我修复了“在列“O”和“V”中的数据周围创建边框”

我想在这里实现的是,通过编程,如果我运行此VBA脚本,它应该执行以下操作:

  • 在secons工作表中创建一个框(类似于我在第一篇文章中提到的尺寸)
  • 如果用户以后在第一个工作表中插入新列,脚本应允许根据第一个工作表中列的添加和删除来更新框
  • 级别2、3、4、5应位于第一个块的下方,并且还应包括以下功能:如果用户在第一个工作表中插入具有新级别的新行,则应在第二个工作表中自动添加具有所需尺寸的新块。
  • 下面我编写的代码或多或少是硬编码的,不包含上述功能,但如果您运行这些代码,您可能会知道我在说什么



    再次感谢您的帮助。

    我很难理解您在这里想要做什么。据我所知,您有以下代码行:

    Range("O12:V13,O14:V14,O15:V15,O16:V16,O17:V17").Select
    

    这是你从录制宏中得到的。您希望能够选择其他列和范围,而不是局限于“O”和“V”列。

    我在上述问题中添加了一些额外的详细信息。我希望这能让事情变得更清楚。如果你愿意,你可以把你的文件寄给我,我会看一看