You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为数组输入行数?实现帕斯卡三角形行数可输入的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 15:09:06