根据input的行数/列数创build一个表

我想根据2个问题的答案build立一个表格,问题1“当前过程中有多less风险? 确定列数(即每个风险一列)和第二个问题“当前过程中有多less控制? 确定要使用的行数(即每个控件一个)。 有没有简单的方法来build立一个表格,以显示matrix,然后可以用于风险/控制关系?

在这里输入图像说明

这是一个有趣的,所以我打算今晚晚些时候做一个YouTube教程 ,并回到这里张贴我的链接。 但是,这是我做了什么的快速解释。

我开始使用A2单元格的行数和B2单元格的列数。 然后我创build了一个button,我将它分配给一个macros,稍微解释一下。

接下来我创build了表格的基本布局。 这包括:
D5保存“控制ID”
E5持有“控制说明”
F3持有“风险ID”
F4持有“风险描述”

另外,让我们先来添加第一个控制和风险区块,因为每个表格大概会以至less一个控制和一个风险开始。 所以
D6将有“C1”
E6将有“控制1说明”
G3将有“R1”
G4将有“风险1描述”

然后为了保持与您的表格一致,我在单元格F5G5上放置了一个黑色突出显示。

现在我们可以使用下面的代码创buildmacros:

 Sub CreateTable() ' create variable x to hold # of rows from A2 Dim x As Integer x = Range("A2").Value ' calculate the row range from x Let RowRange = "7:" & 7 + x - 2 ' copy row 6 into each row in the calculated range Rows("6:6").Copy Range(RowRange) ' update the text in the newly created rows to match ' the corresponding control number For i = 2 To x Let ControlIdRow = 5 + i Cells(ControlIdRow, 4).Value = "C" & i Cells(ControlIdRow, 5).Value = "Control " & i & " Description" Next i Dim y As Integer y = Range("B2").Value Columns("G:G").Copy Range(Columns(8), Columns(8 + y - 2)) For i = 2 To y Let RiskIdCol = 6 + i Cells(3, RiskIdCol).Value = "R" & i Cells(4, RiskIdCol).Value = "Risk " & i & " Description" Next i End Sub 

基本上,发生的事情是我们创build一个variablesx并将其赋值为行数,作为单元格A2input。 然后我们使用它来计算从第7行开始的行范围(从控制1在第6行开始,它将以控制2开始)。 然后我们只复制整个行6直到指定的范围。 现在(从For循环开始),我们需要编辑单元格中的文本以匹配相应的名称(即第二个控件将是C2,控件2描述,第三个将是C3,控件3描述3等等)。 然后只要重复同一个块,改变相应的值来匹配风险。

然后不要忘记将button分配给新的macros。 现在,您应该可以input行( A2 )的值和列( B2 )的值,然后单击该button,并自动为您创build表格。

如上所述,我将在今晚晚些时候创build一个YouTubevideo,详细说明这一点,并更新这个答案指向那里。

更新
我注意到你的图片有一个复选标记,所以这里的代码能够select一个单元格,并在单元格中出现一个绿色的复选标记。 然后再次单击该单元格将删除复选标记。

打开可视化基本编辑器,然后单击左侧的Sheet 1代码。 然后在那里应用下面的代码:

 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If ActiveCell.Row > 5 And ActiveCell.Column > 6 Then If ActiveCell.Value = "" Then Target.Value = ChrW(&H2713) Else If ActiveCell.Value = ChrW(&H2713) Then Target.Value = "" End If End If End If End Sub 

链接到YouTube教程这个答案