Millä koodilla

Mikä on se koodinpätkä jolla saadaan esim alla olevassa koodissa kohdistin rullaamaan niin että se on aina siinä kohdin missä tupla esiintyy. Eli kun taulukossa on ensimmäiset 5 riviä kiinnitetty ja siellä on nappi johon koodi on liitetty niin miten saadaan alimmat rivit rullaamaan niin että aina se rivi jossa on tupla on esillä ?

Sub oma_poista_tuplat()
Dim lngSel As Long
Range("A:A").Interior.ColorIndex = xlNone
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If WorksheetFunction.CountIf(Range("A1:A" & i), Cells(i, 1).Value) > 1 Then
Cells(i, 1).Interior.ColorIndex = 3
lngSel = MsgBox("Tuplatietoja havaittu...Haluatko poistaa", vbYesNoCancel)
If lngSel = vbCancel Then Exit Sub
If lngSel = vbYes Then
Cells(i, 1).EntireRow.Delete
Else
Cells(i, 1).Interior.ColorIndex = xlNone
End If
End If
Next i
End Sub
14313
Äänestä

Muut lukivat myös

Vastaukset 14

Vanhimmat

ActiveWindow.ScrollRow = i ?

Äänestä
Aloittaja

Kiitos vastauksestasi. En saa sitä toimimaan tuolla lisäyksellä. Mihin kohti sijoitit sen ?

Äänestä
  • Oletettavasti ennen riviä lngSel = MsgBox("Tuplatietoja...

    Ei ole tosin Exceliä käytössä.

    Äänestä

Aloittaja

Tulee "Syntax error"

Äänestä

Sub oma_poista_tuplat()
Dim lngSel As Long
Range("A:A").Interior.ColorIndex = xlNone
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If WorksheetFunction.CountIf(Range("A1:A" & i), Cells(i, 1).Value) > 1 Then
Cells(i, 1).Interior.ColorIndex = 3
ActiveWindow.Panes(2).ScrollRow = i
lngSel = MsgBox("Tuplatietoja havaittu...Haluatko poistaa", vbYesNoCancel)
If lngSel = vbCancel Then Exit Sub
If lngSel = vbYes Then
Cells(i, 1).EntireRow.Delete
Else
Cells(i, 1).Interior.ColorIndex = xlNone
End If
End If
Next i
End Sub

Äänestä
  • Aloittaja

    Vielä sen verran että kun nyt koodi löytää tuplat se näyttää niistä vain toisen ja sen siinä lukitun rivin alapuolella. Eli en näe mikä se toinen on johon se viittaa. Tämä on tärkeää koska se saattaa löytää tuplan A sarakkeesta mutta tuplien liitetiedot C ja D ja E sarakkeissa ovatkin erilaiset, jolloin poistoa ei suoriteta.

    Malli;

    A
    1
    2 Näille riveille on piirretty makrojen käyttöä varten painikkeet
    3
    4
    5
    -----------------------------------------------------------------------------------
    Tässä kulkee lukittujen rivien raja

    6 Tieto 1
    7 Tieto 1 (koodi näyttää tämän rivillä 6, kun sen pitäisi näyttää rivin 6 tieto
    rivillä 6 )
    8 Tieto2
    9 Tieto 3
    10 Tieto 4
    jne

    Miten saan tuon korjauksen tuohon ?

    Terv

    Jorma

    Äänestä

  • Aloittaja

    UPDATE_9623167 kirjoitti:

    Vielä sen verran että kun nyt koodi löytää tuplat se näyttää niistä vain toisen ja sen siinä lukitun rivin alapuolella. Eli en näe mikä se toinen on johon se viittaa. Tämä on tärkeää koska se saattaa löytää tuplan A sarakkeesta mutta tuplien liitetiedot C ja D ja E sarakkeissa ovatkin erilaiset, jolloin poistoa ei suoriteta.

    Malli;

    A
    1
    2 Näille riveille on piirretty makrojen käyttöä varten painikkeet
    3
    4
    5
    -----------------------------------------------------------------------------------
    Tässä kulkee lukittujen rivien raja

    6 Tieto 1
    7 Tieto 1 (koodi näyttää tämän rivillä 6, kun sen pitäisi näyttää rivin 6 tieto
    rivillä 6 )
    8 Tieto2
    9 Tieto 3
    10 Tieto 4
    jne

    Miten saan tuon korjauksen tuohon ?

    Terv

    Jorma

    Anteeksi typerä kysymykseni. Lisäsin sinne perään -5 niin sain ne putoamaan lähemmäs rullattavan taulukon keskustaa ja näinhän se onnistui, tietenkin... Tein sen vaan ensin liian hätäisesti ja panin -5 kiinni i niin eihän se toiminut vaan antoi virhettä. No nyt se on täydellinen. Kiitos kaikille keskusteluun osallistujille, jatketaan excelin kanssa.....

    Äänestä

Aloittaja

Kiitos Kunde. Viitsitkö vielä suomentaa tuon ActiveWindow.Panes(2).ScrollRow = i, eli miksi ActiveWindow.ScrollRow = i ei toimi tuossa yhteydessä ? Eli mistä tuo .Panes(2) syntyy ? Kiitollisena "vba kielen ei niin guru vielä"

Äänestä

ActiveWindow viittaa aktiiviseen ikkunaan ja kun se jaetaan syntyy Ikkunat(Panes Collection) ja silloin niitä on 2- eli ylempi Pane1 ja alempi Pane2 ja jos viittataan Pane2.rivinro niin se on siis alemman ikkunan rivi ja ylempi olisi sitten Pane1.rivinro.
pelkästään activewindow on siis oikeesti ylempi ikkuna

muokkaa vielä niin, että rullaa aina ylemmässä sitä ekaa esiintymää... sitten se on täydellinen ;-)

