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

  • bteebi

    veterán

    Sziasztok!

    Egy nem összefüggő tartományba (B2:B10,D2:D10,F2:F10) írok, vagyis olvasok be adatokat makróval. Ez teljesen jól működik, viszont felmerült az kérdésként, hogy az egymás utáni nagyon hasonló értékeket jelezhetné a makró (ha pl. valami véletlenül kétszer került volna rögzítésre). Az "eredmenyek" tartomány mindig üres cellájába írja a szerkesztett adatot ("ertek"). kód:

    Set eredmenyek = ActiveSheet.Range("B2:B10,D2:D10,F2:F10")
    For Each cella In eredmenyek
    ...
    If cella = "" Then
        cella = ertek
      Application.Speech.Speak "OK", SpeakAsync:=True
        Exit Sub
    End If

    Az ellenőrzést egyszerűen meg lehet csinálni az esetek többségében, oszlopon belül, csak a fentebbi cella értékét kell kivonni a frissen bemásoltból (offset -1):

    If Abs(cella - cella.Offset(-1, 0)) < 1 Then                
      Application.Speech.Speak "Please check", SpeakAsync:=True
      Else: Application.Speech.Speak "OK", SpeakAsync:=True
    End If

    Csak ugye amikor oszlopváltás van (pl. B-ről D-re), akkor ez nem működik. Lehetne valahogy egyszerűbben az "eredmenyek" tartományra hivatkozva megkeresni az előző írott cellát, tehát pl. a D2-t összehasonlítani a B10-zel?

    Nem szép módszerrel meg tudnám oldani:ha cél cella sor = 2 és oszlop >=D, akkor előző cella sor = 10
    és oszlop offset -2
    De kell(ene) lennie ettől lennie szebb, univerzális(abb) megoldásnak. Tudnátok ebben segíteni? Előre is köszönöm! :R

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

Hirdetés