Laskurin teko?

Miten saan tehtyä sellaisen yhden solun, joka lisääntyy, sillä arvolla mikä syötetään toiseen soluun? Siis, kun minulla on kaksi solua, joista ensimmäiseen syötän satunnaisia lukuja (nollasta eteenpäin), niin nämä luvut pitäisi saada siirtymään toiseen soluun laskurin tavoin. Ei siis vähennystä milloinkaan. Esim. Vaihe1: 1.solun arvo 5, 2.solun arvo 5 Vaihe2: 1.solun arvo 10, 2.solun arvo 15 Vaihe3: 1.solun arvo 0, 2.solun arvo 15... jne.
Ensimmäisen solun arvon kun vaihtaa toiseksi, niin tämä uusi arvo täytyisi aina saada lisättyä toisen solun vanhaan arvoon.
163935
Äänestä

Muut lukivat myös

Vastaukset 16

Vanhimmat
  • mulle tulee compile error: expected end sub.

    Äänestä

  • Nimetön kirjoitti:

    mulle tulee compile error: expected end sub.

    Ilmeisesti koodistasi puuttuu End Sub

    Äänestä

  • paavali50 kirjoitti:

    Ilmeisesti koodistasi puuttuu End Sub

    End Sub löytyy viimeiseltä riviltä.

    Äänestä

  • Mahtikupru kirjoitti:

    End Sub löytyy viimeiseltä riviltä.

    ...mutta tulee siis silti.

    Äänestä

  • Mahtikupru kirjoitti:

    ...mutta tulee siis silti.

    Enpä keksi mitään selitystä tuolle errorille.
    Minulla kyllä toimii.
    Laitoithan koodin taulukon moduuliin.

    Äänestä

  • paavali50 kirjoitti:

    Enpä keksi mitään selitystä tuolle errorille.
    Minulla kyllä toimii.
    Laitoithan koodin taulukon moduuliin.

    Työkaluista valitsin makrot. Sitten makrolle nimi(esimerkki). Sitten avautuvaan työkirja1 - module1(code) ikkunaan copypastella koodin. Näyttää tältä:
    Sub esimerkki()
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$2" Then
    [C1] = [C1] [A1]
    End If
    End Sub

    Äänestä

  • Mahtikupru kirjoitti:

    Työkaluista valitsin makrot. Sitten makrolle nimi(esimerkki). Sitten avautuvaan työkirja1 - module1(code) ikkunaan copypastella koodin. Näyttää tältä:
    Sub esimerkki()
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$2" Then
    [C1] = [C1] [A1]
    End If
    End Sub

    Napsauta hiiren oikealla taulukkovalitsinta taulukon vasemmassa alareunassa (esim:Taul1) -> Näytä koodi ja kopioit koodin sinne

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$2" Then
    [C1] = [C1] [A1]
    End If
    End Sub

    Äänestä

  • paavali50 kirjoitti:

    Napsauta hiiren oikealla taulukkovalitsinta taulukon vasemmassa alareunassa (esim:Taul1) -> Näytä koodi ja kopioit koodin sinne

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$2" Then
    [C1] = [C1] [A1]
    End If
    End Sub

    No nyt toimii. Kiitti paljon!

    Äänestä

  • paavali50 kirjoitti:

    Napsauta hiiren oikealla taulukkovalitsinta taulukon vasemmassa alareunassa (esim:Taul1) -> Näytä koodi ja kopioit koodin sinne

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$A$2" Then
    [C1] = [C1] [A1]
    End If
    End Sub

    Mikä tossa kaavassa määrittää niiden solujen sijainnin, joihin arvot tulevat? Nyt ne tulevat A1 ja C1 soluihin. Jos haluan esimerkiksi käyttää B2 ja C2 soluja? Entä jos haluan useammalle riville saman kaavan?

    Äänestä

  • Mahtikupru kirjoitti:

    Mikä tossa kaavassa määrittää niiden solujen sijainnin, joihin arvot tulevat? Nyt ne tulevat A1 ja C1 soluihin. Jos haluan esimerkiksi käyttää B2 ja C2 soluja? Entä jos haluan useammalle riville saman kaavan?

    tämä koodi toimii kun syötät B2 ja painat enter, lisää C2.

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$B$3" Then
    [C2] = [C2] [B2]
    End If
    End Sub

    Jos haluat useammalle riville täytyy If koodi tehdä useampaan kertaan. On varmaan olemassa helpompikin ratkaisu asiaan, mutta minä en sitä osaa. Mutta kolmella rivillä toimii näin.

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$B$3" Then
    [C2] = [C2] [B2]
    End If
    If Target.Address = "$B$4" Then
    [C3] = [C3] [B3]
    End If
    If Target.Address = "$B$5" Then
    [C4] = [C4] [B4]
    End If
    End Sub

    Äänestä

  • paavali50 kirjoitti:

    tämä koodi toimii kun syötät B2 ja painat enter, lisää C2.

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$B$3" Then
    [C2] = [C2] [B2]
    End If
    End Sub

    Jos haluat useammalle riville täytyy If koodi tehdä useampaan kertaan. On varmaan olemassa helpompikin ratkaisu asiaan, mutta minä en sitä osaa. Mutta kolmella rivillä toimii näin.

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = "$B$3" Then
    [C2] = [C2] [B2]
    End If
    If Target.Address = "$B$4" Then
    [C3] = [C3] [B3]
    End If
    If Target.Address = "$B$5" Then
    [C4] = [C4] [B4]
    End If
    End Sub

    Muuten hyvin toimii, mutta ongelmana on nyt se että, kun minulla on kaikilla riveillä arvot ja haluan lisätä esim. keskimmäiselle riville uuden arvon, muuttuu yllä oleva arvo myös!!!
    Esim. B2=4 C2=4, B3=6 C3=6, B4=3 C4=3 , kun muutan B3=4 niin muuttuu C3=10, MUTTA myös muuttuu C2=8!!!

    Äänestä

  • Mahtikupru kirjoitti:

    Muuten hyvin toimii, mutta ongelmana on nyt se että, kun minulla on kaikilla riveillä arvot ja haluan lisätä esim. keskimmäiselle riville uuden arvon, muuttuu yllä oleva arvo myös!!!
    Esim. B2=4 C2=4, B3=6 C3=6, B4=3 C4=3 , kun muutan B3=4 niin muuttuu C3=10, MUTTA myös muuttuu C2=8!!!

    Tässä on makro joka enteriä painamalla lisää B-sarakkeeseen kirjoitetun arvon viereiseen soluun C-sarakkeeseen ja tyhjentää B-sarakkeen solun niin tupla lisäyksestä ei ole vaaraa.
    Taulukon moduuliin.

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo loppu:
    If Target.Column = 2 Then
    ActiveCell.Offset(-1, 1) = ActiveCell.Offset(-1, 1) _
    ActiveCell.Offset(-1, 0)
    Target.Offset(-1, 0).ClearContents
    loppu:
    End If
    End Sub

    Äänestä

  • paavali50 kirjoitti:

    Tässä on makro joka enteriä painamalla lisää B-sarakkeeseen kirjoitetun arvon viereiseen soluun C-sarakkeeseen ja tyhjentää B-sarakkeen solun niin tupla lisäyksestä ei ole vaaraa.
    Taulukon moduuliin.

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo loppu:
    If Target.Column = 2 Then
    ActiveCell.Offset(-1, 1) = ActiveCell.Offset(-1, 1) _
    ActiveCell.Offset(-1, 0)
    Target.Offset(-1, 0).ClearContents
    loppu:
    End If
    End Sub

    Miten saan sen alkamaan vasta toiselta riviltä, kun eka riville pitäisi saada otsikot?

    Äänestä

  • Mahtikupru kirjoitti:

    Miten saan sen alkamaan vasta toiselta riviltä, kun eka riville pitäisi saada otsikot?

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error GoTo loppu:
    If Target.Address = "$B$2" Then GoTo loppu:
    If Target.Column = 2 Then
    ActiveCell.Offset(-1, 1) = ActiveCell.Offset(-1, 1) _
    ActiveCell.Offset(-1, 0)
    Target.Offset(-1, 0).ClearContents
    loppu:
    End If
    End Sub

    Äänestä

