Как обратится к ячейке, как к массиву?

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
M.Juanito
Сообщения: 5
Зарегистрирован: 20 сен 2005, 18:37

Здраствуйте!
подскажите пожалуйста..

програмлю макрос для Екселя.
каким образом можно обратится к ячейкев екселе, как к массиву из букв?

тобишь нужно перебрать то что записанов ячейке посимвольно.

заранеее спасибо
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Код: Выделить всё

iValue = Range("A1").Value

If Not IsError(iValue) Then
   For iSymbol = 1 To Len(iValue)
       MsgBox Mid(iValue, iSymbol, 1), , ""
   Next
End If
Если в ячейке наличествует формула и Вас интересует её текст, а не значение которая она возвращает, то вместо свойства .Value нужно использовать другое свойство, а именно .Formula
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

а ещё есть таоке свойство:

Код: Выделить всё

Characters Property Example

This example formats the third character in cell A1 on Sheet1 as bold.

With Worksheets("Sheet1").Range("A1")
    .Value = "abcdefg"
    .Characters(3, 1).Font.Bold = True
End With

Изображение
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Самый цимус еще и в том, что например

.Characters(2,3).Text = "qwerty"

Заменит 3 буквы (начиная со второй) на целых пять.

или

.Characters(2,3).Text = ""

Удалит эти самые три буквы.

Очень удачный метод Characters, я считаю!
M.Juanito
Сообщения: 5
Зарегистрирован: 20 сен 2005, 18:37

не. мне начада чтоп если в ячейке написано "йцук45"
я мог поочередно взять сначала "й" потом "ц" потом "у" и тд

тоесть по типу масива как например в том же паскале строка[номер символа] есть в VB ченидь аналогичное?
M.Juanito
Сообщения: 5
Зарегистрирован: 20 сен 2005, 18:37

Игорь Акопян писал(а):а ещё есть таоке свойство:

Код: Выделить всё

Characters Property Example

This example formats the third character in cell A1 on Sheet1 as bold.

With Worksheets&#40][/quote]
во! кажись оно. пасиба!
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

не. мне начада чтоп если в ячейке написано "йцук45"
я мог поочередно взять сначала "й" потом "ц" потом "у" и тд © M.Juanito 2005
А что по Вашему мнению делает функция Mid из самого первого примера ...
M.Juanito
Сообщения: 5
Зарегистрирован: 20 сен 2005, 18:37

pashulka писал(а):
не. мне начада чтоп если в ячейке написано "йцук45"
я мог поочередно взять сначала "й" потом "ц" потом "у" и тд © M.Juanito 2005
А что по Вашему мнению делает функция Mid из самого первого примера ...
хм. тоже вариант. спасибо :)
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

И не просто вариант, а хороший вариант, так как если в ячейке будет наличествовать ссылка/функция/формула, то .Characters.Text Вам ничем не поможет. Можно конечно и в этом случае решить задачу с использованием .Characters, например, "запомнить" текст этой самой формулы, затем заменить формулу на значение, которое она возвращает, затем использовать этот самый характер и только после этого вернуть всё на круги своя. А можно просто использовать функцию Mid(Mid$) ... ведь даже если сейчас Ваша ячейка не содержит формулы, то можете ли Вы дать гарантию, что в дальнейшем ничего не изменится ...

P.S. При ответе цитировать предыдущее сообщение вовсе не обязательно.
M.Juanito
Сообщения: 5
Зарегистрирован: 20 сен 2005, 18:37

да я знаю чтоне обязательно. ет чтоп быловидно на что отвечаю)

хорошо. попробую с mid. спасибо
Ответить