Kellonajan muotoilusta

Joudun taas turvautumaan apuunne Excel-nerot eli luin jonkun aikaisemman kysymyksen vastauksesta, että Aika-muotoiltuun (00:00) -sarakkeeseen saisi tuollaisen aikamerkinnän eli kaksoispisteen kirjoittamatta sitä, kun laittaa taulukonvalitsimen koodiin alla olevan tekstin.

Jostain syystä en saa tuota toimimaan, vaan syöttäessäni kellonajan, esim. 1235, kyseiseen soluun tulee 00:00.

Itse en ymmärrä tuosta koodisysteemistä vielä mitään.

Aikaisemmasta kysymyksestä kopioitu koodi:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim r As Range, h As Integer
Set r = Intersect(Target, Range("E9:H22"))
If r Is Nothing Then Exit Sub
Set r = r.Cells(1)
If IsNumeric(r) Then
With r
If .Value >= 100 Then h = Left(.Value, Len(.Value) - 2) Else h = 0
Application.EnableEvents = False
.Value = h / 24 Right(.Value, 2) / 1440
.NumberFormat = "[hh]:mm"
Application.EnableEvents = True
End With
End If
End Sub
281594
Äänestä

Muut lukivat myös

Vastaukset 28

Vanhimmat

Kopioit vaan koodin sinne taulukon moduuliin, niin toimii.
Toimii vain solualueella E9:H22, ellet muuta sitä.

