Option Explicit
Public arr(20000, 8) As Long
Sub Reihe()
Dim a1 As Long
Dim a2 As Long
Dim a3 As Long
Dim a4 As Long
Dim a5 As Long
Dim a6 As Long
Dim a7 As Long
Dim a8 As Long
Dim i As Long
Dim j As Long
Dim k As Long
Dim idx As Long
Dim cc As Long
cc = 0
Application.ScreenUpdating = False
For a1 = 2 To 8
For a2 = 1 To 8
If (a2 <> 2) And (a2 <> a1) Then
For a3 = 1 To 8
If (a3 <> 3) And (a3 <> a1) And (a3 <> a2) Then
For a4 = 1 To 8
If (a4 <> 4) And (a4 <> a1) And (a4 <> a2) And (a4 <> a3) Then
For a5 = 1 To 8
If (a5 <> 5) And (a5 <> a1) And (a5 <> a2) And (a5 <> a3) And (a5 <> a4) Then
For a6 = 1 To 8
If (a6 <> 6) And (a6 <> a1) And (a6 <> a2) And (a6 <> a3) And (a6 <> a4) And (a6 <> a5) Then
For a7 = 1 To 8
If (a7 <> 7) And (a7 <> a1) And (a7 <> a2) And (a7 <> a3) And (a7 <> a4) And (a7 <> a5) And (a7 <> a6) Then
For a8 = 1 To 7
If (a8 <> a1) And (a8 <> a2) And (a8 <> a3) And (a8 <> a4) And (a8 <> a5) And (a8 <> a6) And (a8 <> a7) Then
cc = cc + 1
arr(cc, 0) = 0
arr(cc, 1) = a1
arr(cc, 2) = a2
arr(cc, 3) = a3
arr(cc, 4) = a4
arr(cc, 5) = a5
arr(cc, 6) = a6
arr(cc, 7) = a7
arr(cc, 8) = a8
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
Next
idx = Application.InputBox("Start Index: ", , 1, , , , 1)
For i = 1 To 7
idx = mark(idx, cc)
Next
k = 1
For i = 1 To cc
If arr(i, 0) = 2 Then
For j = 1 To 8
Cells(k, j) = arr(i, j)
Next
k = k + 1
End If
Next
Application.ScreenUpdating = True
End Sub
Function mark(Start As Long, Ende As Long) As Long
Dim i As Long
Dim j As Long
Dim idx As Long
arr(Start, 0) = 2
For i = 1 To 8
For j = 1 To Ende
If (arr(j, 0) = 0) And (arr(j, i) = arr(Start, i)) Then
arr(j, 0) = 1
End If
Next
Next
For j = 1 To Ende
If arr(j, 0) = 0 Then
idx = j
Exit For
End If
Next
mark = idx
End Function