Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 70472 Skopiuj do schowka Tłumaczenie kodu VBA na ludzki język
Autor Wiadomość
sp3wbe 
Starszy Forumowicz


Wersja: Win Office 2016
Pomógł: 1 raz
Posty: 44
Wysłany: 20-03-2021, 14:04   Tłumaczenie kodu VBA na ludzki język

Witam
Mam bardzo nietypową prośbę. W jednym z makr które użyłem posłużyłem się znalezionym w necie rozwiązaniem sumującym w określonej kolumnie wartości. Wszystko działa prawidłowo, ale w żaden sposób nie rozumiem działania tego polecenia. Czy mogę prosić o wyjaśnienie działania krok po kroku tej jednej linii.

Kod:
Cells(k + 1, 6).Value = "=SUM(" & Range(Cells(2, 6), Cells(k, 6)).Address(False, False) & ")"


Bardzo dziękuję za wyjaśnienie
_________________
Tadek
ID posta: 402412 Skopiuj do schowka
 
 
Artik 



Wersja: Win Office 365
Pomógł: 3139 razy
Posty: 10389
Wysłany: 20-03-2021, 14:27   

sp3wbe napisał/a:
Cells(k + 1, 6).Value
Do komórki w kolumnie F i wierszu k+1 przypisz wartość. Tu błąd, bo bardziej prawidłowo powinno być "... przypisz formułę":
Kod:
Cells(k + 1, 6).Formula = ...
Czyli do wspomnianej komórki przypisujemy formułę (musi być w wersji amerykańskiej, czyli SUM, a nie SUMA), której zadaniem jest zsumowanie zakresu (Range) od Cells(2, 6) (po ludzku F2 (bo 6 to kolumna F)) do komórki Fk. Fk to komórka wyżej od tej, do której przypisywana jest formuła.

Raczej napisałbym to tak:
Kod:
Cells(k + 1, 6).Formula = "=SUM(" & Range(Cells(2, 6), Cells(k, 6)).Address(0, 0) & ")"
lub
Kod:
Cells(k + 1, "F").Formula = "=SUM(" & Range(Cells(2, "F"), Cells(k, "F")).Address(0, 0) & ")"

Artik
_________________
Persistence is a virtue in the world of programming.
ID posta: 402413 Skopiuj do schowka
 
 
caelian
ExcelGaduła 500+


Wersja: Win Office 365
Pomógł: 61 razy
Posty: 563
Wysłany: 20-03-2021, 14:35   

ja bym dodatkowo jeszcze napisał iż k w powyższych formułach to zmienna.
Zmienna jak nazwa wskazuje ma zmienna wartość,
w przypadku powyższym wartość zmienia się o +1 co pozwala "kodowi" przechodzić do kolejnego wiersza o wyższym numerze.

Podejrzewam że masz gdziesz w kodzie taką linię:

Kod:
k = 1

1nka to tak naprawdę liczba początkowa do której każdorazowo jest dodawana jedynka.

(k = 1) + 1 = 2 gi wiersz
(k = 2) + 1 = 3ci wiersz
(k = 3) + 1 = 4ty wiersz
(k = 4) + 1 = 5ty wiersz
......
(k =n) + 1 = n+1 wiersz.
ID posta: 402414 Skopiuj do schowka
 
 
sp3wbe 
Starszy Forumowicz


Wersja: Win Office 2016
Pomógł: 1 raz
Posty: 44
Wysłany: 20-03-2021, 15:14   

Wszystko się Panowie zgadza, ale do czego służy ten kawałek kodu?
Kod:
Address(False, False) & ")"
_________________
Tadek
ID posta: 402417 Skopiuj do schowka
 
 
caelian
ExcelGaduła 500+


Wersja: Win Office 365
Pomógł: 61 razy
Posty: 563
Wysłany: 20-03-2021, 16:59   

https://docs.microsoft.com/en-us/office/vba/api/excel.range.address

'software-solutions-online.com/use-vba-range-address-method/'

Uncle google to the rescue^^

