Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: [EXCEL] Combobox pobieranie z innego pliku xls
anonim




Typ: Nie zarejestrowany
[EXCEL] Combobox pobieranie z innego pliku xls

mam dwa pliki xls jeden faktura.xls i drugi sprzedajacy.xls z arkuszem o nazwie sprzedajacy w ktorym sa 3 kolumny, nazwa,adres,nip

w pliku faktura.xls utwqorzylem formularz o nazwie UserForm1 umiescilem w nim comboboxa. Chodzi o to zeby w comboboxie wyswietlane byly dane z kolumny nazwa z pliku sprzedajacy.xls

Problem tez jest taki ze zakres musi byc dynamiczny bo nie wiadomo ile bedzie zapisanych wierszy w sprzedjacy.xls .

ponizej przedstawiam to co udalo mi sie narazie napisac i nie dziala( w combo boxie nic sie nie pojawia)


Kod_formularza UserForm1


Private Sub ComboBox14_Change()
Dim wiersz As Integer

wiersz = ComboBox14.ListIndex + 1

lbl1.Caption = Workbooks("sprzedajacy.xls".Sheets("sprzedajacy".Cells(wiersz, 1)

Private Sub UserForm1_Initialize()
'Załadowanie CobmboBoxsów firmami
Dim firma As Variant
Dim ListaFirm As Object

Set ListaFirm = _
Workbooks("sprzedajacy.xls".Worksheets("sprzedajacy".Cells(2, 1).Resize(Workbooks("sprzedajacy.xls".Worksheets("sprzedajacy".Cells(1, 1).CurrentRegion.Rows.Count - 1, 1)

ComboBox14.Clear


For Each firma In ListaFirm
ComboBox14.AddItem (firma)

Next

ComboBox14.SetFocus
End Sub



prosze o pomoc bo juz z tym sie mecze 2 dzien

02-02-2005 15:52
  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Aby załadować listę sprzedających do ComboBox'a trzeba:
- otworzyć plik sprzedający.xls
- w pętli odczytać sprzedających z arkusza sprzedający i załadować do combo
- zamknąć plik sprzedający.xls

np.:

Dim wbk As Workbook
Dim wsh As WorkSheet
Dim i as Long

Set wbk = Workbooks.Open "sciezka_do_pliku_sprzedający.xls"
Set wsh = wbk.Worksheets("sprzedający"
i = 1
Do While wsh.Range("A" & i)<> ""
    UserForm1.Combobox1.AddItem wsh.Range("A" & i)
    i = i + 1
Loop
wbk.Close SaveChanges:=False

Set wsh = Nothing
Set wbk = Nothing


[Post edytowany dnia 02-02-2005 19:51 przez losmac]


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

02-02-2005 19:49
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
ceo
ceo




Typ: neutral
Postów: 18
Zarejestrowany: Feb 2005

dzieki za odpowiedz , dziala

teraz mam kolejne pytanie odnosnie tego problemu

wybieram w comboboxie jakas pozycje

i chcialbym teraz by zawartosc  labelow w formie zmienila sie w zaleznosci od tego co wybralem w combo.

i tak np. mam pole lblnazwa , lbladres , lblnip
jak to teraz zrobic ? za pomoca kodu ktory podales.
oczywiscie nazwa,adres,nip to kolejne kolumny w pliku sprzedajacy.xls

[Post edytowany dnia 03-02-2005 00:26 przez ceo]

03-02-2005 00:23
Pokaż profil ceo  Wyślij email do ceo   Odwiedź stronę ceo       441633
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Ustaw ilość kolumn combobox'a na 3 i zmień procedurę następująco:

Do While wsh.Range("A" & i) <> ""
    UserForm1.ComboBox14.AddItem ""
  UserForm1.ComboBox14.Column(0)= wsh.Range("A" & i)
  UserForm1.ComboBox14.Column(1)= wsh.Range("B" & i)
  UserForm1.ComboBox14.Column(2)= wsh.Range("C" & i)
    i = i + 1
Loop


a odczyt:

lbl1.Caption = UserForm1.ComboBox14.Column(0,UserForm1.ComboBox14.ListIndex)


....

Pisałem z głowy, więc sprawdź, czy powołałem odpowiednie właściwości i metody (a programuję również w innych językach).


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

03-02-2005 22:04
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Właściwości combo:
ColumnCount = 3
ColumnWidths = 150;0;0 '2 i 3 kolumna niewidoczna


Private Sub ComboBox14_Change()
    Me.LblAdres.Caption = Me.ComboBox14.Column(1, Me.ComboBox14.ListIndex)
    Me.LblNIP.Caption = Me.ComboBox14.Column(2, Me.ComboBox14.ListIndex)
End Sub

Private Sub UserForm_Initialize()
Dim wbk As Workbook
Dim wsh As Worksheet
Dim i As Long
Dim sciezka As String


sciezka = ThisWorkbook.Path & "\sprzedajacy.xls"

Set wbk = Workbooks.Open(sciezka)
Set wsh = wbk.Worksheets("sprzedajacy"
i = 2
Do While wsh.Range("A" & i) <> ""
    Me.ComboBox14.AddItem ""
    Me.ComboBox14.Column(0, Me.ComboBox14.ListCount - 1) = wsh.Range("A" & i)
    Me.ComboBox14.Column(1, Me.ComboBox14.ListCount - 1) = wsh.Range("B" & i)
    Me.ComboBox14.Column(2, Me.ComboBox14.ListCount - 1) = wsh.Range("C" & i)
    i = i + 1
Loop
Me.ComboBox14.ListIndex = 0
Me.LblAdres.Caption = Me.ComboBox14.Column(1, Me.ComboBox14.ListIndex)
Me.LblNIP.Caption = Me.ComboBox14.Column(2, Me.ComboBox14.ListIndex)

wbk.Close SaveChanges:=False

Set wsh = Nothing
Set wbk = Nothing
End Sub



_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

04-02-2005 20:37
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
Wszystkich odpowiedzi: 4 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1