Type mismatch. Как корректно объявить массивы?

Xyrma
Дата: 19.12.2015 17:31:33
Силы на исходе. не понять как правильно объявить массив.

Dim i As Integer
Dim j, pos, k As Integer
Dim p As Integer
Dim txt
Dim code
Dim stok As String
Dim lt As Integer

1 Private Sub Кнопка5_Click()
2   Dim tmp
3   txt = text1.Value
4    lt = Len(txt)
5     'MsgBox (lt)
6    txt = LCase(txt)
7    MsgBox (txt)
8    k = CInt(Int((10 * Rnd()) + 1))
9    'MsgBox (k)
    
10    For i = 1 To lt
11    p = Abs(k - code)
12    tmp = Mid(txt, i, 1)
13    code = InStr(p, bl, tmp)
14    MsgBox (CStr(code))
15    Next i
16    stok = ""
17    For i = 1 To lt
18        stok = stok & CStr(code(i))
19        Next
20      MsgBox (stok)
21    End Sub


Ставлю code as long, вылезает Expected array в 18 строке.
14ю использую просто для просмотра(убедиться что работает)

Помогите, пожалуйста!застряла на этом месте и дальше никак((((
__Michelle
Дата: 19.12.2015 17:59:31
Xyrma
Силы на исходе. не понять как правильно объявить массив.

Помогите, пожалуйста!застряла на этом месте и дальше никак((((

Хотя бы так
1. http://www.taurion.ru/access/13/6
2. http://www.on-line-teaching.com/vba/lsn0120.html
Тут всего много
3. https://yandex.ru/search/?lr=213&text=access vba объявление массива

Пожалуйста, пользуйтесь возможностями оформления сообщений.
Невозможно же читать.
Xyrma
Дата: 19.12.2015 18:02:56
__Michelle,

так я не могу понять что тут не так..(((
__Michelle
Дата: 19.12.2015 18:15:05
Xyrma
__Michelle,

так я не могу понять что тут не так..(((

За минуту уже ознакомились с материалом по ссылкам?

Попробуйте увидеть разницу между правилом и Вашим описанием
http://www.taurion.ru/access/13/6 ЭТО ПЕРВАЯ ССЫЛКА. СМОТРЕЛИ? РЕКОМЕНДУЮ - ТАМ И ПРИМЕР ЕСТЬ...
Вот синтаксис оператора объявления массива:
Dim <имяМассива> (<размер1>, <размер2>, ...) As <типДанных>
где указанные в скобках величины <размер1>, <размер2> и т.д. задают размеры массива — количество индексов и максимально допустимое значение для каждого. конкретного индекса. При этом индексирование элементов массива по умолчанию начинается с нуля.

Видите, кстати, как Ваш код в первом сообщении оформили тегами (модераторам спасибо скажите)?
Xyrma
Дата: 19.12.2015 18:27:34
__Michelle,

Спасибо.В дальнейшем обязательно буду пользоваться)

Я все эти материалы изучала до этого. И не только эти. и книги, и форумы, и сайты.

Если code объявить
Dim code as long

то как я уже говорила, вылезает другая ошибка.
Expected array

Если задаю ему размер
Dim code (1 to 1000) as long

то в 11 строке вылезает
Type mismatch

и....все(
__Michelle
Дата: 19.12.2015 18:48:50
Xyrma,

Попробуйте без явного указания типа
Dim code (1 to 1000)
Будет возникать ошибка?
Xyrma
Дата: 19.12.2015 18:55:19
__Michelle,

да. там же
p = Abs(k - code)
__Michelle
Дата: 19.12.2015 19:07:26
Xyrma
__Michelle,

да. там же
p = Abs(k - code)
Но ведь, для начала, надо указать конкретный элемент массива...
p = Abs(k - code(i))
Xyrma
Дата: 19.12.2015 19:18:29
__Michelle,

СПАСИБО Вам огромное!!!!

Пришлось исправить и здесь
code(i + 1) = InStr(p, bl, tmp)
MsgBox (CStr(code(i)))[/SRC]

Вот только теперь строка
 p = Abs(k - code(i))

не выполняет свою функцию.
Поиск опять начинается с первого символа.
Если ставлю
code(i+1)
то не показывает позицию первого символа...