Keresés

Új hozzászólás Aktív témák

  • m.zmrzlina

    senior tag

    válasz Delila_1 #30355 üzenetére

    Köszi Delila és bocs hogy feleslegesen dolgoztál de nem igazán volt időm részletekbe menően leírni mit akarok. Most kivettem a teljes makróból azt a részletet ami problémás, hogy ne zavarjon hogy mit deklaráltam korábban és hogyan. Így néz ki:

    Sub valogat()

    Dim int_usor As Integer, int_uoszlop As Integer, int_vege As Integer
    int_usor = 135
    int_uoszlop = 50
    int_vege = 2

    'ThisWorkbook.Worksheets(1).Activate

    Dim tartomany As range
    Set tartomany = ThisWorkbook.Worksheets(1).range(Cells(2, 3), Cells(int_usor, int_uoszlop))

    For Each cella In tartomany.Cells
    If cella.Interior.ColorIndex = 6 And cella.Value <> "" And Application.WorksheetFunction.CountIf(Worksheets("csatorna").range("D2:D50"), cella.Value) = 0 Then
    Worksheets("csatorna").Cells(int_vege, 4).Value = cella.Value
    int_vege = int_vege + 1
    End If
    Next

    End Sub

    A makrórészlet feladata az hogy gyűjtse ki az első munkalap egy adott tartományában /range(Cells(2, 3), Cells(int_usor, int_uoszlop))/ a sárga cellaháttérrel jelölt cellákból az ott előforduló összes cellaértéket és készítsen egy listát a "csatorna" nevű munkalap D oszlopába. Természetesen ha a cellaérték a tartományban 50-szer fordul elő a listában akkor is csak egyszer szerepeljen. /ezért van a CountIf a feltételek közt/

    A makró működik is ha a kikommentezett sor benne van. Ha azonban nincsen benne akkor a Set tartomany = stb... sornál Application-defined or object-defined errorral kiakad.

    Szóval a kérdés az, hogy hogyan lehet megszabadulni a vizsgálandó tartományt tartalmazó munkalap aktiválásától?

    Ja és a range ebben a munkafüzetben lévő összes előfordulásánál kisbetűs. :F

    [ Szerkesztve ]

Új hozzászólás Aktív témák