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ä..
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ä..
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
..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..