Rozwiązanie 4¶
Treść zadania¶
Komórki A1:A10
zawierają imiona i nazwiska oddzielone pojedynczą spacją. Stwórz przycisk, który po kliknięciu umieści w kolumnie B imiona, a w kolumnie C nazwiska z odpowiadających komórek z kolumny A.
Rozwiązanie¶
Sub Podziel_Click()
Dim dane, imiona, nazwiska As Range
Dim poz As Integer
Set dane = Range("A1:A10")
Set imiona = Range("B1")
Set nazwiska = Range("C1")
For Each kom In dane
poz = InStr(kom.Value, " ")
imiona.Value = Left(kom.Value, poz)
nazwiska.Value = Right(kom.Value, Len(kom.Value) - poz)
Set imiona = imiona.Offset(1, 0)
Set nazwiska = nazwiska.Offset(1, 0)
Next kom
End Sub
Opis rozwiązania¶
1. Deklarowanie zmiennych¶
Dim
to skrót od "Dimension" i służy do deklarowania zmiennych.dane, imiona, nazwiska
to zmienne, które będą przechowywać odniesienia do zakresów komórek (czyli grup komórek) w arkuszu.poz
to zmienna typu Integer, która będzie przechowywać pozycję, gdzie znajduje się spacja w ciągu znaków.
2. Ustawianie zakresów¶
Set
służy do przypisania odniesienia do obiektu do zmiennej.dane
jest ustawiony na komórki od A1 do A10,imiona
na komórkę B1, anazwiska
na C1.
3. Pętla przez komórki w zakres1¶
For Each
rozpoczyna pętlę, która wykona blok kodu dla każdego elementu w kolekcji (tutaj dla każdej komórki w zakresiedane
).
4. Szukanie pozycji spacji i dzielenie tekstu¶
poz = InStr(kom.Value, " ")
imiona.Value = Left(kom.Value, poz)
nazwiska.Value = Right(kom.Value, Len(kom.Value) - poz)
InStr(kom.Value, " ")
znajduje pozycję pierwszej spacji w tekście komórki.Left(kom.Value, poz)
wycina lewą część tekstu do spacji.Right(kom.Value, Len(kom.Value) - poz)
wycina prawą część tekstu od spacji.
5. Przesuwanie zakresów¶
Offset(1, 0)
przesuwa zakres o jedną komórkę w dół. To oznacza, że następny podzielony tekst zostanie umieszczony w kolejnej komórce w dół.
6. Koniec pętli¶
Next
oznacza koniec pętliFor Each
i powrót do jej początku, by przejść do kolejnej komórki w zakresiedane
.
7. Koniec procedury¶
End Sub
oznacza koniec skryptu (procedury).