Excel VBA:根据用户输入添加行和列

问题描述 投票:0回答:1

我正在尝试根据用户输入构建一个表格:区域数量、楼层数量和建筑物数量。它应该根据用户输入自动创建表格。

输出示例如下:

enter image description here

我想出了如何使用 vba 根据用户输入复制/粘贴 X 列(建筑物)的数量,并且我想出了如何使用 vba 中的填充来填充区域,但我无法自动添加楼层,并且我无法将所有内容放在表格中。我通常不会同时做这样的事情,但这是领导团队的要求。我的 VBA 技能(和想象力)已经碰壁了。

excel vba row user-input
1个回答
0
投票
  • 使用嵌套循环填充输出数组
  • 将输出写入每个建筑物的工作表
  • 合并单元格并应用格式

微软文档:

Range.Offset 属性 (Excel)

Range.Resize 属性 (Excel)

Range.HorizontalAlignment 属性 (Excel)

Option Explicit
Sub Demo()
    Dim iBldg As Long, iFloor As Long, iArea As Long
    Dim arrRes, iR As Long, i As Long, j As Long
    Dim rCell As Range
    Const START_CELL = "C1"
    iBldg = Range("B1")
    iFloor = Range("B2")
    iArea = Range("B3")
    ReDim arrRes(iFloor * iArea + 1, 2)
    arrRes(1, 0) = "Floor"
    arrRes(1, 1) = "Area"
    iR = 1
    For i = 1 To iFloor
        For j = 1 To iArea
            iR = iR + 1
            If j = 1 Then arrRes(iR, 0) = i
            arrRes(iR, 1) = j
        Next
    Next
    Set rCell = Range(START_CELL)
    For i = 1 To iBldg
        With rCell
            .Resize(UBound(arrRes) + 1, 3).Value = arrRes
            .Value = "Building " & i
            .Resize(, 3).Merge
            .MergeArea.EntireColumn.HorizontalAlignment = xlCenter
            Set rCell = .Offset(, 1)
        End With
    Next
End Sub

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.