Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Apuohjelmat

Mamma [24.09.2012 15:25:02]

#

Minulle tuli vastaan Excel 2007 sovellus, joka laskee erilaisia lukuja eri asiakkaille. Kun menee Excelin Apuohjelmat -välilehdelle, on siellä alasvetolaatikko, jossa on eri asiakkat. Kun tuosta listasta valitsee asiakkaan, tuo sovellus esiin valitun asiakkaan tietoja.
Minun pitäisi nyt lisätä tuohon listalle uusi asiakas, mutta en löydä koodista mistään tuota asiakaslistaa? Osaisiko joku antaa vinkkiä, mistä voisin etsiä?

groovyb [25.09.2012 09:21:32]

#

asiakaslista voi sijaita esim. piilotetulla välilehdellä, tai vaikka suoraan koodissa. koodeja pääset katselemaan excelin developer puolelta (tämä on normaalisti piilossa, saat tämän auki täppäämällä developer puolen päälle excelin asetuksista.)

Mamma [26.09.2012 07:43:57]

#

Kiitos vastauksestasi groovyb! Minä olen katsonut koodin läpi kokonaan, enkä löydä sieltä mitään listaa asiakkaista. Löydän koodista createmenu subin, mutta siinä ei ole sitä varsinaista listaa asiakkaista. Tuossa subissa on myös: Location for menu data
Set MenuSheet = ThisWorkbook.Sheets("MenuSheet"). En ymmärrä mitä tämä tarkoittaa? VbaProjektissa on Taul1(MenuSheet), mutta siellä ei ole mitään koodia?

neau33 [26.09.2012 11:00:46]

#

Moikka Mamma!

Voisit tsekata mitä taulun MenuSheet takaa löytyy esim. iskemällä Taul1:een komentopainikkeen ja sen taakse seuraavan koodin:

Sub Painike1_Napsauta()
    Dim solu
    Dim alue As Range
    Set alue = Sheets("MenuSheet").UsedRange
    For Each solu In alue
        MsgBox "rivi: " & solu.Row & "  sarake: " & solu.Column & "  arvo: " & solu.Value
    Next
    Set alue = Nothing

End Sub

Mikäli näkyviin tulee alasvetovalikosta tuttuja arvoja niin lista löytyi. Nyt jos apuohjelmasi tyyppi on excel lisämakro ja se on suojaamaton niin voit lisätä uuden asiakastiedon vaihtamalla komentopainikkeen koodin esim. seuraavan mallin mukaiseksi (säätele tarpeesi mukaan):

Sub Painike1_Napsauta()

    Dim vrivi, vsarake
    vrivi = Sheets("MenuSheet").Cells.SpecialCells(xlCellTypeLastCell).Row
    vsarake = Sheets("MenuSheet").Cells.SpecialCells(xlCellTypeLastCell).Column

    ReDim uudet_asiakastiedot(1 To vsarake) As Variant

    For i = LBound(uudet_asiakastiedot) To UBound(uudet_asiakastiedot)
        Select Case i
            Case 1: uudet_asiakastiedot(i) = "mahdollinen sarakkeeseen 1 tuleva arvo"
            Case 2: uudet_asiakastiedot(i) = "mahdollinen sarakkeeseen 2 tuleva arvo"
            'jne.
        End Select
    Next

    For i = 1 To vsarake 'esim.
        If Not IsEmpty(uudet_asiakastiedot(i)) Then
            Sheets("MenuSheet").Cells(vrivi + 1, i).Value = uudet_asiakastiedot(i)
        End If
    Next

    Erase uudet_asiakastiedot

End Sub

Kun olet luonut haluamasi asiakastiedot niin poista nappi ja koodi ja tallenna projekti.

Mamma [27.09.2012 08:05:02]

#

Kiitos tuhannesti neau33! Nyt löysin koodin, jossa on asikaslista ja pääsin lisäämään sinne uuden asiakkaan. Sinä olet nero!

Vastaus

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

Tietoa sivustosta