funkcja pozyckuje adtress komórki
ID posta: 402423 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 2016
Pomógł: 2118 razy
Posty: 6628
Wysłany: 20-03-2021, 17:28   

Te 2 argumenty logiczne po Address określają, czy adres ma być względny czy bezwzględny. Wartości False (które można zastąpić zerem) powodują, że generowany jest adres względny (bez dolarów).

caelian, przeczytaj sobie ostatnie zdanie swojego postu i wyjaśnij w jakim to języku?
Przed wysłaniem warto przeczytać co się wysyła, nawet jeśli chęci są jak najlepsze.
ID posta: 402425 Skopiuj do schowka
 
 
caelian
ExcelGaduła 500+


Wersja: Win Office 365
Pomógł: 61 razy
Posty: 563
Wysłany: 20-03-2021, 18:21   

crap, faktycznie...
przepraszam, niestety nie moge edytowac posta bo minelo ponad 30 min ;/
ID posta: 402426 Skopiuj do schowka
 
 
sp3wbe 
Starszy Forumowicz


Wersja: Win Office 2016
Pomógł: 1 raz
Posty: 44
Wysłany: 20-03-2021, 21:19   

Maciej przepraszam.
Tobie miałem dodać punkt. Twoje wyjaśnienie może nie do końca wyjaśnia moje rozterki, ale już wiem jak to działa za sprawą Twoich sugestii.
_________________
Tadek
ID posta: 402430 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 2016
Pomógł: 2118 razy
Posty: 6628
Wysłany: 21-03-2021, 00:43   

Punkt możesz dać każdemu, kto się wypowiadał w Twoim temacie i kogo wypowiedź uznasz za wartościową, nie musisz wybierać, komu dać, a komu nie. Możesz przyznać punkt nawet każdej odpowiedzi.
A jeśli coś dalej jest niejasne, możesz pytać dalej. Czasem trudno się domyślić, z czym kto może mieć problem. Poza tym znaczenie argumentów metod i funkcji jest jakoś tam wyjaśnione w helpie. Warto zacząć lekturę od tego, a dopiero gdy tam czegoś brakuje lub jest niejasno napisane, albo (co częste) nie ma przykładów użycia, wtedy pytać.
ID posta: 402434 Skopiuj do schowka
 
 
ąćęłńóś
Excel Expert


Pomógł: 327 razy
Posty: 1615
Wysłany: 21-03-2021, 12:33   

sp3wbe napisał/a:
wyjaśnienie działania krok po kroku tej jednej linii

Zawsze możesz sobie rozbić tę linię na składowe i prześledzić klawiszem 'F8' i/lub dodać składowe do obserwacji ("Add Watch", w menu "Debug" lub spod ppm).
Kod:
Option Explicit

Sub aaa()
    Dim k As Long
    Dim adres As String, from_ula As String
   
    k = 3
   
    adres = Range(Cells(2, 6), Cells(k, 6)).Address(False, False)
   
    from_ula = "=SUM(" & adres & ")"
   
    Cells(k + 1, 6).Formula = from_ula
End Sub


Edycja:

Dodany obrazek

kot-śledź.jpg
Plik ściągnięto 20 raz(y) 34.73 KB

Ostatnio zmieniony przez ąćęłńóś 21-03-2021, 18:48, w całości zmieniany 1 raz  
ID posta: 402449 Skopiuj do schowka
 
 
sp3wbe 
Starszy Forumowicz


Wersja: Win Office 2016
Pomógł: 1 raz
Posty: 44
Wysłany: 21-03-2021, 16:14   

A no właśnie. Teraz jest wszystko jasne jak na dłoni. Bardzo dziękuję za wskazówki. Kolega
"ąćęłńóś" jest , albo powinien być nauczycielem. Co ja piszę... jest doskonałym nauczycielem.
Dobry nauczyciel sam nie rozwiązuje uczniowi zadania, lecz podsuwa mu tok myślenia jak to zadanie rozwiązać. Temat uważam za zamknięty i wszystkim dziękuję za pomoc.
_________________
Tadek
ID posta: 402461 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

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