spraviti v subrotimo, da mi ga nebi trebalo vsakokrat pisat. Prosim za pomoč. Še eno vprašanje, kako izvesti makro, da bo vse ostalo na enem listu in ne da se rešitev vidi v listu1. Ali pa mogoče obstaja kakšna "elegantnejša" rešitev (v koloni D namreč preverjam ali se prva dva znaka ali morda trije.... začnejo z "TR", "CD"....Vse vrstice, ki ne ustrezajo pogoju se izbrišejo). Hvala na pomoči.
Drugega dela vprašanja pa ne razumem, saj najprej pobrišete vse na listu1 in potem neke podatke kopirate tja iz lista 'list' - kako bi potem naj vse ostalo na listu1, če pa že imate podatke na list 'list'?
Sub test()
indeks = 6
indeks1 = 6
Range("List1!A1:F500").ClearContents
For indeks = 1 To 5
If Left(Range("List!D" & CStr(indeks)), 2) = "TR" Then GoSub delaj
If Left(Range("List!D" & CStr(indeks)), 2) = "CD" Then GoSub delaj
If Left(Range("List!D" & CStr(indeks)), 2) = "CD" Then GoSub delaj
indeks1 = indeks1 + 1
Next indeks
Sheets("List1").Select
End Sub
Sub delaj(indeks As Integer, indeks1 As Integer)
Range("List1!A" & CStr(indeks1)) = Range("List!A" & CStr(indeks))
Range("List1!B" & CStr(indeks1)) = Range("List!B" & CStr(indeks))
Range("List1!C" & CStr(indeks1)) = Range("List!C" & CStr(indeks))
Range("List1!D" & CStr(indeks1)) = Range("List!D" & CStr(indeks))
Range("List1!E" & CStr(indeks1)) = Range("List!E" & CStr(indeks))
Range("List1!F" & CStr(indeks1)) = Range("List!F" & CStr(indeks))
Range("List1!G" & CStr(indeks1)) = Range("List!G" & CStr(indeks))
End Sub
Kar se pa tiče drugega dela vprašanja. Ali bi lahko bil makro tako napisan, da bi se makro izvedel na samem listu "list", ne pa tako kot je sedaj napisano, da je rezulatat po izvedenem makroju na listu1
Sub test()
indeks = 6
indeks1 = 6
Range("List1!A1:F500").ClearContents
For indeks = 1 To 5
If Left(Range("List!D" & CStr(indeks)), 2) = "TR" Then delaj index, index1
If Left(Range("List!D" & CStr(indeks)), 2) = "CD" Then delaj index, index1
If Left(Range("List!D" & CStr(indeks)), 2) = "CD" Then delaj index, index1
indeks1 = indeks1 + 1
Next indeks
Sheets("List1").Select
End Sub
Še en problem. Kako definiram da program gleda ali so točno te tri črke "KCD"..., ker ko gre program naslednjič skozi mi še enkrat izpiše isto vrstico ker naslednjič vidi prvi znak "K", ki ga ima "KCD" prav tako itd, pri naslednji prehodih skozi program. Upam da sem uspel pravilno razložiti kaj me muči.
If Left(Range("List!D" & CStr(indeks)), 1) = "K" Then delaj indeks, indeks1
saj kot ste sami opazili, z njo pač pokrijete že vse preostale možnosti! S črko K ste tako pokrili že vse ostale vaše kombinacije 'KCD, KH, KL, KN... '
If Left(Range("List!D" & CStr(indeks)), 3) = "KCD" Then delaj indeks, indeks1
vam primerja natanko črke "KCD" - točno to kar želite - toda problem, ki ste ga izpostavili je pač v tem, da vam določene vrstice obravnava večkrat, saj ustrezajo VEČIM pogojem!
Se opravičujem, zadevo sem "zakompliciral". Zaenkrat mi zadeva deluje tako kot kot je napisano.
Če lahko še eno vprašanje. Kako bi zagnal dva makroja z enim "klikom". Primer na sliki. Z prvim "otočkom" zaženem makro 1 z drugim makro 2 in z tretjim bi zagnal oba makroja. http://www.shrani.si/f/1y/5l/3AW4XE9C/makro.jpg