Äänestä
  • hokasin vasta, että sanoit muilla riveillä on tietoa mitä tsekataan, miksi et sitten tarkista kaikkia kerralla ja ei tartte kysellä...

    Äänestä

Aloittaja

Moi. Se on totta että vois tarkistaa kaikki kerralla ja silloin ei tarvisi kysellä. Mutta kun ongelmana on se että usealla rivillä on vain yksi tieto joka esiintyy tuplana. Tällöin tuota tietoa ei saa poistaa. Se poistetaan vain jos tieto kaikissa sarakkeissa (A, B, C, D, E, F ja G) on yhtenevä, useammalla kuin yhdellä rivillä. Vois tietenkin ajatella että se kävisi kaikki läpi yhdellä kertaa, ja poistaisi vain ne joissa kaikki tieto on yhtenevää riveittäin. Voisitko näyttää tuon koodin ? Onko exceliin mahdollista tehdä sellaista koodia että kun syötän uusille riveille tietoa, tuo koodi toimis taustalla ja jos se löytää juuri samanlaisen joltakin riviltä, se ilmoittaa siitä MsgBoxilla esim (vastaava tieto löytynyt riviltä .... ) ? Tässä oppii samalla aivan huimasti. Kiitos siitä Sinulle. Onko sulle sellaista sähköpostia mihin voin esimerkin laittaa tästä taulukosta ?

Äänestä

helpoitenhan toi menee suodattamalla uniikit paikalla ja sitten poistaa piilotetut rivit...
toka kyssäri: mahdollista on
ja vika
[email protected]

Äänestä
Aloittaja

Lähetin postia

Äänestä
  • paluupostia sait...

    laitan tännekin sen koodin pätkän, koska se on nopea ja cool...

    eli poistaa tuplarivit DAT taulukosta sarakkeista A-G.
    koodi lisää Huuhaa taulukon ja kopioi tiedot sinne DAT taulukosta ja suorittaa erikoissuodatuksen ja kopioi suodatetut tiedot DAT taulukkoon ja poistaa lopuksi Huuhaa taulukon

    Sub Kunden_poista_tuplat()
    Dim nimi As String
    On Error Resume Next
    Application.DisplayAlerts = False
    nimi = Worksheets("Huuhaa").Name
    If Not Err.Number = 0 Then Sheets.Add.Name = "Huuhaa"
    Sheets("Huuhaa").Cells.ClearContents
    On Error GoTo 0
    Sheets("DAT").Activate
    Cells.Copy Sheets("Huuhaa").Range("A1")
    Cells.ClearContents
    Sheets("Huuhaa").Columns("A:G").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("A6"), Unique:=True
    Sheets("Huuhaa").Delete
    Application.DisplayAlerts = True
    End Sub

    Keep EXCELing
    @Kunde

    Äänestä

Kommentoi aloitusta


UPDATE_9623167 kirjoitti:

Mikä on se koodinpätkä jolla saadaan esim alla olevassa koodissa kohdistin rullaamaan niin että se on aina siinä kohdin missä tupla esiintyy. Eli kun taulukossa on ensimmäiset 5 riviä kiinnitetty ja siellä on nappi johon koodi on liitetty niin miten saadaan alimmat rivit rullaamaan niin että aina se rivi jossa on tupla on esillä ?

Sub oma_poista_tuplat()
Dim lngSel As Long
Range("A:A").Interior.ColorIndex = xlNone
For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If WorksheetFunction.CountIf(Range("A1:A" & i), Cells(i, 1).Value) > 1 Then
Cells(i, 1).Interior.ColorIndex = 3
lngSel = MsgBox("Tuplatietoja havaittu...Haluatko poistaa", vbYesNoCancel)
If lngSel = vbCancel Then Exit Sub
If lngSel = vbYes Then
Cells(i, 1).EntireRow.Delete
Else
Cells(i, 1).Interior.ColorIndex = xlNone
End If
End If
Next i
End Sub

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu