Diskuze: Ciklus VBA pomoc
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Potřebuješ makra? Nešlo by to přes nějaké šikovné podmíněné formátování?
Potřebuji makra, protože hodnoty se ve sloupci A neustále mění a jejich
počet narůstá a klesá.
Navíc je to jedna z pod procedur z celého makra.
...bez prílohy je to na prd. Skúste makro nižšie poprípade si ho upravte
alebo dajte vedieť.
Upravte si názvy listov v makre.
Nechápem:
lastrowA = Cells(Rows.Count, 1).End(xlUp).Row
....
For Each cell In Range("C2:C" & lastrowA)
Sub StrategickeDily()
Dim rngUrgence As Range, rngBunka As Range
Dim rngStrategickeDily As Range
With Sheets("Strategicke dily")
Set rngStrategickeDily = .Range(.Cells(1, "A"), .Cells(.Cells(Rows.Count, "A").End(xlUp).Row, "A"))
End With
With Sheets("Urgence")
Set rngUrgence = .Range(.Cells(1, "C"), .Cells(.Cells(Rows.Count, "C").End(xlUp).Row, "C"))
For Each rngBunka In rngUrgence
If WorksheetFunction.CountIf(rngStrategickeDily, rngBunka.Text) > 0 Then
rngBunka.Interior.Color = RGB(0, 255, 0)
End If
Next
End With
End Sub
Dobře. Jenom bych chtěl podotknout, že podmíněné formátování funguje i když se hodnoty mění a navíc jde nastavit na celý sloupeček naráz, musíš tuším kliknout na písmenko toho sloupečku, to samé u funkcí: můžeš vybrat celý sloupeček tím, že klikneš na písmeno sloupce Ale jestli to už máš rozdělané v makrech, asi to už bude rozumnější v tom nechat.
Petr Stastny má pravdu. Podmienene formátovanie by na zvýrazňovanie bolo
ideálne, lepšie než použivať makro. Menný počet hodnôt ničomu
nevadí.
Len to skúste, nič za to nedáte. Označte cely stĺpec "C" na liste
"urgence". Pridajte podmienene formátovanie podľa vzorca a ako vzorec použite
-> =COUNTIF('Strategicke dily'!$A:$A;$C1)>0
Len upravte názov listu.
Tarantula222 -no tak to smekám. Pracuje úplně skvěle a když to takto vidím, tak mi to dává i smysl.
Jelikož jsem zde nový, nevím ještě kam přílohy nahrát, proto jsem ji neposkytl.
Chtěl bych požádat ještě o jeden cyklus a to:
pokud se číslo zakázky z listu "Urgence" nachází ve sloupci "B" na listu "Strategické díly", do sloupce "M" na listě "Urgence" datum které se nachází vedle vyhledané hodnoty na listě "Strategické díly".
Momentálně to dělám pro každou buňku zvlášť pomocí
Sub Makro68()
Dim lastrowA As Long
lastrowA = Cells(Rows.Count, 1).End(xlUp).Row
HledanaHodnota = Sheets("Strategické díly").Range("B3:B3").Value
For i = 1 To lastrowA
rozsah = "A" & i
With Range(rozsah)
Set FoundCell = .Cells.Find(What:=HledanaHodnota, _
After:=.Cells(.Cells.Count), _
LookIn:=xlFormulas, _
LookAt:=xlPart, _
searchorder:=xlByRows, _
searchdirection:=xlNext, _
MatchCase:=False)
End With
If FoundCell Is Nothing Then
Else
FoundCell.Offset(0, 12).Range("A1").Value = Sheets("Strategické díly").Range("C3:C3")
End If
Next i
End Sub
Děkuji Radek
...prílohu napríklad cez leteckú poštu.
Druhe makro je:
Sub Makro68()
Dim rngOblastZakazkaU As Range, rngZakazkaU As Range
Dim rngOblastZakazkaS As Range, rngZakazkaS As Range
Dim Zakazka As String
With Sheets("Urgence")
Set rngOblastZakazkaU = .Range(.Cells(2, "A"), .Cells(.Cells(Rows.Count, "A").End(xlUp).Row, "A"))
End With
With Sheets("Strategické díly")
Set rngOblastZakazkaS = .Range(.Cells(3, "B"), .Cells(.Cells(Rows.Count, "B").End(xlUp).Row, "B"))
End With
For Each rngZakazkaU In rngOblastZakazkaU
Zakazka = rngZakazkaU.Text
For Each rngZakazkaS In rngOblastZakazkaS
If Zakazka = rngZakazkaS.Text Then
Sheets("Urgence").Cells(rngZakazkaU.Row, "M").Value = Sheets("Strategické díly").Cells(rngZakazkaS.Row, "C").Value
Exit For
End If
Next rngZakazkaS
Next rngZakazkaU
End Sub
Děkuji i toto rovněž pracuje skvěle.
Výsledek své práce najdeš na http://leteckaposta.cz/839170982.
To jen aby jsi viděl k čemu jsem to potřeboval.
Moc děkuji
Radek
Zobrazeno 9 zpráv z 9.