Temat: Poprawa makra

Stworzyłem makro:
Sub test()
Dim ostatni As Long
Dim wiersz As Range
Dim Z As Integer
Dim A As Integer
Dim B As Integer
Dim C As Integer
Dim D As Integer
Dim E As Integer
Dim F As Integer
Dim G As Integer
Dim H As Integer
Dim I As Integer
Dim J As Integer

For Z = 0 To 30
For A = Z + 1 To 31
For B = A + 1 To 32
For C = B + 1 To 33
For D = C + 1 To 34
For E = D + 1 To 35
For F = E + 1 To 36
For G = F + 1 To 37
For H = G + 1 To 38
For I = H + 1 To 39

Range("A4").Offset(0, Z).Value = 0
Range("B4").Offset(0, A - 1).Value = 0
Range("C4").Offset(0, B - 2).Value = 0
Range("D4").Offset(0, C - 3).Value = 0
Range("E4").Offset(0, D - 4).Value = 0
Range("F4").Offset(0, E - 5).Value = 0
Range("G4").Offset(0, F - 6).Value = 0
Range("H4").Offset(0, G - 7).Value = 0
Range("I4").Offset(0, H - 8).Value = 0
Range("J4").Offset(0, I - 9).Value = 0

Range("AZ4").Calculate
If Range("AZ4") < Range("AZ5") Then
'wyznacznie pierwszego wolnego wiersza w Arkuszu1
With Workbooks("makro.xlsm").Worksheets("Arkusz1")
ostatni = .Cells(.Rows.Count, "A").End(xlUp).Row
If ostatni < 35 Then ostatni = 35
Set wiersz = .Rows(ostatni + 1)
ostatni = ostatni + 1
Range("A" & ostatni, "AN" & ostatni) = Range("A5:AN5").Value

End With
End If
Range("A4:AN4") = Range("A3:AN3").Value


Next I
Next H
Next G
Next F
Next E
Next D
Next C
Next B
Next A
Next Z
End Sub
Ma to na celu sprawdzenie wszystkich kombinacji 10- cio cyfrowych z cyfr od 1 do 40. Jeżeli spełniony jest warunek to ta kombinacja jest omijana, jeżeli nie to jest zapisywana w kolejnym wolnym wierszu. Mój problem polega na tym,
że chciałbym aby móc ręcznie uruchomić makro od zadanej przeze mnie kombinacji np. 1 2 3 4 5 10 11 12 13 14 . Niestety, zabrakło wiedzy. Bardzo proszę o pomoc i z góry dziękuję.
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: Poprawa makra

eee no nie wiem co ale to nie działa.
Wrzucasz zera w różnych miejscach

wyodrębniając fragment:
For C = B + 1 To 33
Range("D4").Offset(0, C - 3).Value = 0
Next

To zmienna C przyjmuje różne wartości rozpoczynając od 3 (dlaczego nie od 1ki?) do 33 odejmując potem od każdej 3, którą wykorzystujesz do przesunięcia .Offset położenia wartości zawsze = 0 (zero)

Po pierwsze po jaką... te dodawanie i odejmowanie (zmienna C nigdy nie będzie miała wartości = 1), po drugie jak chcesz uzyskać rożne wartości skoro zawsze .value = 0
Po co to przeliczanie, skoro nie operujesz na formułach w wyłączonych zdarzeniach?
Ilość kombinacji w twoim zapętleniu to 87660528x, a więc tle razy chcesz wklejać zera do arkusza :)
Chyba musisz to jeszcze dopracować. Polecam poruszać się krokowo.



Wyślij zaproszenie do