如何为数组输入行数?实现帕斯卡三角形行数可输入的VBA代码改造
如何自定义输入帕斯卡三角形的行数(VBA实现)
嘿,我来帮你搞定这个自定义帕斯卡三角形行数的需求!原来的代码固定了10行,我们可以通过几个小修改让它支持用户输入任意正整数行数,具体调整如下:
核心修改点
- 获取用户自定义行数:用
InputBox让用户输入想要的行数,同时加入输入验证,确保输入是有效的正整数 - 动态数组替代固定数组:把原来固定大小的
Dim i(10, 10) As Integer改成动态数组,根据用户输入的行数重新分配空间 - 调整循环上限:把所有硬编码的
10替换成用户输入的行数变量
修改后的完整代码
Sub PascalTriangle_CustomRows() Dim rowCount As Integer Dim i() As Integer ' 声明动态数组 Dim p, j As Integer ' 获取用户输入的行数,并验证有效性 rowCount = InputBox("请输入帕斯卡三角形的行数(正整数):", "自定义行数") If rowCount <= 0 Or Not IsNumeric(rowCount) Then MsgBox "请输入有效的正整数!", vbExclamation Exit Sub End If ' 根据输入的行数重新定义数组大小 ReDim i(rowCount, rowCount) As Integer ' 初始化前两行 i(0, 0) = 1 If rowCount >= 1 Then i(1, 0) = 1 i(1, 1) = 1 End If ' 生成帕斯卡三角形数据 For p = 2 To rowCount i(p, 0) = 1 For j = 1 To p i(p, j) = i(p - 1, j - 1) + i(p - 1, j) Next j Next p ' 将数据输出到Excel单元格 For p = 0 To rowCount For j = 0 To p Cells(p + 1, j + 1) = i(p, j) Next j Next p End Sub
代码解释
- 输入验证:如果用户输入的不是正整数(比如负数、0或者非数字),会弹出提示并退出程序,避免运行错误
- 动态数组:
ReDim i(rowCount, rowCount)会根据用户输入的行数调整数组的维度,确保数组足够存储所有三角形数据 - 边界处理:加入了
If rowCount >=1的判断,避免当用户输入1行时,初始化第二行导致的数组越界问题
这样修改后,你运行宏的时候就会弹出输入框,输入想要的行数,程序就会生成对应行数的帕斯卡三角形啦!
内容的提问来源于stack exchange,提问作者Thibault Legoto
相关产品推荐
相关产品推荐

