Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro

Forumthread: Makro

Makro
14.01.2016 03:11:42
Walter
Hallo Excelfreunde,
Habe von Freunden ein Makro, das die Möglichkeiten der Zahlen von 1 bis 50 schreibt.
Nun möchten wir, dass drei aufeinander folgende zahlen nicht geschieben werden.
Also:1,2,3,9,12 dürfte nicht geschrieben werden.
https://www.herber.de/bbs/user/102767.xls
Danke für die Hilfe
Gruß Walter

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro
14.01.2016 11:08:09
ChrisL
Hi Walter
Vielleicht so...
Sub GetPattern()
Dim vPtrn, lngR As Long, lngLR As Long
Dim i As Integer, intC As Integer
Dim k As Byte, n As Byte, m As Byte, bFrst As Byte
'Einträge:
k = 5
n = 50
bFrst = 1     'erste Zahl
If k > n Then MsgBox "k > n", 16: Exit Sub
intC = 1
ReDim vPtrn(1 To k)
For i = 1 To k
vPtrn(i) = bFrst + i - 1
Next
Application.ScreenUpdating = False
With Sheets(1)
.Cells.Delete
lngLR = .Rows.Count
Do While vPtrn(1) = bFrst
If lngR = lngLR Then lngR = 0: intC = intC + k + 1
If (vPtrn(1) + 1 = vPtrn(2) And vPtrn(2) + 1 = vPtrn(3)) Or _
(vPtrn(2) + 1 = vPtrn(3) And vPtrn(3) + 1 = vPtrn(4)) Or _
(vPtrn(3) + 1 = vPtrn(4) And vPtrn(4) + 1 = vPtrn(5)) Then
Else
lngR = lngR + 1
.Range(.Cells(lngR, intC), .Cells(lngR, intC + k - 1)).Value = vPtrn
End If
m = k
Do While vPtrn(m) >= n - k + m
If m = 1 Then Exit Do
m = m - 1
Loop
vPtrn(m) = vPtrn(m) + 1
For i = m + 1 To k
vPtrn(i) = vPtrn(m) + i - m
Next
Loop
End With
Application.ScreenUpdating = True
End Sub

cu
Chris

Anzeige
Danke
14.01.2016 14:43:52
Walter
Danke Chris,
Gru0 Walter
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige