Jak wygenerować zaproszenie na konferencję?

Formularze
Średniozaawansowany
Formuły
0:00czas trwania

Excel oprócz operacji liczbowych potrafi też generować dokumenty tekstowe. Dzięki prostej podmianie podstawowych danych mogą one być adresowane do wielu osób. Przykładem takiego dokumentu – rozsyłanego do wielu osób, ale ze spersonalizowanymi danymi - jest zaproszenie na spotkanie czy konferencję. W tym celu użyjemy funkcji tekstowych w VBA. Zapraszamy do przygotowania zaproszenia!

Opublikowane: 21 sierpnia 2019
Lekcję prowadzi: Kamil Skonecki
Pobierz szablon do dalszej pracy
Dostępne po opłaceniu
Wykonaj zadanie samodzielnie
Dostępne po opłaceniu

Zobacz krok po kroku jak wykonać lekcję

Z lekcji dowiesz się:

  • Jak zastosować funkcje tekstowe w VBA?

  • Jak przygotować zaproszenie na konferencję w Excelu?

  • Co to są sztuczne zmienne?

Pobierz szablon do dalszej pracy
Dostępne po opłaceniu
Wykonaj zadanie samodzielnie
Dostępne po opłaceniu

Z lekcji dowiesz się:

  • Jak zastosować funkcje tekstowe w VBA?

  • Jak przygotować zaproszenie na konferencję w Excelu?

  • Co to są sztuczne zmienne?

Naszym zadaniem jest wygenerowanie zaproszenia w oparciu o 3 zmienne, które są już podane przez użytkownika:

  • imię i nazwisko - celem będzie za pomocą funkcji tekstowych pobranie jedynie nazwiska z całego podanego tekstu,

  • wiek - w oparciu o pełnoletność osoby, będziemy mogli dynamicznie zmienia

  • treść zaproszenia z Pana/Pani, kiedy osoba ma więcej niż 18 lat, na Koleżanka/Kolega, kiedy osoba ma mniej niż 18 lat,

  • płeć - poprzez płeć będziemy determinować odpowiednią formułę osobową zaproszenia Pani/Koleżanka – dla kobiety i Pan/Kolega dla mężczyzny.

Dla przykładu – napisana funkcja dla użytkownika Anna Majda, która ma 25 lat i jest kobietą, powinna wygenerować następujące zaproszenie: „Szanowna Pani Majda jest zaproszona na konferencję…”

Kod programu:

Sub Zadanie_1()

Dim Godnosc As String

Dim Nazwisko As String

Dim dalszaCzesc As String

Tworzymy 3 sztuczne zmienne, które będą przechowywały wartości tekstowe w programie. Pamiętamy, że zmienne tekstowe deklarujemy jako wartość String.

dalszaCzesc = "Co dalej jest w zaproszeniu" -> dla przykładu tworzymy zmienną do której wpisujemy wartość tekstową, należy pamiętać, że jeżeli chcemy do zmiennej wpisać tekst, zawsze należy umieszczać go w cudzysłowie

Godnosc = Range("A2").Value -> w komórkę A2 wpisujemy imię i nazwisko (z tej zmiennej chcemy uzyskać tylko nazwisko)

W tym celu użyjemy, funkcji tekstowych. Poniżej przykłady funkcji tekstowej wraz z wyjaśnieniem.

LEFT(TEKST,DŁUGOŚĆ) np. LEFT(„VBA”,2)= VB

RIGHT(TEKST,DŁUGOŚĆ) np. RIGHT(„VBA”,2)=BA

LEN(TEKST) np. LEN(VBA)=3

INSTR(GDZIE_SZUKAM,CO_SZUKAM) np. INSTR(„VBA”, ”BA”)=2

REPLACE(GDZIE,CO,NA_CO) np. REPLACE(„VBA”,”BA”,”CE”)=VCE

Tak jak ustaliliśmy, celem jest pobranie z imienia i nazwiska wpisanego w komórkę jedynie nazwiska. Zapisujemy fragment kodu, który umożliwi pozyskanie zadanej wartości.

Nazwisko = Right(Godnosc, Len(Godnosc) - InStr(Godnosc, " "))

Podzielmy funkcje Right na dwie części aby lepiej zrozumieć jej działanie:

Right(Godnosc, Len(Godnosc)) – gdyby funkcja miała taką postać to zwróciłaby cały wyraz podany w komórce, czyli Anna Majda. W zaproszeniu zależy nam tylko na drugim członie, dlatego musimy znaleźć znak charakterystyczny, który oddziela je od siebie. Tym znakiem jest spacja, która w języku VBA traktowana jest jak normalny znak i zapisywany jest jako ” ” - czyli „pusty znak”. Następnie wykorzystamy funkcje Instr, która zwraca numer na którym znajduje się pusty znak. Odejmując liczbę całego wyrazu od liczby znaków do spacji uzyskamy ilość znaków na którym znajduje się drugi człon wyrazu. Jako, że składnia to imię nazwisko, to wyciągając tą liczbę od prawej strony uda się wyciągnąć nazwisko.

Następnie przechodzimy do weryfikacji płci oraz wieku osoby. W tym celu wykorzystamy funkcję Select Case (płeć), wewnątrz której wprowadzimy instrukcję warunkową (wiek).

Select Case Left(Cells(2, 3).Value, 1) -> przy użyciu funkcji tekstowej I konstrukcji Select Case musimy wyodrębnić pierwszą literę wyrazu licząc od lewej strony, a na jej podstawie zdeterminować składnie wewnątrz Case. Niezależnie czy wpiszemy płeć jako K, kobieta program działa poprawnie

Case "K"

If Range("B2") > 18 Then -> jeżeli wiek użytkownika jest większy od 18 to wykonaj następujące polecenie:

Range("D2").Value = "Szanowna Pani " & Nazwisko & " jest zaproszona na konferencje" generujemy odpowiednie zaproszenie na konferencję, ważne aby pamiętać że tekst należy umieszczać w cudzysłowie, natomiast zmienna mimo tego że wewnątrz zawiera tekst, to oczywiście nie wymaga zapisu w cudzysłowie. Odpowiednie części tekstu łączymy za pomocą „&”.

Else '

Range("D2").Value = "Szanowna Koleżanka " & Nazwisko & " jest zaproszona na konferencję " & dalszaCzesc

End If

Case "M" -> analogiczna konstrukcja jak powyżej tylko w przypadku kiedy podana osoba jest płci męskiej:

If Range("B2") > 18 Then

Range("D2").Value = "Szanowny Pan " & Nazwisko & " jest zaproszona na konferencje"

Else '

Range("D2").Value = "Szanowny Kolega " & Nazwisko & " jest zaproszona na konferencje"

End If

Case Else -> instrukcja która wyświetla podaną wartość, jeśli pierwsza litera w sprawdzanej komórce nie odpowiada wcześniejszym wartością Case, czyli w tym przypadku nie jest to ani K ani M.

MsgBox ("Niepoprawna plec")

End Select

End Sub

Pełna postać kodu:

Sub Zadanie_1()

Dim Godnosc As String

Dim Nazwisko As String

Dim dalszaCzesc As String

dalszaCzesc = "Co dalej jest w zapro"

Godnosc = Range("A2").Value

Nazwisko = Right(Godnosc, Len(Godnosc) - InStr(Godnosc, " "))

Select Case Left(Cells(2, 3).Value, 1)

Case "K"

If Range("B2") > 18 Then

Range("D2").Value = "Szanowna Pani " & Nazwisko & " jest zaproszona na konferencje"

Else '

Range("D2").Value = "Szanowna Koleżanka " & Nazwisko & " jest zaproszona na konferencje " & dalszaCzesc

End If

Case "M"

If Range("B2") > 18 Then

Range("D2").Value = "Szanowny Pan " & Nazwisko & " jest zaproszona na konferencje"

Else '

Range("D2").Value = "Szanowny Kolega " & Nazwisko & " jest zaproszona na konferencje"

End If

Case Else

MsgBox ("Niepoprawna plec")

End Select

End Sub

Pobierz gotowy arkusz z lekcji
Dostępne po opłaceniu
Wykonaj zadanie samodzielnie
Dostępne po opłaceniu
Kolejne kroki dostępne dla użytkowników którzy wykupili pełny dostęp

Jeszcze się wahasz?

Zobacz, co zyskasz, mając pełny dostęp:

  • Dostęp do wszystkich lekcji video
  • Materiały do ćwiczeń
  • Dodatkowe artykuły z trikami
  • Formularze gotowe od razu do użycia
  • E-booki pogłębiające Twoją wiedzę
  • Certyfikat potwierdzający Twoje umiejętności
Sprawdź co oferuje serwis Sprytny Excel »

Masz już konto w serwisie?

Zaloguj się

Adres e-mail:

Hasło

Nie pamiętam hasła
- Twój pierwszy krok do lepszych wyników
Oglądaj pełne lekcje i wiedz więcej!
Masz już konto w serwisie?
Zaloguj się »

Certyfikat rzetelności Laur zaufania SMB logo Top firma