Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2010, 13:27   #1
SkrudjMakdak
Форумчанин
 
Регистрация: 14.04.2010
Сообщений: 145
По умолчанию Строковые типы данных

Когда я определяю строковую переменную dim str as String, то я не могу получить доступ к нужному символу (например str(4)), т.к. этот тип данных хранит не одним куском, а блоками. Есть ли СТРОКОВЫЙ тип данных, который будет хранить данные одним куском, например как в делфях (String), или как "взять" этот символ?
SkrudjMakdak вне форума Ответить с цитированием
Старый 31.07.2010, 14:35   #2
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

Цитата:
Сообщение от SkrudjMakdak Посмотреть сообщение
Когда я определяю строковую переменную dim str as String, то я не могу получить доступ к нужному символу (например str(4)), т.к. этот тип данных хранит не одним куском, а блоками. Есть ли СТРОКОВЫЙ тип данных, который будет хранить данные одним куском, например как в делфях (String), или как "взять" этот символ?
Ты это об чем?
Код:
str_4 = mid(str,4,1)
аналитика вне форума Ответить с цитированием
Старый 31.07.2010, 15:35   #3
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

Преобразование строк в байтовые массивы и наоборот
Код:
Sub StringToByteArray()
   Dim sText As String
   Dim aByt() As Byte, aByt1(1 To 2) As Byte
   Dim i As Integer
   
   i = 4
   sText = "Проба"
   aByt() = sText
   aByt1(1) = aByt(2 * i - 2)
   aByt1(2) = aByt(2 * i - 1)
   
   For i = LBound(aByt) To UBound(aByt)
      Debug.Print i; aByt(i)
   Next i
   Debug.Print "-----------"
   
   sText = aByt()
   Debug.Print sText

   sText = aByt1()
   Debug.Print sText
End Sub
аналитика вне форума Ответить с цитированием
Старый 31.07.2010, 16:22   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

SkrudjMakdak, выбранное вами имя переменной str не совсем удачно, поскольку в VBA есть одноимённая функция:
Код:
txt = Str(123)
В большинстве случаях использование имен функций в качестве переменных приводит к ошибке.
Выберите какое-нибудь другое название для переменной.
EducatedFool вне форума Ответить с цитированием
Старый 31.07.2010, 17:53   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

EducatedFool и аналитика Вы его не правильно поняли.В других языках возможен такой вариант
Код:
      Dim ssl As String = "ВАСЯ"

        MsgBox(ssl(1))
Результат -выводится вторая буква

То SkrudjMakdak в VBA такое не возможно
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 31.07.2010, 19:05   #6
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

по моему, понятно, что хотел SkrudjMakdak - обращаться к "строковой" переменной как к буквенному массиву, я ему и предложил суррогатное решение ч/з байтовые массивы (то, как VBA хранит строки)
аналитика вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строковые типы данных,длинное целое The riddle Помощь студентам 2 13.06.2009 06:27
Типы данных nedden Помощь студентам 2 12.11.2008 17:18
Строковые типы SunKnight Общие вопросы Delphi 8 07.05.2008 15:46
Типы данных??? Рустам Общие вопросы Delphi 10 08.11.2007 08:03