Äänestä
  • Kiitos, sitä vähän epäilinkin, että en itse tajua tarpeeksi hyvin tuota koodia, kun en siitä ymmärrä mitään.

    Tarvitsisin tuon aikamuotoilun sarakkeeseen B, joten miten se pitäisi merkitä?

    Entä silloin, jos aikamuotoilu tarvitaan koko taulukkoon?

    Tai jos aikamuotoilu tarvitaan esim. sarakkeisiin B, E ja H?

    Kiitos, jos jaksat vääntää taas rautalankaa :)

    Äänestä

  • sanna kirjoitti:

    Kiitos, sitä vähän epäilinkin, että en itse tajua tarpeeksi hyvin tuota koodia, kun en siitä ymmärrä mitään.

    Tarvitsisin tuon aikamuotoilun sarakkeeseen B, joten miten se pitäisi merkitä?

    Entä silloin, jos aikamuotoilu tarvitaan koko taulukkoon?

    Tai jos aikamuotoilu tarvitaan esim. sarakkeisiin B, E ja H?

    Kiitos, jos jaksat vääntää taas rautalankaa :)

    En ole VBA:ssa häävinen ihtekkään, mutta koitappa näin.
    Muuta koodin tekstiä.
    Set r = Intersect(Target, Range("E9:H22"))

    kun haluat B-sarakkeeseen.
    Set r = Intersect(Target, Range("B:B"))

    kun koko taulukkoon.
    Set r = Intersect(Target, Cells)

    kun sarakkeisiin B,E ja H.
    Set r = Intersect(Target, Range("B:B,E:E,H:H"))

    Äänestä

  • paavali kirjoitti:

    En ole VBA:ssa häävinen ihtekkään, mutta koitappa näin.
    Muuta koodin tekstiä.
    Set r = Intersect(Target, Range("E9:H22"))

    kun haluat B-sarakkeeseen.
    Set r = Intersect(Target, Range("B:B"))

    kun koko taulukkoon.
    Set r = Intersect(Target, Cells)

    kun sarakkeisiin B,E ja H.
    Set r = Intersect(Target, Range("B:B,E:E,H:H"))

    Kiitos avustasi. Alkaa vähän tuntua jo sille, että joudun (?) kohta luovuttamaan, kun tämä ei tunnu onnistuvan enkä ymmärrä missä teen virheen.

    Nyt siinä koodissa on alla oleva teksti kopioituna eli kellonaikamuotoilun olisi tarkoitus tulla B-sarakkeeseen. B-sarakkeesta tuntuu myös häviävän jonnekin varsinainen aikamuotoilu 13:30 :

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim r As Range, h As Integer
    Set r = Intersect(Target, Range("B:B"))
    If r Is Nothing Then Exit Sub
    Set r = r.Cells(1)
    If IsNumeric(r) Then
    With r
    If .Value >= 100 Then h = Left(.Value, Len(.Value) - 2) Else h = 0
    Application.EnableEvents = False
    .Value = h / 24 Right(.Value, 2) / 1440
    .NumberFormat = "[hh]:mm"
    Application.EnableEvents = True
    End With
    End If
    End Sub

    Äsken taas yrittäessäni kirjoittaa päivämäärää, tuli näytölle ruutu, missä oli nuo alla olevat End, Debug ja Help –vaihtoehdot ja kun klikkasin Debug, tuli näytölle koodi ja siinä oli korostettu keltaisella rivi ” .Value = h / 24 Right(.Value, 2) / 1440 ” Sulkiessani koodi-ikkunaa tuli ilmoitus ”jonkun” lopettamisesta. Nyt en valitettavasti muista mistä oli kyse eikä sama toistu enää uudella kellonajalla, vaan nyt kellonajat ovat taas tuota 00:00, vaikka soluun kirjoittaisi 1235.

    Ihan alussa tuo kellonajan kirjoittaminen onnistui pariin soluun, mutta kun poistin yhden kellonajan deletellä, näytölle tuli ruutu, missä luki:

    ”Microsoft Visual Basic
    Runtime error ’13’
    Type mismuch
    End Debug Help”

    Sen jälkeen ei ole enää onnistunutkaan, vaan soluun tulee aina 00:00. Kaksoispisteen kirjoittaminen jokaiseen ruutuun kyllä onnistuu, mutta kun tuo kaksoispisteen ’automatisointi’ olisi niin mukava, kun se helpottaisi tätä työmäärää.

    Teenkö mahdollisesti jonkun perusteellisen virheen esim. siinä, että tähän asti olen laittanut kaksoispisteen soluihin kirjoittamalla? Vai eikö tuota koodia voi lisätä kesken kaiken jo valmiiseen taulukkoon? Vai missä voisi mättää??

    Äänestä

  • sanna kirjoitti:

    Kiitos avustasi. Alkaa vähän tuntua jo sille, että joudun (?) kohta luovuttamaan, kun tämä ei tunnu onnistuvan enkä ymmärrä missä teen virheen.

    Nyt siinä koodissa on alla oleva teksti kopioituna eli kellonaikamuotoilun olisi tarkoitus tulla B-sarakkeeseen. B-sarakkeesta tuntuu myös häviävän jonnekin varsinainen aikamuotoilu 13:30 :

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim r As Range, h As Integer
    Set r = Intersect(Target, Range("B:B"))
    If r Is Nothing Then Exit Sub
    Set r = r.Cells(1)
    If IsNumeric(r) Then
    With r
    If .Value >= 100 Then h = Left(.Value, Len(.Value) - 2) Else h = 0
    Application.EnableEvents = False
    .Value = h / 24 Right(.Value, 2) / 1440
    .NumberFormat = "[hh]:mm"
    Application.EnableEvents = True
    End With
    End If
    End Sub

    Äsken taas yrittäessäni kirjoittaa päivämäärää, tuli näytölle ruutu, missä oli nuo alla olevat End, Debug ja Help –vaihtoehdot ja kun klikkasin Debug, tuli näytölle koodi ja siinä oli korostettu keltaisella rivi ” .Value = h / 24 Right(.Value, 2) / 1440 ” Sulkiessani koodi-ikkunaa tuli ilmoitus ”jonkun” lopettamisesta. Nyt en valitettavasti muista mistä oli kyse eikä sama toistu enää uudella kellonajalla, vaan nyt kellonajat ovat taas tuota 00:00, vaikka soluun kirjoittaisi 1235.

    Ihan alussa tuo kellonajan kirjoittaminen onnistui pariin soluun, mutta kun poistin yhden kellonajan deletellä, näytölle tuli ruutu, missä luki:

    ”Microsoft Visual Basic
    Runtime error ’13’
    Type mismuch
    End Debug Help”

    Sen jälkeen ei ole enää onnistunutkaan, vaan soluun tulee aina 00:00. Kaksoispisteen kirjoittaminen jokaiseen ruutuun kyllä onnistuu, mutta kun tuo kaksoispisteen ’automatisointi’ olisi niin mukava, kun se helpottaisi tätä työmäärää.

    Teenkö mahdollisesti jonkun perusteellisen virheen esim. siinä, että tähän asti olen laittanut kaksoispisteen soluihin kirjoittamalla? Vai eikö tuota koodia voi lisätä kesken kaiken jo valmiiseen taulukkoon? Vai missä voisi mättää??

    aiheesta oli lisää

    http://keskustelu.suomi24.fi/show.fcgi?category=108&conference=4500000000000708&posting=22000000010199382

    koodi korjattuna B -sarakkeeseen.Siinä oli bugi, joka johtui juuri deletoinnista ja tällöin h:n arvoksi tuli nolla. Asia siis korjattu allaolevassa koodissa

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim r As Range, h As Integer
    Set r = Intersect(Target, Range("B:B"))
    If r Is Nothing Then Exit Sub
    Set r = r.Cells(1)
    If IsNumeric(r) Then
    With r
    If .Value >= 100 Then h = Left(.Value, Len(.Value) - 2) Else h = 0
    Application.EnableEvents = False
    If h = 0 Then
    Application.EnableEvents = True
    Exit Sub
    End If
    .Value = h / 24 Right(.Value, 2) / 1440
    .NumberFormat = "[hh]:mm"
    Application.EnableEvents = True
    End With
    End If
    End Sub

    Äänestä

  • Kunde kirjoitti:

    aiheesta oli lisää

    http://keskustelu.suomi24.fi/show.fcgi?category=108&conference=4500000000000708&posting=22000000010199382

    koodi korjattuna B -sarakkeeseen.Siinä oli bugi, joka johtui juuri deletoinnista ja tällöin h:n arvoksi tuli nolla. Asia siis korjattu allaolevassa koodissa

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim r As Range, h As Integer
    Set r = Intersect(Target, Range("B:B"))
    If r Is Nothing Then Exit Sub
    Set r = r.Cells(1)
    If IsNumeric(r) Then
    With r
    If .Value >= 100 Then h = Left(.Value, Len(.Value) - 2) Else h = 0
    Application.EnableEvents = False
    If h = 0 Then
    Application.EnableEvents = True
    Exit Sub
    End If
    .Value = h / 24 Right(.Value, 2) / 1440
    .NumberFormat = "[hh]:mm"
    Application.EnableEvents = True
    End With
    End If
    End Sub

    Kiitos, nyt toimii :) Kyllä te olette uskomattoman viisaita!!

    Mutta nyt tuli mieleen vielä yksi tyhmä kysymys eli tarkoittaako tuo 'deletointibugi'¨nyt sitä, että taulukosta ei saa poistaa yhtään kellonaikaa deletellä, ettei käy samalla tavalla?

    Äänestä

  • sanna kirjoitti:

    Kiitos, nyt toimii :) Kyllä te olette uskomattoman viisaita!!

    Mutta nyt tuli mieleen vielä yksi tyhmä kysymys eli tarkoittaako tuo 'deletointibugi'¨nyt sitä, että taulukosta ei saa poistaa yhtään kellonaikaa deletellä, ettei käy samalla tavalla?

    EI!!!
    bugi on nyt korjattu ja ohjelma toimii vaikka poistatkin tietoja deletellä.

    Äänestä

  • Kunde kirjoitti:

    EI!!!
    bugi on nyt korjattu ja ohjelma toimii vaikka poistatkin tietoja deletellä.

    Oikein paljon kiitoksia ystävällisistä neuvoista ja myös kärsivällisyydestänne!

    Äänestä

  • Kunde kirjoitti:

    aiheesta oli lisää

    http://keskustelu.suomi24.fi/show.fcgi?category=108&conference=4500000000000708&posting=22000000010199382

    koodi korjattuna B -sarakkeeseen.Siinä oli bugi, joka johtui juuri deletoinnista ja tällöin h:n arvoksi tuli nolla. Asia siis korjattu allaolevassa koodissa

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim r As Range, h As Integer
    Set r = Intersect(Target, Range("B:B"))
    If r Is Nothing Then Exit Sub
    Set r = r.Cells(1)
    If IsNumeric(r) Then
    With r
    If .Value >= 100 Then h = Left(.Value, Len(.Value) - 2) Else h = 0
    Application.EnableEvents = False
    If h = 0 Then
    Application.EnableEvents = True
    Exit Sub
    End If
    .Value = h / 24 Right(.Value, 2) / 1440
    .NumberFormat = "[hh]:mm"
    Application.EnableEvents = True
    End With
    End If
    End Sub

    No niin, meikäläinen yritti olla "fiksu" ja kokeili tällä kertaa automaattista pilkkusysteemiä ja laittoi tuohon kaavaan B-kirjainten väliin pilkun

    Set r = Intersect(Target, Range("B,B"))

    ja sain taas sen Debug-ikkunan eli en onnistunyt olemaan fiksu :(

    Voisiko joku fiksumpi kertoa ja neuvoa, onnistuuko sarakkeen muotoileminen niin, että pilkku tulisi automaattisesti esim. yhden tai kahden numeron päähän lopusta?

    Äänestä

  • sanna kirjoitti:

    No niin, meikäläinen yritti olla "fiksu" ja kokeili tällä kertaa automaattista pilkkusysteemiä ja laittoi tuohon kaavaan B-kirjainten väliin pilkun

    Set r = Intersect(Target, Range("B,B"))

    ja sain taas sen Debug-ikkunan eli en onnistunyt olemaan fiksu :(

    Voisiko joku fiksumpi kertoa ja neuvoa, onnistuuko sarakkeen muotoileminen niin, että pilkku tulisi automaattisesti esim. yhden tai kahden numeron päähän lopusta?

    Ei siinä kohtaan ole kaavaa vaan siinä on solualue.Ja kun panit pilkun niin niin tietenkin tulee virheilmoitus kun tuollaista aluetta ei ole olemassa.
    Jos 2 desimaalia haluat automaattisesti niin et tarvitse funktiota. Tee soluihin oma muotoilu 0"," 00 ja nyt soluissa automaattisesti pilkku ja sen jälkeen 2 desimaalia.Jos haluat 3 desimaalia niin muotoilu 0"," 000 jne.

    Äänestä

  • Kunde kirjoitti:

    Ei siinä kohtaan ole kaavaa vaan siinä on solualue.Ja kun panit pilkun niin niin tietenkin tulee virheilmoitus kun tuollaista aluetta ei ole olemassa.
    Jos 2 desimaalia haluat automaattisesti niin et tarvitse funktiota. Tee soluihin oma muotoilu 0"," 00 ja nyt soluissa automaattisesti pilkku ja sen jälkeen 2 desimaalia.Jos haluat 3 desimaalia niin muotoilu 0"," 000 jne.

    Paljon kiitoksia, nyt tuokin homma onnistui :)

    Äänestä

  • Kunde kirjoitti:

    aiheesta oli lisää

    http://keskustelu.suomi24.fi/show.fcgi?category=108&conference=4500000000000708&posting=22000000010199382

    koodi korjattuna B -sarakkeeseen.Siinä oli bugi, joka johtui juuri deletoinnista ja tällöin h:n arvoksi tuli nolla. Asia siis korjattu allaolevassa koodissa

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim r As Range, h As Integer
    Set r = Intersect(Target, Range("B:B"))
    If r Is Nothing Then Exit Sub
    Set r = r.Cells(1)
    If IsNumeric(r) Then
    With r
    If .Value >= 100 Then h = Left(.Value, Len(.Value) - 2) Else h = 0
    Application.EnableEvents = False
    If h = 0 Then
    Application.EnableEvents = True
    Exit Sub
    End If
    .Value = h / 24 Right(.Value, 2) / 1440
    .NumberFormat = "[hh]:mm"
    Application.EnableEvents = True
    End With
    End If
    End Sub

    Nyt tuli vaihteeksi ongelma tämän muotoilun kanssa, kun piti laittaa kellonajaksi 00:15, niin sarakkeeseen tuli 00:00 eli missä mahtaa tällä kertaa mättää?

    Kiitos, jos joku jaksaisi vielä... :)

    Ja se koodi on tässä:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim r As Range, h As Integer
    Set r = Intersect(Target, Range("B:B"))
    If r Is Nothing Then Exit Sub
    Set r = r.Cells(1)
    If IsNumeric(r) Then
    With r
    If .Value >= 100 Then h = Left(.Value, Len(.Value) - 2) Else h = 0
    Application.EnableEvents = False
    If h = 0 Then
    Application.EnableEvents = True
    Exit Sub
    End If
    .Value = h / 24 Right(.Value, 2) / 1440
    .NumberFormat = "[hh]:mm"
    Application.EnableEvents = True
    End With
    End If
    End Sub

    Äänestä

  • sanna kirjoitti:

    Nyt tuli vaihteeksi ongelma tämän muotoilun kanssa, kun piti laittaa kellonajaksi 00:15, niin sarakkeeseen tuli 00:00 eli missä mahtaa tällä kertaa mättää?

    Kiitos, jos joku jaksaisi vielä... :)

    Ja se koodi on tässä:

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim r As Range, h As Integer
    Set r = Intersect(Target, Range("B:B"))
    If r Is Nothing Then Exit Sub
    Set r = r.Cells(1)
    If IsNumeric(r) Then
    With r
    If .Value >= 100 Then h = Left(.Value, Len(.Value) - 2) Else h = 0
    Application.EnableEvents = False
    If h = 0 Then
    Application.EnableEvents = True
    Exit Sub
    End If
    .Value = h / 24 Right(.Value, 2) / 1440
    .NumberFormat = "[hh]:mm"
    Application.EnableEvents = True
    End With
    End If
    End Sub

    Nyt pitäisi toimia

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim r As Range, h As Integer
    On Error GoTo virhe
    Set r = Intersect(Target, Range("B:B"))
    If r Is Nothing Then Exit Sub
    Set r = r.Cells(1)
    If IsNumeric(r) Then
    Application.EnableEvents = False
    With r
    If IsEmpty(.Value) Then GoTo virhe
    If .Value >= 100 Then
    h = Left(.Value, Len(.Value) - 2)
    .Value = h / 24 Right(.Value, 2) / 1440
    Else

    .Value = Right(.Value, 2) / 1440
    End If
    .NumberFormat = "[hh]:mm"
    End With
    End If
    virhe:
    Application.EnableEvents = True
    End Sub

    Äänestä

  • Kunde kirjoitti:

    Nyt pitäisi toimia

    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim r As Range, h As Integer
    On Error GoTo virhe
    Set r = Intersect(Target, Range("B:B"))
    If r Is Nothing Then Exit Sub
    Set r = r.Cells(1)
    If IsNumeric(r) Then
    Application.EnableEvents = False
    With r
    If IsEmpty(.Value) Then GoTo virhe
    If .Value >= 100 Then
    h = Left(.Value, Len(.Value) - 2)
    .Value = h / 24 Right(.Value, 2) / 1440
    Else

    .Value = Right(.Value, 2) / 1440
    End If
    .NumberFormat = "[hh]:mm"
    End With
    End If
    virhe:
    Application.EnableEvents = True
    End Sub

    Kiitos oikein paljon!! Nyt toimii hyvin.

    Täytyy vaan edelleenkin ihmetellä, kuinka taitavia, avuliaita ja ystävällisiä ihmisiä täällä on, kun jaksavat tarvittaessa vääntää sitä kuuluisaa 'rautalankaa' päivästä toiseen - siis ainakin osa vastaajista :)

    Äänestä

  • Kunde kirjoitti:

    Ei siinä kohtaan ole kaavaa vaan siinä on solualue.Ja kun panit pilkun niin niin tietenkin tulee virheilmoitus kun tuollaista aluetta ei ole olemassa.
    Jos 2 desimaalia haluat automaattisesti niin et tarvitse funktiota. Tee soluihin oma muotoilu 0"," 00 ja nyt soluissa automaattisesti pilkku ja sen jälkeen 2 desimaalia.Jos haluat 3 desimaalia niin muotoilu 0"," 000 jne.

    Onko tosiaan niin, että samaan soluun ei voi laittaa sekä ehdollista muotoilua että tuota "pilkkumuotoilua"?

    Taulukossani oli jo kaksi ehdollista muotoilua niin, että solut muuttuvat sinisiksi yli 12 arvoilla ja punaisiksi alle 4 arvoilla ja nyt kun laitoin vielä tuon 0"," 00 -muotoilun, niin solut muuttuvat koko ajan sinisiksi eli näyttäisi sille, että ehdollisessa muotoilussa täyttyisi vain ehto nro 2.

    Tuo välilyönti jälkimmäisten "-merkkien jälkeen ei ilmeisesti ole tarpeen, koska silloin tulee myös lopulliseen arvoon välilyönti ja muotoilu näyttäisi toimivan ilman välilyöntiäkin?

    Äänestä

  • sanna kirjoitti:

    Onko tosiaan niin, että samaan soluun ei voi laittaa sekä ehdollista muotoilua että tuota "pilkkumuotoilua"?

    Taulukossani oli jo kaksi ehdollista muotoilua niin, että solut muuttuvat sinisiksi yli 12 arvoilla ja punaisiksi alle 4 arvoilla ja nyt kun laitoin vielä tuon 0"," 00 -muotoilun, niin solut muuttuvat koko ajan sinisiksi eli näyttäisi sille, että ehdollisessa muotoilussa täyttyisi vain ehto nro 2.

    Tuo välilyönti jälkimmäisten "-merkkien jälkeen ei ilmeisesti ole tarpeen, koska silloin tulee myös lopulliseen arvoon välilyönti ja muotoilu näyttäisi toimivan ilman välilyöntiäkin?

    Oma muotoilu 0","00 ei muuta solun arvoa.
    Jos kirjoitat soluun 1234 tulee näkyviin 12,34 mutta solun arvo on silti 1234.
    Ehdollinen muotoilu toimii kun panet ehdoiksi 400 ja 1200

    Äänestä

  • paavali kirjoitti:

    Oma muotoilu 0","00 ei muuta solun arvoa.
    Jos kirjoitat soluun 1234 tulee näkyviin 12,34 mutta solun arvo on silti 1234.
    Ehdollinen muotoilu toimii kun panet ehdoiksi 400 ja 1200

    Paljon kiitoksia, enpä olisi itse hoksannut tuollaista asiaa. Ihana tunne, nyt pitäisi taulukon toimia lähes täydellisesti ja kiitokset siitä 'täydellisyydestä' kuuluu teille :)

    Yhtä keskiarvojuttua vielä pähkäilen, katsotaan onnistunko siinä omin avuin...

    Äänestä

  • paavali kirjoitti:

    Oma muotoilu 0","00 ei muuta solun arvoa.
    Jos kirjoitat soluun 1234 tulee näkyviin 12,34 mutta solun arvo on silti 1234.
    Ehdollinen muotoilu toimii kun panet ehdoiksi 400 ja 1200

    Eipäs tullutkaan ihan vielä 'täydellistä' taulukkoa. Samaisessa taulukossa on nimittäin solussa K8 keskiarvo sarakkeen C pilkulla olevista lukuarvoista, joissa on oma muotoilu 0","0 . Nyt keskiarvot on kymmenkertaisia.

    Olen yrittänyt tämän päivän pähkäillä ja kokeilla erilaisia vaihtoehtoja tuon ongelman kanssa ja ymmärtäisin sen johtuvan tuosta suuremmasta solun arvosta ehdollisessa muotoilussa oman muotoilun jälkeen, mutta miten ihmeessä saan palautettua keskiarvon oikeaksi ilman, että tuota hienoa pilkkumuotoilua tarvitsee poistaa?

    Kiittäen sanna, joka on tainnut "haukata" hieman liian suuren palan... :)

    Äänestä

  • sanna kirjoitti:

    Eipäs tullutkaan ihan vielä 'täydellistä' taulukkoa. Samaisessa taulukossa on nimittäin solussa K8 keskiarvo sarakkeen C pilkulla olevista lukuarvoista, joissa on oma muotoilu 0","0 . Nyt keskiarvot on kymmenkertaisia.

    Olen yrittänyt tämän päivän pähkäillä ja kokeilla erilaisia vaihtoehtoja tuon ongelman kanssa ja ymmärtäisin sen johtuvan tuosta suuremmasta solun arvosta ehdollisessa muotoilussa oman muotoilun jälkeen, mutta miten ihmeessä saan palautettua keskiarvon oikeaksi ilman, että tuota hienoa pilkkumuotoilua tarvitsee poistaa?

    Kiittäen sanna, joka on tainnut "haukata" hieman liian suuren palan... :)

    Solun omasta muotoilusta johtuen tulos on kymmenkertainen.Eiköhän tulos korjaannu jakamalla tulos 10?

    Äänestä

  • Kunde kirjoitti:

    Solun omasta muotoilusta johtuen tulos on kymmenkertainen.Eiköhän tulos korjaannu jakamalla tulos 10?

    Juu, kiitoksia vaan. Kyllä korjaantui ja nyt taitaa taulukko olla taas kunnossa - ainakin toistaiseksi :)

    Äänestä

