Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA tietojen hakeminen ja vieminen excelistä

ciiveri [02.07.2015 11:05:50]

#

Hei,

Olen työstänyt excelin VBA:lla automatisoitua exceliä, jossa kilpailijan tiedot lisätään userformissa ja josta ne siirtyvät exceliin (alla olevalla tavalla)

   A           B                 C
1  Nimi        Syntymäaika       Laji
2  Herra x     1.2.2005          Pituus
3  Herra y     4.7.2006          Keihäs

Olen toteuttanut tämän siten, että jokaisessa sarakkeessa on nimetty (esim. lisää nimi) alue joka siirtyy aina tietoja lisättäessä yhden alaspäin ja ohjelma lisää tiedon kyseisen alueen yläpuolelle.

Private Sub CommandButton1_Click()
Sheets("Kilpailijat").Range("Nimi").Insert shift:=xlDown
Sheets("Kilpailijat").Range("Syntymäaika").Insert shift:=xlDown
Sheets("Kilpailijat").Range("Laji").Insert shift:=xlDown

LisääNimi.Select
ActiveCell.Offset(-1, 0).Select
ActiveCell.FormulaR1C1 = ListBox1.Value

LisääSyntymäaika.Select
ActiveCell.Offset(-1, 0).Select
ActiveCell.FormulaR1C1 = ListBox2.Value

LisääLaji.Select
ActiveCell.Offset(-1, 0).Select
ActiveCell.FormulaR1C1 = ListBox3.Value
End Sub

Olen yrittänyt saada ohjelman toimimaan siten, että kaikki päivittäminen tapahtuisi userformien kautta. Eli tiedot pitäisi vielä pystyä hakemaan excelistä takaisin userformiin, jossa tietoja voidaan päivittää. Ongelmana on, että Kilpailijoiden määrä vaihtelee ja muuttuu. Eli alueen josta tiedot tulevat userformin listboxiin pitäisi elää tietomäärän mukana.

Tätä ongelmaa olen yrittänyt ratkaista useilla eri keinoilla mutta huonolla menestyksellä. Alla on yksi yritys, joka ei kylläkään toimi. Yritin luoda alueen joka elää tietomäärän kanssa käyttämällä sarakkeen ensimmäisellä rivillä olevaa aluetta ja sitä viimeisellä rivillä olevaa aluetta joka aina laskee kun tietoa lisätään.

Private Sub UserForm_Activate()
'Luodaan alue joka alkaa otsikon (esim nimi) alapuolelta ja jatkuu aina viimeisimpään lisättyyn riviin asti
Dim Alue As Range
Dim Alku As Range
Dim Nimi As Range
Set Alku = Sheets("Kilpailijat").Range("A1")
Set Nimi = Sheets("Kilpailijat").Range("Nimi")
Nimi.Offset(1,0)
Alku.Offset(-1,0)
Set Alue = Sheets("Kilpailijat").Range("Alku:Nimi")

Listbox1.Rowsource = "Alue"
End Sub

Kun tiedot saadaan näkyviin Listbox1:seen niin valittaessa henkilö, pitäisi kyseisen henkilön tietojen tulla excelistä userformiin, jossa niitä muokataan ja kun tiedot viedään exceliin niin tieto tallentuu takaisin listaan.

Olen lukenut oppaita ja ohjeita, mutta kahden päivän jälkeen tämä ei vain aukea. Toivottavasti joku osaa auttaa. Kiitos!

Mod. huom: voi käyttää tasalevyistä tekstiä taulukkoon!

Vastaus

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

Tietoa sivustosta