vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest niedziela, 12 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

przypisana komórka, po wyborze z listy w komórce sąsiedniej..jak zrobić???


otwartyotwarty rozpoczął: Gubernator postów: 7



napisał: pil
postów: 154


umieszczony:
30 czerwca 2005
08:02

  
OK.
kod w Arkusz1("Korekta"), na którym znajduje się lista "ListBox":
Option Explicit

Private Sub ListBox_Click()
'wpisanie do kolejnej komórki z zakresu C28:C33
'po wybraniu pozycji z ListBox

Static IdProduktu As Integer 'chociaż tutaj typ nie ma większego znaczenia - równie dobrze może być String
Dim odczytaneID As Integer
Dim nrWiersza As Integer
Dim i As Integer

    nrWiersza = ListBox.ListIndex + 2
    '+ 2 się bierze z pominięcia nagłówka w arkuszu "Pozycje"
    'i z indeksowania od 0 w liście, po to, by nrWiersza
    'był zgodny z wierszem produktu w arkuszu "Pozycje"
    odczytaneID = Worksheets("Pozycje").Cells(nrWiersza, 1).Value
    
    If odczytaneID = IdProduktu Then
        'porzucenie procedury jeżeli jest wskazywany
        'kolejny raz ten sam produkt
        Exit Sub
    Else
        IdProduktu = odczytaneID
    End If
   
    i = 28 'od tego wiersza zaczyna wpisywać do komórek w kolumnie C
    Do While (i <= 33) 'i sprawdza czy jest cokolwiek wpisane do 33
        If (Worksheets("Korekta").Cells(i, 3).Value = "") Then
            'wstawienie wartości do pierwszej "pustej" komórki
            'i porzucenie pętli Do..Loop
            Worksheets("Korekta").Cells(i, 3).Value = IdProduktu
            Exit Do
        End If
    i = i + 1
    Loop
    
End Sub

Public Sub WypelnjListe()
'aktualizacja zawartości listy
    Dim i As Integer
    
    ListBox.Clear 'wyczyszczenie ListBoxa
    
    i = 2 'zakładam, że w pierwszym wierszu jest nagłówek tabeli
    
    Do While (Worksheets("Pozycje").Cells(i, 2).Value <> "")
        
        'działa dopóki nie napotka na "pustą" komórkę w kolumnie "B"
        'i wypełnia ListBox wierszem "i" w kolumnie "B"
        ListBox.AddItem (Worksheets("Pozycje").Cells(i, 2).Value)
        i = i + 1
        
    Loop
    
    'i jeszcze jedna "pusta linia" w liście, żeby ładniej wyglądało
    ListBox.AddItem ("")
End Sub

Private Sub Worksheet_Activate()
    'aktualizacja listy po zmianach w innych arkuszach
    WypelnjListe
End Sub



i w ThisWorkBook :

Option Explicit

Private Sub Workbook_Open()
    'wypełnienie listy przy otwarciu pliku
    Arkusz1.WypelnjListe
End Sub

napisał: Gubernator
postów: 17


umieszczony:
28 czerwca 2005
18:00

  
Nie bardzo rozumiem???
Postaram się to wytłmaczyć inaczej.
Stworzyłem sobie dwa arkusze Arkusz1 nazwałem "Korekta" i w nim znajduje się formatka faktury korygującej, Arkusz2 nazwałem "Pozycje" i zamierzam tam wypisywać pozycje asortymentowe z możliwością późniejszego dopisywania. W kolumnie A arkusza "Pozycje" mam kody produktów, a w kolumnie B mam nazwy produktów. I na tym zadanie Arkusza "Pozycje" się kończy. W arkuszu "Korekta" w kolumnie C od wiersza 28 do 33 chcę wpisywać kody produktów (które mam w arkuszu "Pozycje" w kolumnie A). W kolumnie D arkusza "Korekta" zrobiłem listę wyboru, która odnosi się do asortymentów wypisanych w arkuszu "Pozycje" w kolumnie B. Chciałbym aby po wyborze z listy jakiegoś asortymentu, w komórce obok pojawiał się właściwy kod wybranego produktu. Jak można coś takiego zrobić????
Dzięki za pomoc
Pozdrawiam
Jarek
napisał: pil
postów: 154


umieszczony:
23 czerwca 2005
13:08

  
Może coś takiego :

Option Explicit
Public Sub WypelnijCombo()

Dim i As Integer

Worksheets("Arkusz2").cboTest.Clear
i = 1

Do While (Worksheets("dane").Cells(i, 1) <> "")
'działa dopóki nie napotka pustej komórki w kolumnie "A"
    Worksheets("Arkusz2").cboTest.AddItem (Worksheets("dane").Cells(i, 1))'ładuje do cboTest zawartość komórek z pierwszej kolumny
    i = i + 1
Loop

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'aktualizacja zawartości cboTest przy zmianie zawartości arkusza
    WypelnijCombo
End Sub



Private Sub cboTest_Change()
'aktualizacja komórek przy zmianie w cboTest
    Worksheets("Arkusz2").Cells(1, 5).Value = cboTest.ListIndex
'lub jeżeli klucze byłyby w drugiej kolumnie arkusza "dane"
'Dim wiersz as Integer
'wiersz = cboTest.ListIndex
'Worksheets("Arkusz2").Cells(1, 5).Value = Worksheets("dane").Cells(wiersz,2).value
    Worksheets("Arkusz2").Cells(2, 5).Value = cboTest.Value
End Sub



Private Sub Workbook_Activate()
'wypełnienie cboTest przy otwarciu arkusza
    Arkusz2.WypelnijCombo
End Sub

napisał: Gubernator
postów: 17


umieszczony:
22 czerwca 2005
17:49

  
aha, elementy listy czyli - lista asortymentów wraz z kodami są w arkuszu1 a formatka w której chcę to wykorzystać tworzona jest w arkuszu2
napisał: Gubernator
postów: 17


umieszczony:
22 czerwca 2005
12:36

  
Dokładnie o coś takiego chodzi tyle, że z indeksami. Mam w liście wyboru ileś tam asortymentów i chcę aby po wybraniu któregoś z nich w wierszu obok wyświetlał się jego właściwy kod. Bez konieczności każdorazowego ich wpisywania i sprawdzania.
Pomożesz?
napisał: tashemik
postów: 35


umieszczony:
19 czerwca 2005
17:44

  
Cytat:

..chciałbym aby po wyborze danego elemntu z listy był mu przydzielany w komórce A2 odpowiedni inny wiersz.


inny wiersz?

Prawdopodobnie kombinujesz coś na zasadzie "Interaktywnego cennika". Np. po wyborze z listy "Procesor 1800XP" obok w komórce ma się wyświetkić jego cena lub coś takiego?

Opisz trochę dokładniej to rozwiniemy to.
___________________________
Pozdro |
*******Tashemik********* |
___________________________|
napisał: Gubernator
postów: 17


umieszczony:
2 czerwca 2005
16:40

  
Witam,
Mam w komórce (załóżmy) B2 rozwijaną listę wyboru i chciałbym aby po wyborze danego elemntu z listy był mu przydzielany w komórce A2 odpowiedni inny wiersz. Jak coś takiego można zrobić w VBA????
Dzięki za pomoc
Jarek


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z