Yhteys kahden työkirjan välillä

Miten saisi luotua yhteyden kahden työkirjan välille, niin, että toisessa työkirjassa käytetty muotoilu siirtyy toiselle, jos arvo on sama?

Eli jos työkirjassa 1 on soluissa A1-A5 näin:
osa 101
osa 102
osa 103
osa 104
osa 105

ja näistä A2 "osa 102" on täytetty vihreäksi.

työkirjassa 2 on soluissa B3-B6 näin:
osa 308
osa 102
osa 222
osa 104

Miten tämän työkirjan 2 saisi linkitettyä työkirjaan 1, niin että muotoilu toistuisi, kun arvo on sama, eli työkirjassa 2 solun B4 täyttö olisi myös vihreä, koska työkirjassa 1 solussa A2 on sama arvo ja se on täytetty vihreäksi?
121222
Äänestä

Muut lukivat myös

Vastaukset 12

Vanhimmat

Riippuu vähän siitä miten noihin soluihin tuotetaan arvot ja samoin se ensimmäinen vihreä täyttö? Kaavoilla vaiko manuaalisesti?
Solun sisältö voidaan helposti viitata haettavaksi toisesta työkirjasta. Samoin täyttövärille voi tehdä ehtolausekkeen tietyihin soluihin.

Äänestä

Excelissä ei taida olla keinoa havaita muotoilun muuttumista.