Onkohan tuo koodiin laitettu kellonaikamuotoilu nimeltään makro, kun nyt avatessani excel-taulukkoa, tulee joka kerta kysymys

'Makroissa voi olla viruksia. Makrot voi yleensä poistaa käytöstä, mutta kelvollisten makrojen poistaminen voi heikentää toimintoja.' Ja sitten on laatikot 'Poista makrot käytöstä' , 'Ota makrot käyttöön' ja 'Lisätietoja'.

Äänestä
  • eli ota makrot käyttöön, muuten et saa sitä toimimaan

    Äänestä

  • se on kirjoitti:

    eli ota makrot käyttöön, muuten et saa sitä toimimaan

    Kiitos tiedosta. Olenkin jo testannut, että ei toimi, jos ei ota käyttöön :)

    Saako tuon makron otettua käyttöön niin, ettei excel kyselisi sitä joka kerta?

    Äänestä

  • sanna kirjoitti:

    Kiitos tiedosta. Olenkin jo testannut, että ei toimi, jos ei ota käyttöön :)

    Saako tuon makron otettua käyttöön niin, ettei excel kyselisi sitä joka kerta?

    Kun Excel on auki: Työkalut -> Makro -> Suojaus ja siellä täppä alimpaan kohtaan "pieni" ja OK

    Äänestä

  • paavali kirjoitti:

    Kun Excel on auki: Työkalut -> Makro -> Suojaus ja siellä täppä alimpaan kohtaan "pieni" ja OK

    Kiitos. Tuo täppä taitaa koskea sen jälkeen kaikkien excel-tiedostojen avaamista, kun kysely poistui toisestakin asiakirjasta?

    Tuosta tuli mieleen koneen turvallisuuskysymykset... Tähän asti olen säästynyt isommilta murheilta koneen kanssa, mutta jos madallaan suojaustasoa makrojen kohdalla, niin onko syytä pelätä makroviruksia (vai mitä ne olivat)? Virustorjunta ja palomuuri ovat ajan tasalla.

    On tämä atk kumma juttu, kun yksi asia ratkeaa, niin heti tulee uusi ongelma pohdittavaksi :)

    Äänestä

  • sanna kirjoitti:

    Kiitos. Tuo täppä taitaa koskea sen jälkeen kaikkien excel-tiedostojen avaamista, kun kysely poistui toisestakin asiakirjasta?

    Tuosta tuli mieleen koneen turvallisuuskysymykset... Tähän asti olen säästynyt isommilta murheilta koneen kanssa, mutta jos madallaan suojaustasoa makrojen kohdalla, niin onko syytä pelätä makroviruksia (vai mitä ne olivat)? Virustorjunta ja palomuuri ovat ajan tasalla.

    On tämä atk kumma juttu, kun yksi asia ratkeaa, niin heti tulee uusi ongelma pohdittavaksi :)

    Kyllä se koskee koko exceliä.
    Itselläni on tuo "pieni" asetus jatkuvasti päällä, eikä ole viruksia näkynyt.

    Äänestä

  • paavali kirjoitti:

    Kyllä se koskee koko exceliä.
    Itselläni on tuo "pieni" asetus jatkuvasti päällä, eikä ole viruksia näkynyt.

    Kiitos tiedoista, en huolestu :)

    Ja sitäpaitsi onhan täällä hyviä ja taitavia neuvojia, jos sattuu jotain odottamatonta tapahtumaan...

    Äänestä

Kommentoi aloitusta


sanna kirjoitti:

Joudun taas turvautumaan apuunne Excel-nerot eli luin jonkun aikaisemman kysymyksen vastauksesta, että Aika-muotoiltuun (00:00) -sarakkeeseen saisi tuollaisen aikamerkinnän eli kaksoispisteen kirjoittamatta sitä, kun laittaa taulukonvalitsimen koodiin alla olevan tekstin.

Jostain syystä en saa tuota toimimaan, vaan syöttäessäni kellonajan, esim. 1235, kyseiseen soluun tulee 00:00.

Itse en ymmärrä tuosta koodisysteemistä vielä mitään.

Aikaisemmasta kysymyksestä kopioitu koodi:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim r As Range, h As Integer
Set r = Intersect(Target, Range("E9:H22"))
If r Is Nothing Then Exit Sub
Set r = r.Cells(1)
If IsNumeric(r) Then
With r
If .Value >= 100 Then h = Left(.Value, Len(.Value) - 2) Else h = 0
Application.EnableEvents = False
.Value = h / 24 Right(.Value, 2) / 1440
.NumberFormat = "[hh]:mm"
Application.EnableEvents = True
End With
End If
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