Tietojen haku ComboBoxiin

VB(A) opiskelut etenee ja tällaisen olen nyt saanut aikaiseksi.. en kuitenkaan toimivaksi.. :(

Eli sheetissä 1 on nappi, jota painamalla avautuu formi, jossa on ComboBox. Tuohon ComboBoxiin pitäisi hakea tiedot sheetistä 2 ("Tuotteet ja koodit"); tarkemmin sanottuna sarakkeen B rivien 2:X väliltä.. Alin rivi on X, koska tuotteiden määrä ei ole vakio..

Alla koodi, jonka olen saanut aikaiseksi..


Private Sub UserForm_Initialize()

Dim Tuote As Range
Dim Loppuruutu As Range

Worksheets("Tuotteet ja koodit").Activate

Range("B2").Select 'Valitaan halutun sarakkeen ensimmäinen solu - sarake B, rivi 2

Do Until ActiveCell.Value = "" 'Tehdään looppia, kunnes aktiivisena soluna on tyhjä solu, eli ""
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate 'Siirrytään yksi rivi alaspäin
Loop

Set Loppuruutu = ActiveCell 'Kun tyhjä ruutu on löytynyt ja valittuna, tehdään siitä arvo Loppuruutu

Tuote = Range("B2") & ":" & Loppuruutu

comboTuote.AddItem Tuote 'Lisätään comboBoxiin kaikki arvot, jotka sijaitsevat alueella Tuote

End sub



Tuohan ei luonnellisestikaan voi toimia, mutta idea varmaankin selviää siitä..
2419
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

Noinhan se homma etenee... aluksi käytetään looppeja ja sitten myöhemmin opitaan käyttämään tehokkampia tapoja

Private Sub UserForm_Initialize()

Dim Alue As Range
Dim Loppuruutu As String

Worksheets("Tuotteet ja koodit").Activate

Range("B2").Select

Do Until ActiveCell.Value = ""
ActiveCell.Offset(1, 0).Select
Loop

Loppuruutu = ActiveCell.Offset(-1, 0).Address

Set Alue = Range("$B$2:" & Loppuruutu)
For Each cell In Alue
ComboBox1.AddItem cell
Next
End Sub

itse käytän yleensä tälläistä

Private Sub UserForm_Initialize()
Dim rarray As Variant
Dim vika As Double
Sheets("Tuotteet ja Koodit").Activate
vika = Range("B65536").End(xlUp).Row
rarray = Range("B2:B" & vika)
With ComboBox1
.List() = rarray
.ListIndex = -1
End With
End Sub

Äänestä
  • ..paljon.. Toimii juuri niin kuin pitääkin ja nyt voin luultavasti (toivottavasti) rakentaa tämän taulukon näillä eväillä valmiiksi..

    Tein tietojen haun tuolla omalla tavallani (olihan se kuitenkin eka lähes toimiva juttuni), mutta laitoin tuon sinun versiosi muistiin, ja perehdyn siihen sitten kun ehdin..

    Kiitos..

    Äänestä

Kommentoi aloitusta


janne-t kirjoitti:

VB(A) opiskelut etenee ja tällaisen olen nyt saanut aikaiseksi.. en kuitenkaan toimivaksi.. :(

Eli sheetissä 1 on nappi, jota painamalla avautuu formi, jossa on ComboBox. Tuohon ComboBoxiin pitäisi hakea tiedot sheetistä 2 ("Tuotteet ja koodit"); tarkemmin sanottuna sarakkeen B rivien 2:X väliltä.. Alin rivi on X, koska tuotteiden määrä ei ole vakio..

Alla koodi, jonka olen saanut aikaiseksi..


Private Sub UserForm_Initialize()

Dim Tuote As Range
Dim Loppuruutu As Range

Worksheets("Tuotteet ja koodit").Activate

Range("B2").Select 'Valitaan halutun sarakkeen ensimmäinen solu - sarake B, rivi 2

Do Until ActiveCell.Value = "" 'Tehdään looppia, kunnes aktiivisena soluna on tyhjä solu, eli ""
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate 'Siirrytään yksi rivi alaspäin
Loop

Set Loppuruutu = ActiveCell 'Kun tyhjä ruutu on löytynyt ja valittuna, tehdään siitä arvo Loppuruutu

Tuote = Range("B2") & ":" & Loppuruutu

comboTuote.AddItem Tuote 'Lisätään comboBoxiin kaikki arvot, jotka sijaitsevat alueella Tuote

End sub



Tuohan ei luonnellisestikaan voi toimia, mutta idea varmaankin selviää siitä..

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