Äänestä

  • kunde kirjoitti:

    Ko. sivun modulissa lienee joku seuraavan kaltainen. Tämä toimii oikein, jos tuo Test.xlsx on valmiiksi auki. Jos se on kiinni, tarkoitus olisi että se avataan ja sitten muuttamisen jälkeen talletetaan ja suljetaan. Jostain syystä makro pysähtyy aina tiedoston tallettamisen jälkeen, ikään kuin siinä olisi painettu breikkiä. Se jatkaa ongelmitta painamalla f5 . Askeltamalla tuo kohta ei ilmoita mitään poikkeavaa. En keksinyt syytä.

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

        nimi = "Test.xlsx"
        Test = "C:\temp\excel\" & nimi
        If Dir(Test) = "" Then Exit Sub
        avattuna = OnAuki(nimi)
        Set tämä = ThisWorkbook

        Application.EnableEvents = False
        On Error GoTo err:
        Application.Undo
        muutettu = ActiveCell.Address
        Application.Undo
        arvo = Range(muutettu).Value
        Range(muutettu).Copy
        Set f = Workbooks.Open(Filename:=Test)

        KäytettyAlue  = "A1:" & f.Sheets("Sheet1").Range("A1").SpecialCells(xlCellTypeLastCell).Address
        For Each solu In f.Sheets("Sheet1").Range(KäytettyAlue )
            If solu.Value = arvo And arvo <> "" Then
                solu.PasteSpecial Paste:=xlPasteFormats
                Debug.Print "format"
            End If
        Next solu
        
        tämä.Activate
        Target.Select
        Application.SendKeys ("{ESC}")
        
        Application.EnableEvents = True
        If Not avattuna Then
            f.Save  ' Tämän jälkeen makro pysähtyy
            f.Close
        End If
    Exit Sub

    err:
        Application.EnableEvents = True
        

    End Sub

    Private Function OnAuki(ByVal f As String) As Boolean
        Dim wb As Workbook
        On Error Resume Next
        Set wb = Application.Workbooks.Item(f)
        OnAuki = (Not wb Is Nothing)
    End Function

    Äänestä

  • Anonyymi kirjoitti:

    Ko. sivun modulissa lienee joku seuraavan kaltainen. Tämä toimii oikein, jos tuo Test.xlsx on valmiiksi auki. Jos se on kiinni, tarkoitus olisi että se avataan ja sitten muuttamisen jälkeen talletetaan ja suljetaan. Jostain syystä makro pysähtyy aina tiedoston tallettamisen jälkeen, ikään kuin siinä olisi painettu breikkiä. Se jatkaa ongelmitta painamalla f5 . Askeltamalla tuo kohta ei ilmoita mitään poikkeavaa. En keksinyt syytä.

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

        nimi = "Test.xlsx"
        Test = "C:\temp\excel\" & nimi
        If Dir(Test) = "" Then Exit Sub
        avattuna = OnAuki(nimi)
        Set tämä = ThisWorkbook

        Application.EnableEvents = False
        On Error GoTo err:
        Application.Undo
        muutettu = ActiveCell.Address
        Application.Undo
        arvo = Range(muutettu).Value
        Range(muutettu).Copy
        Set f = Workbooks.Open(Filename:=Test)

        KäytettyAlue  = "A1:" & f.Sheets("Sheet1").Range("A1").SpecialCells(xlCellTypeLastCell).Address
        For Each solu In f.Sheets("Sheet1").Range(KäytettyAlue )
            If solu.Value = arvo And arvo <> "" Then
                solu.PasteSpecial Paste:=xlPasteFormats
                Debug.Print "format"
            End If
        Next solu
        
        tämä.Activate
        Target.Select
        Application.SendKeys ("{ESC}")
        
        Application.EnableEvents = True
        If Not avattuna Then
            f.Save  ' Tämän jälkeen makro pysähtyy
            f.Close
        End If
    Exit Sub

    err:
        Application.EnableEvents = True
        

    End Sub

    Private Function OnAuki(ByVal f As String) As Boolean
        Dim wb As Workbook
        On Error Resume Next
        Set wb = Application.Workbooks.Item(f)
        OnAuki = (Not wb Is Nothing)
    End Function

    Videollani testi työkirja on suljettuna.
    Melkoista kikkailua tuo koodi...
    Virheen syy...
    https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/code-execution-has-been-interrupted?f1url=?appId=Dev11IDEF1&l=en-US&k=k(vblr6.chm1011317);k(TargetFrameworkMoniker-Office.Version=v16)&rd=true

    Keep EXCEling
    @Kunde

    Äänestä

  • kunde kirjoitti:

    Korjaus:

    Application.EnableCancelKey = xlDisabled
    f.Save ' nyt makro pääsee tästä yli pysähtymättä
    Application.EnableCancelKey = xlErrorHandler

    Yhä on mysteeri, miksi Excel toisinaan temppuilee ja tekee aivan omiaan.

    Äänestä

  • Anonyymi kirjoitti:

    Korjaus:

    Application.EnableCancelKey = xlDisabled
    f.Save ' nyt makro pääsee tästä yli pysähtymättä
    Application.EnableCancelKey = xlErrorHandler

    Yhä on mysteeri, miksi Excel toisinaan temppuilee ja tekee aivan omiaan.

    Kannattaa välttää noita Keypress komentoja koodissa, eivät toimi luotettavasti

    Äänestä


  • Anonyymi kirjoitti:

    Kannattaa vaihtaa Libre-Officeen niin nää toimiikin, Exelissä kun toimii miten sattuu!

    Turhaa anonyymi mulle naljailet. Koodini toimii loistavasti, kuten videolta voit nähdä.
    Anonyymin koodissa se ongelma oli eikä minun ja hän on koodissaan käyttänyt noita Keypress komentoja, jotka eivät ole luotettavia, eikä niitä olisi kovin suotavaa käyttää.

    Äänestä

  • kunde kirjoitti:

    Kannattaa välttää noita Keypress komentoja koodissa, eivät toimi luotettavasti

    Kokeilin myös ilman komentoa Application.SendKeys ("{ESC}")
    Se ei auttanut. En tiedä, olisiko toiminut boottaamisen jälkeen.

    Äänestä

  • Anonyymi kirjoitti:

    Kannattaa vaihtaa Libre-Officeen niin nää toimiikin, Exelissä kun toimii miten sattuu!

    Käyttäisin mielelläni, mutta
    - Makrojen teko Libreen on kertaluokkaa hankalampaa.
    - Kaikkea sitä mitä Excelillä voi, ei ole mahdollista tehdä Librellä.
    - Töissä nyt vaan käytetään MS Officea.

    Äänestä

  • Anonyymi kirjoitti:

    Kannattaa vaihtaa Libre-Officeen niin nää toimiikin, Exelissä kun toimii miten sattuu!

    Näin se on MS office paistaa toimimattomuudelaan.

    Äänestä

Kommentoi aloitusta


Anonyymi kirjoitti:

Miten saisi luotua yhteyden kahden työkirjan välille, niin, että toisessa työkirjassa käytetty muotoilu siirtyy toiselle, jos arvo on sama?

Eli jos työkirjassa 1 on soluissa A1-A5 näin:
osa 101
osa 102
osa 103
osa 104
osa 105

ja näistä A2 "osa 102" on täytetty vihreäksi.

työkirjassa 2 on soluissa B3-B6 näin:
osa 308
osa 102
osa 222
osa 104

Miten tämän työkirjan 2 saisi linkitettyä työkirjaan 1, niin että muotoilu toistuisi, kun arvo on sama, eli työkirjassa 2 solun B4 täyttö olisi myös vihreä, koska työkirjassa 1 solussa A2 on sama arvo ja se on täytetty vihreäksi?

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