Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1468to1472
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Betreff
Datum
Anwender
  • 14.01.2016 11:08:09
    ChrisL
  • 14.01.2016 14:43:52
    Walter
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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige