Funkcja POŁĄCZ TEKSTY przed Excelem 2016 — odcinek #17

Od Excela 2016 została wprowadzona funkcja POŁĄCZ.TEKSTY, która w łatwy sposób umożliwia połączenie zwykłych tekstów, liczb, danych z zakresów dane, ale wcześniej nie było takiej funkcji, dlatego poniżej znajdziesz kod VBA, który taką funkcję tworzy i pozwala Ci z niej korzystać w Excelu.

vba-17-funkcja-polacz-teksty-przed-excelem-2016

Function POŁĄCZTEKST(ogranicznik As String, ignoruj_puste As Boolean _

, ParamArray tekst() As Variant) As String

    'Zmienne pomocnicze

Dim i As Integer, j As Integer

    'Pętla po wszystkich elementach parametru tekst

    'funkcja UBound wyznacza pierwszy wymiar parametru tekst

For i = 0 To UBound(tekst)

        'Sprawdzamy, czy aktualny (numer i) element parametru tekst jest zakresem

If TypeName(tekst(i)) = "Range" Then

            'Jeśli jest to musimy przejść po wszyskich jego komórkach

            'może być istotne, że VBA przechodzi od lewej do prawej, później góra dół

For j = 1 To tekst(i).Count

                'Jeśli ustawiłeś, że mają być ignorowane wartości puste to tu jest sprawdzane,

                'czyli argument ignoruj_puste musi być równy True

                'i komórka zakresu (tekst(i)(j)) musi być pusta

If Not (ignoruj_puste And tekst(i)(j) = "") Then

POŁĄCZTEKST = POŁĄCZTEKST & ogranicznik & tekst(i)(j)

End If

Next j

Else

            'Jeśli aktualny (numer i) element parametru tekst nie jest zakresem

            'to możemy go od razu połączyć, zakładam też, że nikt nie wpisze pustej wartości

            'więc nie sprawdzamy czy wartości wpisane są puste

POŁĄCZTEKST = POŁĄCZTEKST & ogranicznik & tekst(i)

End If

Next i

    'a na koniec wycinamy pierwszy ogranicznik, bo wstawia się na początku połączonego tekstu

POŁĄCZTEKST = Right(POŁĄCZTEKST, Len(POŁĄCZTEKST) — Len(ogranicznik))

End Function

 

Chcesz ze mną poznać możliwości VBA? Zobacz kiedy planowana jest następna edycja 30dniowego kursu online:
http://excelw30dni.pl/kategoria-produktu/szkolenia-vba/

Pozdrawiam
Adam Kopeć
Miłośnik Excela

Jak zamienić kropkę na przecinek w VBA — odcinek #16

Jeśli chcesz zamienić kropkę na przecinek za pomocą VBA natkniesz się na pewien problem w polskojęzycznym Excelu.
Często powtarzam, że jeśli nie wiesz jak coś zrobić/napisać w VBA, ale wiesz jak to zrobić w Excelu, to zarejestruj sobie makro, tego co robisz w Excelu, a później analizuj kod. Sprawdza się to w większości sytuacji. Tak też zrobimy teraz, czyli najpierw zarejestrujemy makro, gdzie w Excelu za pomocą opcji Zamień zmienimy kropkę na przecinek, a dopiero później sprawdzimy jak działa zarejestrowany kod VBA.
Do opcji Zamień najszybciej dojdziesz naciskając skrót klawiszowy Ctrl + H, potem wypełniasz odpowiednio pola (Znajdź – kropka, Zamień na – przecinek) i klikasz przycisk Zamień wszystko.

vba-16-jak-zamienic-kropke-na-przecinek-01

Teraz trzeba sprawdzić czy uruchomienie zarejestrowanego kodu zadziała.

vba-16-jak-zamienic-kropke-na-przecinek-02

Okazuje się, że nie do końca, bo w niektórych przypadkach może w ogóle nie dokonać zmiany, a w innych znaki się zmienią, ale liczby nie zostaną poprawnie rozpoznane przez Excela (są wyrównane do lewej).

Musisz pamiętać, że edytor VBA jest angielskojęzyczny, co się wiąże również z tym, że część całkowita jest oddzielona od części dziesiętnej liczby kropką, a nie przecinkiem jak w polskim Excelu. Dlatego w kodzie VBA musisz zrobić dziwną rzecz – zamienić kropkę na kropkę. Resztę zrobią ("przetłumaczą") ustawienia regionalne.

Tym razem zmiana dokonała się poprawnie.

vba-16-jak-zamienic-kropke-na-przecinek-03

Dlatego pamiętaj o tym, że edytor VBA zawsze "mówi" po angielsku, a Excel różnie w zależności od wersji językowej. Z tych różnic wynikają podobne różne dziwne kody.

Chcesz ze mną poznać możliwości VBA? Zobacz kiedy planowana jest następna edycja 30dniowego kursu online:
http://excelw30dni.pl/kategoria-produktu/szkolenia-vba/

Pozdrawiam
Adam Kopeć
Miłośnik Excela

Tab order czyli kolejność przeskakiwania między elementami na formularzu

Jak ustawić kolejność przeskakiwania pomiędzy elementami formularza?

Tab order czyli kolejność przeskakiwania między elementami na formularzu Tab order czyli kolejność przeskakiwania między elementami na formularzu

Kiedy tworzysz w Excelu VBA formularz i dodajesz do niego kolejne elementy, to chciałbyś, żeby kiedy naciskasz przycisk Tab przeskoki następowały w konkretnej kolejności (najczęściej z góry na dół).
Ale nie zawsze udaje się to zrobić od początki, ponieważ najpierw Excel VBA bazuje na kolejności w jakiej dodawałeś elementy.

Co prawda każdy poszczególny element ma własność TabIndex, ale zmieniając tą wartość dla pojedynczego elementu nie masz pewności jak zachowają się inne elementy. Dlatego dużo wygodniej w edytorze VBA otworzyć menu View i wybrać opcję Tab Order (kiedy masz aktywny wybrany formularz).

Otworzy się okienko z wszystkimi elementami wybranego formularza. Możesz przesuwać teraz ich kolejność góra (przycisk Move Up) i dół (przycisk Move Down).

Jak ustawisz właściwą kolejność możesz włączyć formularz i zobaczyć jak naciskając Tab przeskakujesz pomiędzy elementami formularza w wybranej kolejności.

Pewne elementy jak Label nie biorą udziału w tym przeskakiwaniu, mimo że można im ustawić własność TabIndex i pojawiają się w oknie Tab Order.

P.S.

Jeśli chcesz dowiedzieć się więcej na temat Excela lub nie wiesz jak coś zrobić to napisz do mnie. Ja w miarę możliwości odpowiem na Twoje pytanie.

Excel i Adam - kontakt

Bezpośredni odnośnik do filmu na youtube — Tab order czyli kolejność przeskakiwania między elementami na formularzu