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¶
Dimto skrót od "Dimension" i służy do deklarowania zmiennych.dane, imiona, nazwiskato zmienne, które będą przechowywać odniesienia do zakresów komórek (czyli grup komórek) w arkuszu.pozto zmienna typu Integer, która będzie przechowywać pozycję, gdzie znajduje się spacja w ciągu znaków.
2. Ustawianie zakresów¶
Setsłuży do przypisania odniesienia do obiektu do zmiennej.danejest ustawiony na komórki od A1 do A10,imionana komórkę B1, anazwiskana C1.
3. Pętla przez komórki w zakres1¶
For Eachrozpoczyna 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¶
Nextoznacza koniec pętliFor Eachi powrót do jej początku, by przejść do kolejnej komórki w zakresiedane.
7. Koniec procedury¶
End Suboznacza koniec skryptu (procedury).