Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Type mismatch 
:(
    Опции темы
newbie2009
Дата 23.6.2012, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



Добрый день.

Подскажите пожалуйста что не так в след. строчках кода:
Код

    Dim i As Integer
    i = 2

    Dim code As String
    code = Sheets(1).Range("B" + i).Value


В посл строке говорит type mismatch

Спасибо за внимание.

Это сообщение отредактировал(а) newbie2009 - 23.6.2012, 20:56
PM MAIL   Вверх
Данкинг
Дата 23.6.2012, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



А значение поля точно текстовое получается?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
newbie2009
Дата 23.6.2012, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



Стоит Общий...
PM MAIL   Вверх
Данкинг
Дата 23.6.2012, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Попробуй
Код

code = Sheets(1).Range("B" + CStr(i)).Value



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
newbie2009
Дата 23.6.2012, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



 теперь проблема в след:

    
Код

Dim codeArray()
codeArray(k - 1) = code


Где нач. значение k = 2 и оно не бывает меньше 1...
а значение code оно вылелитела ошибка при code = 8775.

Ошибка subscript out of range...

Из-за чего это может быть?

Попробовал сделать объявление вот такое, не помогло:
Код

    Dim codeArray() As String


Это сообщение отредактировал(а) newbie2009 - 23.6.2012, 21:21
PM MAIL   Вверх
Данкинг
Дата 23.6.2012, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Цитата(newbie2009 @  23.6.2012,  22:19 Найти цитируемый пост)
Из-за чего это может быть? 

Из-за того, что размерность массива меньше, чем 8775.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
newbie2009
Дата 23.6.2012, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



Я думал codeArray динамический и он сам разширяется нет?

а строчка с равно означает, что я k-1 элементу присваиваю значение code...

Разве нет?

И если нет, то как мне тогда сделать так что бы оно само разширяло массив и не трогало значения к-ые там записаны?

Я так понял надо как-то так:
Код

Dim codeArray()

...
ReDim codeArray(k-1) As String
codeArray(k - 1) = code

k = k +1


Правильно, да? И к-во элементов в массиве я потом должен узнавать как? как-то так -UBound(codeArray) - LBound(codeArray) + 1 ?

И еще сразу такой вопрос....
Есть ли аналоги continue/break для VBA... Или только через goto Делать надо?

Это сообщение отредактировал(а) newbie2009 - 23.6.2012, 21:44
PM MAIL   Вверх
Данкинг
Дата 23.6.2012, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Цитата(newbie2009 @  23.6.2012,  22:23 Найти цитируемый пост)
Правильно, да? И к-во элементов в массиве я потом должен узнавать как? как-то так -UBound(codeArray) - LBound(codeArray) + 1 ?

Ну, попробуй. Похоже на правду, только я на практике с этим не сталкивался.
Цитата(newbie2009 @  23.6.2012,  22:23 Найти цитируемый пост)
break 

Exit For
Цитата(newbie2009 @  23.6.2012,  22:23 Найти цитируемый пост)
continue

Loop


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
newbie2009
Дата 23.6.2012, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 8.2.2009

Репутация: нет
Всего: нет



а Loop и Exit For работает для DO While ? А то пишет ошибку , когда я делаю Loop

И по ходу ReDim затирает старые значения.... Или нет?

Это сообщение отредактировал(а) newbie2009 - 23.6.2012, 23:54
PM MAIL   Вверх
dorogoyIV
Дата 26.6.2012, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 4
Всего: 46



Цитата(newbie2009 @  23.6.2012,  22:44 Найти цитируемый пост)
И по ходу ReDim затирает старые значения.... Или нет?

Код

ReDim Preserve ...

PM MAIL   Вверх
FINANSIST
Дата 11.7.2012, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

Репутация: 13
Всего: 23




newbie2009, Лови
Код

Option Explicit
Sub Макрос1()
Dim x As Long
Dim MyMass() As String
'заливаем на лист пример
For x = 1 To 33 Step 1
    Let ActiveSheet.Range("A" & x).Value = "A" & Rnd()
Next
'Заливаем в массив
Let x = 0
Do
Let x = x + 1
ReDim Preserve MyMass(x - 1)
    Let MyMass(x - 1) = ActiveSheet.Range("A" & x).Value
Loop While Not IsEmpty(ActiveSheet.Range("A" & x).Value)
'выплевываем на лист сборку массива
ActiveSheet.Range("A65000").End(xlUp).Offset(1, 0).Value = Join(MyMass(), "/")
'выплевываем на лист размерность массива
ActiveSheet.Range("A65000").End(xlUp).Offset(1, 0).Value = UBound(MyMass())
End Sub



--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.