Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Excel VBAlla tuntilaskuri

mescali [05.11.2006 20:09:39]

#

Pitäisi saada excellä laskettua työtuntien hinta.

Käyttöliittymään tulee ruutu johon kirjoitetaan tuntimäärä, alasvetovalikko josta valitaan työlaji, 1 valintaruutu josta rastitetaan jos tulee hälytysraha sekä 2 valintanappia joista valitaan onko kyseessä pyhätyö (kyllä ja ei vaihtoehdot).

Työlajeilla on eri hinnoittelu, esim. siivous; tuntipalkka 11, hälyraha 5, pyhäkorvaus 7. Huolto; tuntipalkka 15, hälyraha 7, pyhäkorvaus 8. Jne. Nuo tuntipalkat löytyy taulukosta ja toiseen taulukkoon pitäisi tulostaa tuo tulos.

Neuvokaa miten tuollainen pitäisi tehdä. Millaista koodia.

LaNu [08.11.2006 00:45:43]

#

mescali kirjoitti:

Millaista koodia.

Visual Basic for Application -koodilla lähtisin tekemään, kun sitä Office tyrkyttää.

Ei tuossa kai mitään kovin moni mutkaista ole. Opettelet ensin Visual Basicin perusteita hiukan vaikkapa Ohjelmointiputkan omasta oppaasta. Sen jälkeen syvennyt formin (lomakkeen) erilaisten nappien & lootien käsittelyyn. Noilla tiedoilla pitäisi päästä alkuun... ja tarkentaa sitten kysymystä.

Officen Visual Basic Editorin helpistä kannattaa tutkailla hakusanoja cell, range, sheet...

mescali [09.11.2006 13:07:08]

#

Vaikea oli tuon selvemmin selittää.. mutta onnistuin jo tekemään nuo laskut. Ei niistä sen enempää.

Nyt mulla on alla oleva koodi mutta tuo if komento ei toimi. Miten se pitäisi muuttaa että kun painaa "yes", ohjelma tekee makron loppuun ja painamalla "no" toiminto peruuntuu?

Sub Valmis()

    If MsgBox("Ovatko tiedot oikein?", vbYesNo) = vbNo Then
    Cancel = True
    End If

    Sheets("Rivit").Select
    Range("A16:J16").Select
    Selection.EntireRow.Insert
    Range("A3:J3").Select
    Selection.Copy
    Range("A16").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
        Application.CutCopyMode = False
    Range("A3").Select
    Sheets("Käyttöliittymä").Select
    Application.Goto Reference:="Syöttöalue"
    Selection.ClearContents
    Range("E15").Select
    Selection.ClearContents
    Range("D12").Select

End Sub

Toinen kysymys; Nyt tuo makro toimii painamalla Valmis painiketta. Haluan muuttaa sen niin että makro käynnistyy painamalla jompaa kumpaa kahdesta valintanapista jotka mulla on ryhmitettynä(kyllä ja ei vaihtoehtoineen). Miten tuota pitäisi sitten muuttaa, meneekö sekin If komennoilla?

Kuten varmaan näkyy, oon ihan aloittelija näissä hommissa..

BadSource [09.11.2006 14:04:13]

#

Poista Cancel = True ja siirrä End If loppuun ennen End Subia. Vaihda myös vbNo vbYesksi, niin koodi suoritetaan painamalla Yes.

Jos tarkoitat valintanapilla OptionButtonia, niin vaikka ne onkin ryhmitetty, niin niille on molemmille kuitenkin laitettava koodi, jonka ne toteuttaa valinnan tapahtuessa. Alla yksi esimerkki käytöstä, jos halutaan tietää, kumpaa valinnoista on klikattu. Sivulla siis kaksi OptionButtonia, OptionButton1 ja OptionButton2.

Private Sub OptionButton1_Click()
    Call Test(1)
End Sub

Private Sub OptionButton2_Click()
    Call Test(2)
End Sub

Sub Test(kumpi As Integer)
    If kumpi = 1 Then
        MsgBox "Foo"
    ElseIf kumpi = 2 Then
        MsgBox "Bar"
    End If
End Sub

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta