Onko excelissä Print-käsky?

Anonyymi

Voiko kaavasta komentaa jollain käskyllä kirjoittamaan tekstiä jonkin toiseen soluun kuin missä tämä kaava on?

52

1163

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Kyllä voi. Kahdessa solussa on sitten sama arvo.

      • Anonyymi

        Jännää... Esitit vain yhden väitteen ja silti olrt kahdella tapaa väärässä.

        Ensinnäkin: Excelissä mikään solu ei voi missään olosuhteissa muuttaa toisen solun sisältöä. Jos haluat muuttaa solussa olevaa tekstiä/kaavaa, joudut joko itse kirjoittamaan siihen soluun sen mitä haluat tai kirjoittamaan makron, joka kirjoittaa siihen kyseiseen soluun mitä haluat. Ei ole mahdollista kirjoittaa soluun A1 jotain, niin että solun B13 sisältö muuttuu.

        Toiseksi: Jos hyväntahtoisesti kuvittelemme, että tarkoitit, että jos solussa B13 on jo valmiiksi kaavalla tehty viittaus soluun A1, niin A1:n muuttaminen voi muuttaa B13:a, olet silti väärässä koska sanoit, että tällöin kahdessa solussa on sama arvo. Tuo ei pidä paikkaansa, koska kaava voi antaa tulokseksi mitä hyvänsä. Jos B13=2*A1, niin selvästikään niissä ei välttämättä ole sama arvo.


      • Anonyymi
        Anonyymi kirjoitti:

        Jännää... Esitit vain yhden väitteen ja silti olrt kahdella tapaa väärässä.

        Ensinnäkin: Excelissä mikään solu ei voi missään olosuhteissa muuttaa toisen solun sisältöä. Jos haluat muuttaa solussa olevaa tekstiä/kaavaa, joudut joko itse kirjoittamaan siihen soluun sen mitä haluat tai kirjoittamaan makron, joka kirjoittaa siihen kyseiseen soluun mitä haluat. Ei ole mahdollista kirjoittaa soluun A1 jotain, niin että solun B13 sisältö muuttuu.

        Toiseksi: Jos hyväntahtoisesti kuvittelemme, että tarkoitit, että jos solussa B13 on jo valmiiksi kaavalla tehty viittaus soluun A1, niin A1:n muuttaminen voi muuttaa B13:a, olet silti väärässä koska sanoit, että tällöin kahdessa solussa on sama arvo. Tuo ei pidä paikkaansa, koska kaava voi antaa tulokseksi mitä hyvänsä. Jos B13=2*A1, niin selvästikään niissä ei välttämättä ole sama arvo.

        ” Ensinnäkin: Excelissä mikään solu ei voi missään olosuhteissa muuttaa toisen solun sisältöä. ”

        JOS komennolla voi tehdä ehdon joka muuttaa sen solun arvoa jossa JOS komento on.


      • Anonyymi
        Anonyymi kirjoitti:

        ” Ensinnäkin: Excelissä mikään solu ei voi missään olosuhteissa muuttaa toisen solun sisältöä. ”

        JOS komennolla voi tehdä ehdon joka muuttaa sen solun arvoa jossa JOS komento on.

        Jos-funktio antaa eri arvon riippuen siitä, onko ehto tosi vai ei, mutta sitä kaavaa itseään, eli solun todellista sisältöä, et voi muuttaa toisesta solusta käsin (ilman makroja).


      • Anonyymi

        Ei windows mitään tulosta.


      • Anonyymi
        Anonyymi kirjoitti:

        ” Ensinnäkin: Excelissä mikään solu ei voi missään olosuhteissa muuttaa toisen solun sisältöä. ”

        JOS komennolla voi tehdä ehdon joka muuttaa sen solun arvoa jossa JOS komento on.

        Mua ärsyttää se w10 "neljän ytimen ongelma"
        Jos kunnon kone w10 ei pysty sitä hyödyntään.
        On se ihan perseestä!!


      • Anonyymi
        Anonyymi kirjoitti:

        Mua ärsyttää se w10 "neljän ytimen ongelma"
        Jos kunnon kone w10 ei pysty sitä hyödyntään.
        On se ihan perseestä!!

        No mutta sittenhän on hyvä uutinen, ettei mitään neljän ytimen ongelmaa ole, ellet itse käy ilmoittamassa käyttöjärjestelmälle, että se saa käyttää vain neljää ydintä.

        Oletusasetuksilla W10 käyttää oikein mallikkaasti i9:n kaikkia kymmentä ydintä. Samoin myös W7 ja W11, W8:a en ole kokeillut.


    • Anonyymi

      Laita tähän toiseen soluun viittaus alkuperäiseen.
      Jos tarkoitat jotain muuta, tarvitaan makro.

      • Anonyymi

        Kamala w10. Windows 10 on paska, Mikään ei tunnu toimivan kunnolla! Joka asia vaatii säätämistä!


    • Anonyymi

      ON .....

      • Anonyymi

        Ei ole. Solu ei voi muuttaa toisen solun sisältöä.


      • Anonyymi
        Anonyymi kirjoitti:

        Ei ole. Solu ei voi muuttaa toisen solun sisältöä.

        Täytyy sitten värkätä oma JOS-kaava kaikkiin niihin soluihin, jos keskitetty kaava ei mahdollinen. Vai onnistuisikohan ehdollisella muotoilulla, teksti piilossa valkoisena tekniikalla.


      • Anonyymi
        Anonyymi kirjoitti:

        Ei ole. Solu ei voi muuttaa toisen solun sisältöä.

        Onko sinulla joku laajempikin ongelma asioiden ymmärtämisen suhteen?


      • Anonyymi
        Anonyymi kirjoitti:

        Onko sinulla joku laajempikin ongelma asioiden ymmärtämisen suhteen?

        On sillä. Se ei pysty edes käsittään että windows vakoilee kaiken.


      • Anonyymi
        Anonyymi kirjoitti:

        Ei ole. Solu ei voi muuttaa toisen solun sisältöä.

        Taatusti voi.


      • Anonyymi
        Anonyymi kirjoitti:

        Taatusti voi.

        Ei taatusti voi. Toki jos siinä toisessa solussa on kaava, joka viittaa muualle, niin se mitä solussa näkyy voi muuttua. Mutta solun sisältöä, eli sitä kaavaa, ei siltikään ole mahdollista muuttaa toisesta solusta käsin. Se täytyy tehdä makrolla.


      • Anonyymi
        Anonyymi kirjoitti:

        On sillä. Se ei pysty edes käsittään että windows vakoilee kaiken.

        Paitsi että Windows rikkoi massoittain kovalevyjä, DeLL läppäreitä ja mitä kaikkee tässä kehityshistoriassa olikaan. Ainakin pari kertaa ajanut ihmisten koneet ikuiseen silmukkaan virheellisten päivitysten vuoksi ja aiheuttanut päivien toiminnan katkoja tai uudelleen asennuksia ... On siis joku jolla se on toiminut puoli vuotta ... Lohduttavaa kuulla, ei silti kiinnosta .. Mä en halua mitään microsoft storea pöydälle, windows 10:ssä maksaa pasianssikin .. Eikä lahjakorteilla voinu maksaa ees mediaplayeria 8.1 prolle. Kinuaa pankkikorttia ... Viimeiset on windowsit. Jään eläkkeelle kunhan tää windows ujutus valkenee teillekin ... Itkette vielä aikaa kun XP vallitsi (vanhoilla päivillänne sitten ku windows 7 ja 8 tuli on loppu). Kohta ei oo kiintolevyjäkään vaan kaikki tallennetaan johonkin onedrivelle pakkosyöttönä. Hyvästi yksityisyys ja tietosuoja.
        Windows 10:essä ei ole tietosuojaa minkäänlaista.


    • Anonyymi

      Mitä tähän toiseen soluun pitäisi kirjoittaa? Onko vaihtoehtoja paljon ja miten ne riippuvat muista soluista?

      • Anonyymi

        Kaavassa annettu teksti pitäisi saada toiseen soluun, mahdollisia sijainteja on useita, ja sijainti määriteltäisiin kaavassa muiden tekijöiden perusteella.


      • Anonyymi
        Anonyymi kirjoitti:

        Kaavassa annettu teksti pitäisi saada toiseen soluun, mahdollisia sijainteja on useita, ja sijainti määriteltäisiin kaavassa muiden tekijöiden perusteella.

        Onko kaikki mahdolliset tekstin sijainni etukäteen tiedossa?

        Onko mahdollisia sijainteja alle kymmenen, kymmeniä vai satoja tai enemmän?


      • Anonyymi
        Anonyymi kirjoitti:

        Kaavassa annettu teksti pitäisi saada toiseen soluun, mahdollisia sijainteja on useita, ja sijainti määriteltäisiin kaavassa muiden tekijöiden perusteella.

        Tavalliseen moduliin tulee tyhmä funktio PR. Sen ensimmäisenä parametrina on lause, jonka tulos on tarkoitus "tulostaa" soluun, jonka sijainti (rivi ja sarake) ilmoitetaan kahdella seuraavalla. Solussa, jossa sitä käytetään ei saa käyttää muita funktioita paitsi sen parametreissa. Kahdessa viimeisessä parametrissa ei saa olla merkkejä, jonka VBA tulkitsee pilkuksi, koska pilkulla erotetut osat tulkitaan eri parametreiksi. Huomaa, esim. desimaalipilkku on VBA:lle piste, mutta parametrejä erottava puolipiste on pilkku.

        Function PR(printattava, r, c)
            If IsEmpty(printattava) Then
                PR = ""
            Else
                PR = printattava
            End If
        End Function



        Ko. sivun moduliin tulee funktio, jonka Excel ajaa aina kun jokin sivulla muuttuu. Se tutkii annetulta alueelta soluja, joissa on ym. funktio PR, ja selvittää siinä annetun soluviittauksen. Tähän soluun kirjoitetaan viittaus kaavan PR sisältävään soluun.

        Private Sub Worksheet_Change(ByVal Target As Range)

        On Error GoTo err:
            Application.EnableEvents = False
            
            For Each solu In Range("A1:H10") ' tutkittava alue
                sisältö = UCase(solu.Formula)
                If Left(sisältö, 4) = "=PR(" Then
                    sisältö = Left(sisältö, Len(sisältö) - 1)
                    s = Split(sisältö, ",")
                    r = Evaluate(s(UBound(s) - 1))
                    c = Evaluate(s((UBound(s))))
                    Cells(r, c).Formula = "=" & solu.Address
                End If
            Next solu

        err:
            Application.EnableEvents = True
        End Sub


      • Anonyymi
        Anonyymi kirjoitti:

        Tavalliseen moduliin tulee tyhmä funktio PR. Sen ensimmäisenä parametrina on lause, jonka tulos on tarkoitus "tulostaa" soluun, jonka sijainti (rivi ja sarake) ilmoitetaan kahdella seuraavalla. Solussa, jossa sitä käytetään ei saa käyttää muita funktioita paitsi sen parametreissa. Kahdessa viimeisessä parametrissa ei saa olla merkkejä, jonka VBA tulkitsee pilkuksi, koska pilkulla erotetut osat tulkitaan eri parametreiksi. Huomaa, esim. desimaalipilkku on VBA:lle piste, mutta parametrejä erottava puolipiste on pilkku.

        Function PR(printattava, r, c)
            If IsEmpty(printattava) Then
                PR = ""
            Else
                PR = printattava
            End If
        End Function



        Ko. sivun moduliin tulee funktio, jonka Excel ajaa aina kun jokin sivulla muuttuu. Se tutkii annetulta alueelta soluja, joissa on ym. funktio PR, ja selvittää siinä annetun soluviittauksen. Tähän soluun kirjoitetaan viittaus kaavan PR sisältävään soluun.

        Private Sub Worksheet_Change(ByVal Target As Range)

        On Error GoTo err:
            Application.EnableEvents = False
            
            For Each solu In Range("A1:H10") ' tutkittava alue
                sisältö = UCase(solu.Formula)
                If Left(sisältö, 4) = "=PR(" Then
                    sisältö = Left(sisältö, Len(sisältö) - 1)
                    s = Split(sisältö, ",")
                    r = Evaluate(s(UBound(s) - 1))
                    c = Evaluate(s((UBound(s))))
                    Cells(r, c).Formula = "=" & solu.Address
                End If
            Next solu

        err:
            Application.EnableEvents = True
        End Sub

        Selvennyksenä siis: kirjoitetaan makroon oma uusi funktio (ehdotettu nimi PR), joka kirjoittaa toiseen soluun mitä haluat, annettujen parametrien mukaan.

        Tuo rivin ja sarakkeen ilmoittaminen ei muuten ole välttämätöntä jos sijainti määräytyy jollain logiikalla annetusta arvosta. Jos siis esimerkiksi solu, johon syötät printattavan arvon on A1, ja se printataan soluun B1 jos arvo on < 1, soluun B2 jos arvo on < 2, soluun B3 jos arvo on < 4, jne. Tuolloin voit kirjoittaa tuon sijainnin määräytymisen mukaan siihen makroon, eikä sitä tarvitse erikseen poimia muista soluista.

        Tuon selkeämpiä ohjeita on hankala antaa tuntematta tarkemmin tapausta, johon yrität tuota käyttää.


      • Anonyymi
        Anonyymi kirjoitti:

        Selvennyksenä siis: kirjoitetaan makroon oma uusi funktio (ehdotettu nimi PR), joka kirjoittaa toiseen soluun mitä haluat, annettujen parametrien mukaan.

        Tuo rivin ja sarakkeen ilmoittaminen ei muuten ole välttämätöntä jos sijainti määräytyy jollain logiikalla annetusta arvosta. Jos siis esimerkiksi solu, johon syötät printattavan arvon on A1, ja se printataan soluun B1 jos arvo on < 1, soluun B2 jos arvo on < 2, soluun B3 jos arvo on < 4, jne. Tuolloin voit kirjoittaa tuon sijainnin määräytymisen mukaan siihen makroon, eikä sitä tarvitse erikseen poimia muista soluista.

        Tuon selkeämpiä ohjeita on hankala antaa tuntematta tarkemmin tapausta, johon yrität tuota käyttää.

        "Tuo rivin ja sarakkeen ilmoittaminen ei muuten ole välttämätöntä jos sijainti määräytyy jollain logiikalla annetusta arvosta. "

        Toki noinkin, mutta vaatii toisen ohjelman, eikä vastaa kysyjän ongemaa.


      • Anonyymi
        Anonyymi kirjoitti:

        "Tuo rivin ja sarakkeen ilmoittaminen ei muuten ole välttämätöntä jos sijainti määräytyy jollain logiikalla annetusta arvosta. "

        Toki noinkin, mutta vaatii toisen ohjelman, eikä vastaa kysyjän ongemaa.

        Ei vaadi toista ohjelmaa, vaan sen voi kirjoittaa mukaan samaan PR-funktioon.

        Ja koska kysyjä ei kertonut oikeastaan mitään konkreettista ongelmastaan, on mahdotonta sanoa kumpi tapa vastaa hänen ongelmaansa paremmin.


      • Anonyymi
        Anonyymi kirjoitti:

        Ei vaadi toista ohjelmaa, vaan sen voi kirjoittaa mukaan samaan PR-funktioon.

        Ja koska kysyjä ei kertonut oikeastaan mitään konkreettista ongelmastaan, on mahdotonta sanoa kumpi tapa vastaa hänen ongelmaansa paremmin.

        Tuo funktio näyttää tekevän kohdesoluun solulinkin funktion omasta solusta.
        Aina ei ole kuitenkaan toivottavaa että kun uusi kohdesolu päivittyy, niin entiseen kohdesoluun jää se solulinkki (ja päivittyy samaksi kuin se uusi teksti). Pitäisikö vain yhdessä solussa kerrallaan olla se annettu teksti?


      • Anonyymi
        Anonyymi kirjoitti:

        Tuo funktio näyttää tekevän kohdesoluun solulinkin funktion omasta solusta.
        Aina ei ole kuitenkaan toivottavaa että kun uusi kohdesolu päivittyy, niin entiseen kohdesoluun jää se solulinkki (ja päivittyy samaksi kuin se uusi teksti). Pitäisikö vain yhdessä solussa kerrallaan olla se annettu teksti?

        Muuta rivi:
        Cells(r, c).Formula = "=" & solu.Address
        Tällaiseksi:
        Cells(r, c) = solu


      • Anonyymi
        Anonyymi kirjoitti:

        Muuta rivi:
        Cells(r, c).Formula = "=" & solu.Address
        Tällaiseksi:
        Cells(r, c) = solu

        Nyt toimii siten että kun erikseen tyhjentää ensin sen entisen tekstin, ennen uuden sijainnin antamista. Ei häviä automaattisesti.


      • Anonyymi
        Anonyymi kirjoitti:

        Nyt toimii siten että kun erikseen tyhjentää ensin sen entisen tekstin, ennen uuden sijainnin antamista. Ei häviä automaattisesti.

        Mikään printti ei muutu tai häviä automaattiseti. On printattava uudelleen.


      • Anonyymi
        Anonyymi kirjoitti:

        Mikään printti ei muutu tai häviä automaattiseti. On printattava uudelleen.

        Oletko kuullut sellaisesta jutusta kuin "automaattinen tietojenkäsittely" (ATK)?


      • Anonyymi
        Anonyymi kirjoitti:

        Oletko kuullut sellaisesta jutusta kuin "automaattinen tietojenkäsittely" (ATK)?

        Vaikka kuinka haluaisit kutsua sitä automaattiseksi, sinun täytyy silti kertoa tietokoneelle mitä haluat sen tekevän. Jos funktioon ei ole kirjoitettu palaa, joka tyhjentää sen mitä haluat, niin ei Excel sitä mistään voi arvata.


      • Anonyymi
        Anonyymi kirjoitti:

        Oletko kuullut sellaisesta jutusta kuin "automaattinen tietojenkäsittely" (ATK)?

        Excelissä ei ole ajatustenlukuominaisuutta. Jos solu halutaankin tyhjäksi, se on tehtävä erikseen:

        Kun jossain solussa kaava =PR("huuhaa" & A1; 1; 2) ja solussa A1 on 4, soluun B1 tulee huuhaa4
        Kaavalla =PR("";1,2) solu B1 tyhjenee

        Tehtävä oli, että kaavassa annettu teksti pitäisi saada toiseen soluun. Jos tehtävä olisi ollut jotenkin niin, että kaavassa annettava toiminnallisuus pitäisi saada toiseen soluun, makron pitää olla hiukan toisenlainen:

        Private Sub Worksheet_Change(ByVal Target As Range)

        On Error GoTo err:
            Application.EnableEvents = False
            
            For Each solu In Range("A1:H10") ' tutkittava alue
                If Left(UCase(solu.Formula), 4) = "=PR(" Then
                    sisältö = solu.Formula
                    sisältö = Left(solu.Formula, Len(sisältö) - 1)
                    s = Split(sisältö, ",")
                    r = Evaluate(s(UBound(s) - 1))
                    c = Evaluate(s((UBound(s))))
                    
                    Cells(r, c).Formula = WorksheetFunction.Substitute(s(0), "PR(", "")
                    
                End If
            Next solu

        err:
            Application.EnableEvents = True
        End Sub


      • Anonyymi
        Anonyymi kirjoitti:

        Excelissä ei ole ajatustenlukuominaisuutta. Jos solu halutaankin tyhjäksi, se on tehtävä erikseen:

        Kun jossain solussa kaava =PR("huuhaa" & A1; 1; 2) ja solussa A1 on 4, soluun B1 tulee huuhaa4
        Kaavalla =PR("";1,2) solu B1 tyhjenee

        Tehtävä oli, että kaavassa annettu teksti pitäisi saada toiseen soluun. Jos tehtävä olisi ollut jotenkin niin, että kaavassa annettava toiminnallisuus pitäisi saada toiseen soluun, makron pitää olla hiukan toisenlainen:

        Private Sub Worksheet_Change(ByVal Target As Range)

        On Error GoTo err:
            Application.EnableEvents = False
            
            For Each solu In Range("A1:H10") ' tutkittava alue
                If Left(UCase(solu.Formula), 4) = "=PR(" Then
                    sisältö = solu.Formula
                    sisältö = Left(solu.Formula, Len(sisältö) - 1)
                    s = Split(sisältö, ",")
                    r = Evaluate(s(UBound(s) - 1))
                    c = Evaluate(s((UBound(s))))
                    
                    Cells(r, c).Formula = WorksheetFunction.Substitute(s(0), "PR(", "")
                    
                End If
            Next solu

        err:
            Application.EnableEvents = True
        End Sub

        No kuinka se edellisen solun tyhjennys ja uuden solun kirjoitus, saadaan tapahtumaan automaattisesti peräkkäin tällä funktiolla, kun rivi- tai saraketieto muuttuu talukossa?


      • Anonyymi
        Anonyymi kirjoitti:

        No kuinka se edellisen solun tyhjennys ja uuden solun kirjoitus, saadaan tapahtumaan automaattisesti peräkkäin tällä funktiolla, kun rivi- tai saraketieto muuttuu talukossa?

        Kirjoitat vain funktioon mukaan palan, jossa syötät siihen edelliseen soluun (tai kaikkiin muihin mahdollisiin soluihin, jos se tuntuu helpommalta) tyhjän arvon.


      • Anonyymi
        Anonyymi kirjoitti:

        Kirjoitat vain funktioon mukaan palan, jossa syötät siihen edelliseen soluun (tai kaikkiin muihin mahdollisiin soluihin, jos se tuntuu helpommalta) tyhjän arvon.

        Funktiossa pitäisi olla yksi parametri lisää, joka määrittelisi tyhjätäänkö edellinen sijainti vai ei.


      • Anonyymi
        Anonyymi kirjoitti:

        Funktiossa pitäisi olla yksi parametri lisää, joka määrittelisi tyhjätäänkö edellinen sijainti vai ei.

        Se olisi toki monikäyttöisempi tapa tehdä sama asia, mutta ilmeisesti kysyjä oli sitä mieltä, että edellinen sijainti täytyy tyhjätä, joten ei sitä välttämättä tarvitse erikseen parametrinä kysyä.


      • Anonyymi
        Anonyymi kirjoitti:

        Funktiossa pitäisi olla yksi parametri lisää, joka määrittelisi tyhjätäänkö edellinen sijainti vai ei.

        Tämä edellyttäisi, että edellisistä printtauksista pidetään kirjaa. Tämä tieto voisi olla kommentissa.

        Funtioon PR lisätään kolmas parametri, joka ilmaisee pyyhitäänkö vanha vai ei. Sekään ei tee mitään itse funktiossa.

        Function PR(printattava, r, c, pyyhitään)

        Muutoksia valvova rutiini lukee kolmannen parametrin. Jos se antaa luvan ja jos tieto vanhasta oli talletettu kommentiin, kommentissa kerrottu solu tyhjennetään paitsi jos kommentti oli sopimaton.

        Private Sub Worksheet_Change(ByVal Target As Range)

        On Error GoTo err:
            Application.EnableEvents = False
            
            For Each solu In Range("A1:H10") ' tutkittava alue
                If Left(UCase(solu.Formula), 4) = "=PR(" Then
                
                    sisältö = solu.Formula
                    sisältö = Left(solu.Formula, Len(sisältö) - 1)
                    s = Split(sisältö, ",")
                    r = Evaluate(s(UBound(s) - 2))
                    c = Evaluate(s(UBound(s) - 1))
                    If Evaluate(s(UBound(s))) Then ' pyyhitään
                        If solu.Comment Is Nothing Then
                            solu.AddComment r & " " & c
                        Else
                            vanha = Split(solu.Comment.Text, " ")
        On Error Resume Next
                            Cells(CInt(vanha(0)), CInt(vanha(1))) = ""
        On Error GoTo err:
                            solu.Comment.Text r & " " & c
                        End If
                        solu.Comment.Shape.TextFrame.AutoSize = True

                    End If
                    
                    Cells(r, c).Formula = WorksheetFunction.Substitute(s(0), "PR(", "")
                    
                End If
            Next solu

        err:
            Application.EnableEvents = True

        End Sub


      • Anonyymi
        Anonyymi kirjoitti:

        Se olisi toki monikäyttöisempi tapa tehdä sama asia, mutta ilmeisesti kysyjä oli sitä mieltä, että edellinen sijainti täytyy tyhjätä, joten ei sitä välttämättä tarvitse erikseen parametrinä kysyä.

        Edellisen solun tyhjennys ei varmaan ole tällä funktiolla mahdollista, koska se ei varsinaisesti kirjoita sitä tekstiä soluun, vaan tuottaa sinne kohteeseen soluosoitteen omasta sijaintisolustaan.
        Se teksti siis tuotetaan sinne funktion omaan sijaintisoluun.


      • Anonyymi
        Anonyymi kirjoitti:

        Tämä edellyttäisi, että edellisistä printtauksista pidetään kirjaa. Tämä tieto voisi olla kommentissa.

        Funtioon PR lisätään kolmas parametri, joka ilmaisee pyyhitäänkö vanha vai ei. Sekään ei tee mitään itse funktiossa.

        Function PR(printattava, r, c, pyyhitään)

        Muutoksia valvova rutiini lukee kolmannen parametrin. Jos se antaa luvan ja jos tieto vanhasta oli talletettu kommentiin, kommentissa kerrottu solu tyhjennetään paitsi jos kommentti oli sopimaton.

        Private Sub Worksheet_Change(ByVal Target As Range)

        On Error GoTo err:
            Application.EnableEvents = False
            
            For Each solu In Range("A1:H10") ' tutkittava alue
                If Left(UCase(solu.Formula), 4) = "=PR(" Then
                
                    sisältö = solu.Formula
                    sisältö = Left(solu.Formula, Len(sisältö) - 1)
                    s = Split(sisältö, ",")
                    r = Evaluate(s(UBound(s) - 2))
                    c = Evaluate(s(UBound(s) - 1))
                    If Evaluate(s(UBound(s))) Then ' pyyhitään
                        If solu.Comment Is Nothing Then
                            solu.AddComment r & " " & c
                        Else
                            vanha = Split(solu.Comment.Text, " ")
        On Error Resume Next
                            Cells(CInt(vanha(0)), CInt(vanha(1))) = ""
        On Error GoTo err:
                            solu.Comment.Text r & " " & c
                        End If
                        solu.Comment.Shape.TextFrame.AutoSize = True

                    End If
                    
                    Cells(r, c).Formula = WorksheetFunction.Substitute(s(0), "PR(", "")
                    
                End If
            Next solu

        err:
            Application.EnableEvents = True

        End Sub

        Nyt ei printtaa siihen kohdesoluun mitään, mutta kommentin lisäys toimii kyllä.
        Miten siellä modulissa piti funktiomäärittelyä muokata?


      • Anonyymi
        Anonyymi kirjoitti:

        Nyt ei printtaa siihen kohdesoluun mitään, mutta kommentin lisäys toimii kyllä.
        Miten siellä modulissa piti funktiomäärittelyä muokata?

        Nyt sain toimimaan.
        Oli funktion nimi muuttunut pienillä kirjaimilla "pr" eikä "PR", funktion uudelleen kirjoittamalla se jäi isoin kirjaimin. Tällä alkoi printtaamaan kohdesoluihin toimimaan.
        Entisten tyhjennys alkoi toimia sillä, kun parametrit antoi suoraan funktioon, eikä tuonut parametreja soluviittausten kautta toisaalta taulukosta??


      • Anonyymi
        Anonyymi kirjoitti:

        Nyt sain toimimaan.
        Oli funktion nimi muuttunut pienillä kirjaimilla "pr" eikä "PR", funktion uudelleen kirjoittamalla se jäi isoin kirjaimin. Tällä alkoi printtaamaan kohdesoluihin toimimaan.
        Entisten tyhjennys alkoi toimia sillä, kun parametrit antoi suoraan funktioon, eikä tuonut parametreja soluviittausten kautta toisaalta taulukosta??

        Eikä kun, palautin funktioon yksitellen takaisin kaikki soluviittaukset parametreihin, nyt se toimii myös niidenkin kanssa. Jotain ihmejuttua tässä!


      • Anonyymi
        Anonyymi kirjoitti:

        Eikä kun, palautin funktioon yksitellen takaisin kaikki soluviittaukset parametreihin, nyt se toimii myös niidenkin kanssa. Jotain ihmejuttua tässä!

        ”My code doesn’t work and I don’t know why.”
        5 min myöhemmin.
        ”My code works and I don’t know why.”

        Nämä on niitä tietotekniikan ihmeitä. Periaatteessa tietokone on siitä hauska kaveri, että se tekee kirjaimellisesti täsmälleen sen mitä käsket sen tehdä, mutta toisaalta ihminen harvemmin osaa käskeä sitä, mitä haluaisi tapahtuvan.


      • Anonyymi
        Anonyymi kirjoitti:

        ”My code doesn’t work and I don’t know why.”
        5 min myöhemmin.
        ”My code works and I don’t know why.”

        Nämä on niitä tietotekniikan ihmeitä. Periaatteessa tietokone on siitä hauska kaveri, että se tekee kirjaimellisesti täsmälleen sen mitä käsket sen tehdä, mutta toisaalta ihminen harvemmin osaa käskeä sitä, mitä haluaisi tapahtuvan.

        Kokeilin vielä tehdä tuota uudelleen. Nyt en saanut enää millään taulukkoa toimimaan, ilmeisesti tähtien asennot eivä olleet nyt suotuisat. 😄


      • Anonyymi
        Anonyymi kirjoitti:

        Nyt sain toimimaan.
        Oli funktion nimi muuttunut pienillä kirjaimilla "pr" eikä "PR", funktion uudelleen kirjoittamalla se jäi isoin kirjaimin. Tällä alkoi printtaamaan kohdesoluihin toimimaan.
        Entisten tyhjennys alkoi toimia sillä, kun parametrit antoi suoraan funktioon, eikä tuonut parametreja soluviittausten kautta toisaalta taulukosta??

        Vika oli jossanin muualla. Ei ole väliä, miten PR kirjoitettu ja parametrit voi antaa soluviittauksilla tai kaavoilla.


      • Anonyymi
        Anonyymi kirjoitti:

        Vika oli jossanin muualla. Ei ole väliä, miten PR kirjoitettu ja parametrit voi antaa soluviittauksilla tai kaavoilla.

        Vika saattaa olla muualla, kuitenkin on niin että silloin kun funktion nimi muuttuu pienille kirjaimille, silloin ei taulukkokaan toimi.
        Satunnaisesti funktion nimen saa jäämään isoille kirjaimille. Siis funktion kirjoitus etenee normaalisti loppuun asti, mutta kun homman kuittaa lopuksi enterillä, funktionimi muuttuu pienin kirjaimin kirjoitetuksi.
        Esimerkiksi noin A1 soluun kirjoitettu funktio, =pr(C1;D1;E1;F1) enterin painamisen jälkeen.
        Yleensähän tapahtuu juuri päinvastoin, pienillä kirjoitetut nimet muuttuvat isoilla kirjoitetuiksi enterillä kuitattaessa.


      • Anonyymi
        Anonyymi kirjoitti:

        Vika saattaa olla muualla, kuitenkin on niin että silloin kun funktion nimi muuttuu pienille kirjaimille, silloin ei taulukkokaan toimi.
        Satunnaisesti funktion nimen saa jäämään isoille kirjaimille. Siis funktion kirjoitus etenee normaalisti loppuun asti, mutta kun homman kuittaa lopuksi enterillä, funktionimi muuttuu pienin kirjaimin kirjoitetuksi.
        Esimerkiksi noin A1 soluun kirjoitettu funktio, =pr(C1;D1;E1;F1) enterin painamisen jälkeen.
        Yleensähän tapahtuu juuri päinvastoin, pienillä kirjoitetut nimet muuttuvat isoilla kirjoitetuiksi enterillä kuitattaessa.

        En tiedä, millä logiikalla Excel tuossa toimii.Myös minulla kirjoitettu funkton nimi muuttuu aina isolle riippumatta siitä, miten se on VBAssa kirjoitettu. Aina ei ole ollut noin.

        Oletko kokeillut laittaa breakpointia makron alkuun, ajaa sitä askeltamalla ja katsoa, miten se toimii?


      • Anonyymi
        Anonyymi kirjoitti:

        En tiedä, millä logiikalla Excel tuossa toimii.Myös minulla kirjoitettu funkton nimi muuttuu aina isolle riippumatta siitä, miten se on VBAssa kirjoitettu. Aina ei ole ollut noin.

        Oletko kokeillut laittaa breakpointia makron alkuun, ajaa sitä askeltamalla ja katsoa, miten se toimii?

        Niin tässä minulla se funktion nimi muuttuu taulukon soluun kirjoitettaessa, VBA:ssa pysyy se mikä on kirjoitettu.
        Makro kyllä askeltaa loppuun asti parametreja muutettaessa, pari pientä hyppyä on matkalla. Jos pyyhintäparametri ei ole päällä, on ensimmäinen hyppy pitempi.
        Yli hypätyt rivit ovat:
        solu.AddComment r & " " & c
        ja
        End If
        Next solu


      • Anonyymi
        Anonyymi kirjoitti:

        Niin tässä minulla se funktion nimi muuttuu taulukon soluun kirjoitettaessa, VBA:ssa pysyy se mikä on kirjoitettu.
        Makro kyllä askeltaa loppuun asti parametreja muutettaessa, pari pientä hyppyä on matkalla. Jos pyyhintäparametri ei ole päällä, on ensimmäinen hyppy pitempi.
        Yli hypätyt rivit ovat:
        solu.AddComment r & " " & c
        ja
        End If
        Next solu

        Kokeilin avata testitaulukon myös Libreofficella. Siinä näkyi (muuttui) funktion nimi isoilla kirjaimilla ja taulukko myös toimi melkein täydellisesti. Ainostaan pyyhintäparametrilla ei ollut vaikutusta, pyyhintä oli päällä pysyvästi.


    • Anonyymi

      Olisi varmasti paras jos te kaikki alkaisitte vaikka harrastaa pitsin nypläystä.
      Ja vain sitä.

      • Anonyymi

        Kun saisi vielä windowsin toimiin tulostimen kanssa.


      • Anonyymi
        Anonyymi kirjoitti:

        Kun saisi vielä windowsin toimiin tulostimen kanssa.

        Kunpa olisi viulu...
        -
        - myöhemmin...
        -
        Osaisipa soittaa...


      • Anonyymi
        Anonyymi kirjoitti:

        Kun saisi vielä windowsin toimiin tulostimen kanssa.

        Hanki tällä vuosikymmenellä, tai edes viime vuosikymmenen loppupuolella, valmistettu tulostin, niin hyvin toimii.

        Ei se ole mikään vika käyttöjärjestelmässä, ettei yhteensopivuutta ikivanhojen laitteiden kanssa jatketa loputtomiin.

        Minun kokemukseni tulostimien käytöstä Windowsilla on tähän asti ollut miellyttävän yksinkertainen:
        1. törkkää tulostimen USB-piuha koneeseen kiinni
        2. odota minuutti, kun kone asentaa ajureita, vastaavasti kuin kaikkien muidenkin laitteiden kanssa
        3. tulosta mitä haluat.

        En ole kokeillut tehdä samaa Linuxilla tai Macillä, mutta toivoisin, ettei sitä ole tehty niidenkään osalta tuon monimutkaisemmaksi.


      • Anonyymi

        W10 hajottaa dvd asemia.. usb tikkuja,, ssd asemia,, bioksia..


    Ketjusta on poistettu 6 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Naiset miltä kiihottuminen teissä tuntuu

      Kun miehellä tulee seisokki ja ja sellainen kihmelöinti sinne niin mitä naisessa köy? :)
      Sinkut
      34
      2594
    2. Haistoin ensin tuoksusi

      Käännyin katsomaan oletko se todellakin sinä , otin askeleen taakse ja jähmetyin. Moikattiin naamat peruslukemilla. Tu
      Ikävä
      8
      1942
    3. Olet sä kyllä

      ihme nainen. Mikä on tuo sun viehätysvoiman salaisuus?
      Ikävä
      17
      1413
    4. Tähdet, tähdet -tippuja Kake Randelin tilittää avoimena: "Tämä on viihdyttämistä, eikä sitä..."

      ISO kiitos Kake lauluistasi!Nyt ei vaan studioyleisö lämmennyt. Olet legenda! Lue Kake Randelinin mietteet: https://w
      Tv-sarjat
      21
      1285
    5. Hiljaiset hyvästit?

      Vai mikä on :( oonko sanonut jotain vai mitä?
      Ikävä
      8
      1280
    6. Teuvo Hakkaraisesta tulee eurovaalien ääniharava

      Persuissa harmitellaan omaa tyhmyyttä
      Maailman menoa
      17
      1201
    7. Miksi kohtelit minua kuin tyhmää koiraa?

      Rakastin sinua mutta kohtelit huonosti. Tuntuu ala-arvoiselta. Miksi kuvittelin että joku kohtelisi minua reilusti. Hais
      Särkynyt sydän
      5
      1121
    8. Turha mun on yrittää saada yhteyttä

      Oot mikä oot ja se siitä
      Suhteet
      7
      1065
    9. Näkymätöntä porukkaa vai ei

      Mon asuu yksin. Mitas mieltä ootte ?
      Ikävä
      6
      1034
    10. 17
      1025
    Aihe