1、我是用文本框来输入数据,text1(0 - 3) 对应输入的4个数
2、text2 用来输入N
3、text3 设置为 多行模式的文本框,用来显示结果。
4、测试结果
输入的数据为 5,6,4,1
结果为:
5+4+1=10
6+4=10
代码如下
'--------------------------------
Option Explicit
Dim s(1 To 4)
Dim N As Long
Private Sub Command1_Click()
Dim i As Long
For i = 0 To 3
If IsNumeric(Text1(i).Text) Then
s(i + 1) = CLng(Text1(i).Text)
Else
MsgBox "输入的第 " & i + 1 & " 数据有误", vbCritical
Exit Sub
End If
Next i
If IsNumeric(Text2.Text) Then
N = CLng(Text2.Text)
Else
MsgBox "输入的 N 数据有误", vbCritical
Exit Sub
End If
Dim i1 As Long, i2 As Long, i3 As Long, i4 As Long
Dim o As Long
'和
Dim jg As String
Dim js As Long
For i1 = 1 To 5
'>5代表为此项不使用
For i2 = i1 + 1 To 5
For i3 = i2 + 1 To 5
For i4 = i3 + 1 To 6
'因为第二项可以跑到4,第三项就为5时,为了让循环能继续,这项最大值应该为6
o = 0
'js = 0
'计算和
If i1 < 5 Then
o = o + s(i1)
'js = js + 1
End If
If i2 < 5 Then
o = o + s(i2)
'js = js + 1
End If
If i3 < 5 Then
o = o + s(i3)
'js = js + 1
End If
If i4 < 5 Then
o = o + s(i4)
'js = js + 1
End If
'防止不足两个数时退出循环,后发现不需要.
'If js < 2 Then
'
Exit For
'End If
If o = N Then
'输出结果
jg = ""
Debug.Print i1, i2, i3, i4
If i1 < 5 Then
jg = jg & s(i1) & "+"
End If
If i2 < 5 Then
jg = jg & s(i2) & "+"
End If
If i3 < 5 Then
jg = jg & s(i3) & "+"
End If
If i4 < 5 Then
jg = jg & s(i4) & "+"
End If
jg = Left(jg, Len(jg) - 1)
jg = jg & "=" & o
Text3.Text = Text3.Text & jg & vbCrLf
'继续下一圈的循环,重复数据不管
'因为最后一项为 5 或 6 时,都是同一个数据,所以不管
If i4 > 4 Then Exit For
End If
Next i4, i3, i2, i1
'因为循环之间不需要再执行代码了,所以用总的循环闭合命令
End Sub