ID tematu: 75331
|
Pobieranie danych |
Autor |
Wiadomość |
beret
ExcelGaduła 500+
Wersja: Win Office 365
Pomógł: 28 razy Posty: 1412
|
Wysłany: 06-12-2023, 12:48 Pobieranie danych
|
|
|
W załączonym pliku wszystko fajnie działa jak Tabelka1 jest w Arkuszu1.
Jak zmienić poniższe makro, aby działało jeśli Tabelkę1 przeniosę do Arkusz2 w inne miejsce?
Kod: | Private Sub ListBox1_Click()
Range("B1").Value = Me.ListBox1
Range("D1").Value = Cells(Me.ListBox1.ListIndex + 2, "Q").Value
Range("D2").Value = Cells(Me.ListBox1.ListIndex + 2, "S").Value
End Sub |
Listbox w arkuszu.xlsm
|
Pobierz Plik ściągnięto 59 raz(y) 22.46 KB |
|
|
| ID posta:
431908
|
|
|
|
|
|
|
Maciej Gonet
Excel Expert
Wersja: Win Office 365
Pomógł: 3545 razy Posty: 10461
|
Wysłany: 06-12-2023, 14:49
|
|
|
Trzeba odpowiednio zmienić definicję nazwy "nazwiska", wszystkie odwołania odpowiednio do nowego położenia tabeli. Teraz powinno działać.
Listbox w arkuszu1.xlsm
|
Pobierz Plik ściągnięto 63 raz(y) 23.57 KB |
|
|
| ID posta:
431923
|
|
|
|
|
|
beret
ExcelGaduła 500+
Wersja: Win Office 365
Pomógł: 28 razy Posty: 1412
|
Wysłany: 07-12-2023, 08:17
|
|
|
Oczywiście działa.
A można inaczej, np. tak nadać nazwę całej tabelce i pobieranie odnieść od tej tabelki, a nie całego arkusza? |
|
| ID posta:
431944
|
|
|
|
|
|
Maciej Gonet
Excel Expert
Wersja: Win Office 365
Pomógł: 3545 razy Posty: 10461
|
Wysłany: 07-12-2023, 17:38
|
|
|
Można. Masz tu przykład dwóch sposobów odwołania do nazwanego zakresu w innym arkuszu. Ten pierwszy (zakomentowany) wymaga podania nazwy arkusza w kodzie.
Ten drugi (nieco dłuższy) odczytuje sobie nazwę arkusza z definicji nazwy zakresu.
Kod: | Private Sub ListBox1_Click()
Range("B1").Value = Me.ListBox1
' Range("D1").Value = Arkusz2.Range("Tabelka1").Cells(Me.ListBox1.ListIndex + 2, 3).Value
Range("D1").Value = ThisWorkbook.Names("Tabelka1").RefersToRange.Cells(Me.ListBox1.ListIndex + 2, 3).Value
' Range("D2").Value = Arkusz2.Range("Tabelka1").Cells(Me.ListBox1.ListIndex + 2, 5).Value
Range("D2").Value = ThisWorkbook.Names("Tabelka1").RefersToRange.Cells(Me.ListBox1.ListIndex + 2, 5).Value
End Sub
|
Listbox w arkuszu2.xlsm
|
Pobierz Plik ściągnięto 38 raz(y) 23.72 KB |
|
|
| ID posta:
431985
|
|
|
|
|
|
hurgadion
ExcelSpec
Wersja: Win Office 2021
Pomógł: 1211 razy Posty: 2792
|
Wysłany: 07-12-2023, 18:07
|
|
|
Hej,
trochę inaczej jak Maciej Gonet, który zresztą naprowadził mnie na rozwiązanie. Za pomocą tego kodu, przy zmianie położenia tabeli i zmianie arkusza zmieniamy tylko adresy w menadżerze nazw, a w kodzie nic nie trzeba grzebać, o ile tabelka będzie taka sama... Kod ma postać:
Kod: |
Private Sub ListBox1_Click()
Dim ark As String
Range("B1").Value = Me.ListBox1
ark = ThisWorkbook.Names("tabelka").RefersToRange.Worksheet.Name
Range("D1").Value = Worksheets(ark).Range("tabelka")(5 * Me.ListBox1.ListIndex + 8)
Range("D2").Value = Worksheets(ark).Range("tabelka")(5 * Me.ListBox1.ListIndex + 10)
End Sub
|
Pozdrawiam
Listbox w arkuszu2.xlsm
|
Pobierz Plik ściągnięto 39 raz(y) 23.37 KB |
|
|
| ID posta:
431988
|
|
|
|
|
|
Maciej Gonet
Excel Expert
Wersja: Win Office 365
Pomógł: 3545 razy Posty: 10461
|
Wysłany: 07-12-2023, 18:21
|
|
|
W mojej propozycji (w tej wersji niezakomentowanej) też nie trzeba niczego zmieniać w kodzie.
A gdy przenosimy nazwaną tabelkę w inne miejsce przez wytnij/wklej (nie: kopiuj/wklej/usuń starą), to nazwa też się przenosi wraz z tabelką w nowe miejsce. |
|
| ID posta:
431991
|
|
|
|
|
|
Tajan
Pomógł: 5548 razy Posty: 12042
|
Wysłany: 07-12-2023, 20:29
|
|
|
Jeszcze inny sposób odwołania:
Kod: | Private Sub ListBox1_Click()
Dim nrW As Long
nrW = ListBox1.ListIndex + 2
[d1] = [Tabelka1].Cells(nrW, 3).Value
[d2] = [Tabelka1].Cells(nrW, 5).Value
End Sub
|
Nazwa "Tabelka1" powinna być zdefiniowana z widocznością "Skoroszyt". |
|
| ID posta:
431992
|
|
|
|
|
|
Maciej Gonet
Excel Expert
Wersja: Win Office 365
Pomógł: 3545 razy Posty: 10461
|
Wysłany: 07-12-2023, 20:56
|
|
|
Tajan, brawo za skrót |
|
| ID posta:
431993
|
|
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
Strona uĹźywa plikĂłw cookies.
Kliknij tutaj, Ĺźeby dowiedzieÄ siÄ jaki jest cel uĹźywania cookies oraz jak zmieniÄ ustawienia cookie w przeglďż˝darce.
KorzystajÄ
c ze strony uĹźytkownik wyraĹźa zgodÄ na uĹźywanie plikĂłw cookies, zgodnie z bieĹźÄ
cymi ustawieniami przeglÄ
darki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe
|