Luo laskuri, joka laskee tuotteelle hinnan, joka muodostuu seuraavasti:
veroton myyntihinta, johon lisätään 24% alv (liikevaihtovero) + toimituskulut 3,50€, mikäli paketti on alle 1kg JA tilavuudeltaan alle 5 dm3 (kuutiodesimetri), muussa tapauksessa toimituskulut ovat 7,00€.
Laskuri on aina parempi, mitä helpommin annetut arvot ovat myös jälkikäteen muuteltavissa (verot, toimituskulut ja postin maksut voivat aina muuttua).
Palautus kansioon.

Äänestä

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

Kommentoi aloitusta


Nimetön kirjoitti:

Miten saan tehtyä sellaisen yhden solun, joka lisääntyy, sillä arvolla mikä syötetään toiseen soluun? Siis, kun minulla on kaksi solua, joista ensimmäiseen syötän satunnaisia lukuja (nollasta eteenpäin), niin nämä luvut pitäisi saada siirtymään toiseen soluun laskurin tavoin. Ei siis vähennystä milloinkaan. Esim. Vaihe1: 1.solun arvo 5, 2.solun arvo 5 Vaihe2: 1.solun arvo 10, 2.solun arvo 15 Vaihe3: 1.solun arvo 0, 2.solun arvo 15... jne.
Ensimmäisen solun arvon kun vaihtaa toiseksi, niin tämä uusi arvo täytyisi aina saada lisättyä toisen solun vanhaan arvoon.

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