1513 / 483 / 57
Регистрация: 10.04.2009
Сообщений: 8,213
1

Какие есть ограничения на объявление переменных

12.08.2011, 16:44. Показов 9598. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравстуйте, подскажите, когда объявляешь массив какие есть ограничения
делаю так

Visual Basic
1
 Dim Данные(Цикл + Добавить) As String
ошибка Constant expression regured

делаю так, так как подумал, может нельзя сразу прибавлять

Visual Basic
1
Dim Данные(cursor_column_cell) As String
та же ошибка
Как нужно??? ну если просто число то понятно, а если хочется переменную, как быть???

2
пишу так
Visual Basic
1
2
'добавить ... строк таблицы ниже выделенной строки
        Selection.InsertRowsBelow Добавить_строк
Ошибка 13 Type mismatch Несоответствие типа
Переменная у меня объявлена: Const Добавить_строк As Byte = 32
Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2011, 16:44
Ответы с готовыми решениями:

есть ли какие-то ограничения Excel ?
В книге Excel имеется несколько листов a1.04, a2.04, .... a14.04. Обычным способом создаем...

Visual C++ Express какие есть ограничения?
Привет! Возможно ли сделать полноценную программу в экспрес версии visual c++? есть ли в версии...

Какие у C# Express есть ограничения по работе с базами данных
Добрый день! Подскажите пожалуйста, какие у Visual c# Express есть ограничения по работе с базами...

Какие есть ограничения при создании ВЧ передающих устройств?
Из интернета нарыл, что на использование определенных частот существуют запреты, лицензии и другие...

10
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
12.08.2011, 16:47 2
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Здравстуйте, подскажите, когда объявляешь массив какие есть ограничения
Как нужно??? ну если просто число то понятно, а если хочется переменную, как быть???
А redim в сочетании динамическим массивом чем не подходит?
0
1513 / 483 / 57
Регистрация: 10.04.2009
Сообщений: 8,213
12.08.2011, 16:57  [ТС] 3
там просто redim надо ставить или с пресервами??
0
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
12.08.2011, 17:17 4
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
там просто redim надо ставить или с пресервами??
Remarks

The ReDim statement is used to size or resize a dynamic array that has already been formally declared using a Private, Public, or Dim statement with empty parentheses (without dimension subscripts).

You can use the ReDim statement repeatedly to change the number of elements and dimensions in an array. However, you can't declare an array of one data type and later use ReDim to change the array to another data type, unless the array is contained in a Variant. If the array is contained in a Variant, the type of the elements can be changed using an As type clause, unless you're using the Preserve keyword, in which case, no changes of data type are permitted.

If you use the Preserve keyword, you can resize only the last array dimension and you can't change the number of dimensions at all. For example, if your array has only one dimension, you can resize that dimension because it is the last and only dimension. However, if your array has two or more dimensions, you can change the size of only the last dimension and still preserve the contents of the array. The following example shows how you can increase the size of the last dimension of a dynamic array without erasing any existing data contained in the array.

ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)


Similarly, when you use Preserve, you can change the size of the array only by changing the upper bound; changing the lower bound causes an error.

If you make an array smaller than it was, data in the eliminated elements will be lost. If you pass an array to a procedure by reference, you can't redimension the array within the procedure.

When variables are initialized, a numeric variable is initialized to 0, a variable-length string is initialized to a zero-length string (""), and a fixed-length string is filled with zeros. Variant variables are initialized to Empty. Each element of a user-defined type variable is initialized as if it were a separate variable. A variable that refers to an object must be assigned an existing object using the Set statement before it can be used. Until it is assigned an object, the declared object variable has the special value Nothing, which indicates that it doesn't refer to any particular instance of an object.
0
1513 / 483 / 57
Регистрация: 10.04.2009
Сообщений: 8,213
12.08.2011, 17:44  [ТС] 5
что толку читать Хелп, хоть и Гугл помогает:

Заявление ReDim используется по размеру или размер динамического массива, который уже был официально объявлен с использованием Private, Public или Dim заявление с пустыми скобками (без измерения индексов).

Вы можете использовать ReDim в заявлении несколько раз для изменения числа элементов и измерений в массиве. Однако Вы не можете объявить массив одного типа данных и в дальнейшем использовать ReDim изменять массив в другой тип данных, если массив содержится в Variant. Если массив содержится в Variant, тип элементов могут быть изменены с помощью как тип пункта, если вы не используете ключевое слово заповедника, в этом случае, никакие изменения типа данных не допускаются.

Если вы используете заповедник ключевого слова, вы можете изменить размер только последней размерности массива, и Вы не можете изменить число измерений на всех. Например, если массив имеет только одно измерение, Вы можете изменить размер этого измерения, потому что это последний и единственный аспект. Тем не менее, если массив состоит из двух или более измерений, Вы можете изменить размер только последней размерности и сохранить содержимое массива. Следующий пример показывает, как можно увеличить размер последней размерности динамического массива без стирания существующих данных, содержащихся в массиве.

ReDim X (10, 10, 10)
ReDim Preserve X (10, 10, 15)


Аналогичным образом, когда вы используете заповедника, вы можете изменить размер массива только путем изменения верхней границы, изменение нижней границы приводит к ошибке.

Если вы сделаете массива меньше, чем это было, данные в устранены элементы будут потеряны. Если вы передаете массив в процедуру по ссылке, вы не можете redimension массива внутри процедуры.

Когда переменные инициализируются, числовая переменная инициализируется в 0, строка переменной длины инициализируется нулевой длины (""), строки и строки фиксированной длины заполняется нулями. Вариант переменные инициализируются пустой. Каждый элемент пользовательского типа переменной инициализируется так, как если бы он был отдельной переменной. Переменная, которая ссылается на объект, должен быть назначен существующего объекта с использованием набора заявлении, прежде чем он может быть использован. Пока он не назначен объекта, заявленного объекта переменная имеет специальное значение Nothing, которое указывает, что это не относится к какой-либо конкретный экземпляр объекта.

То что я спрашиваю имеет ответ из одного предложения, а тут масло масляное, можете одним предложением ответить??

Добавлено через 13 минут
разобрался
по русски
если надо объявить массив можно указать размер массива, только указав его значение:
Dim Данные() As String
если надо изменить размер массива или указать переменную как значение размера массива:
ReDim Preserve Данные(Цикл + Добавить) или ReDim Preserve Данные(Добавить)
изменять можно много раз
а можно плюнуть если примерно знаешь нужное количество и воспользоваться здравым смыслом, указать, экономится одна строка, как бальзам на душу
Dim Данные(999) As String
осталось по вопросу:
Visual Basic
1
Selection.InsertRowsBelow Добавить_строк
Тоже загадка ВБА
0
Заблокирован
12.08.2011, 17:52 6
Ципихович Эндрю,
нельзя переменные использовать при объявлении массива. Если используешь переменные, то появляется сообщение при запуске кода: Constant expression required. Что означает, что требуется константа (т.е. непеременная) при указании размера массива.
1
1513 / 483 / 57
Регистрация: 10.04.2009
Сообщений: 8,213
12.08.2011, 18:02  [ТС] 7
Цитата Сообщение от Busine2009 Посмотреть сообщение
Ципихович Эндрю,
нельзя переменные использовать при объявлении массива. Если используешь переменные, то появляется сообщение при запуске кода: Constant expression required. Что означает, что требуется константа (т.е. непеременная) при указании размера массива.
Загадка ВБАшная, просто надо принять к сведению и всё
по вопросу

пишу так

Visual Basic
1
2
    'добавить ... строк таблицы ниже выделенной строки
        Selection.InsertRowsBelow Добавить_строк
Ошибка 13 Type mismatch Несоответствие типа
Переменная у меня объявлена: Const Добавить_строк As Byte = 32
не знаете??
0
Заблокирован
12.08.2011, 18:07 8
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Selection.InsertRowsBelow Добавить_строк
Не надо указывать Добавить_строк. Будет вставлено столько строк, сколько выделено. Надо в справку иногда заглядывать, там примеры есть.
1
1513 / 483 / 57
Регистрация: 10.04.2009
Сообщений: 8,213
12.08.2011, 18:10  [ТС] 9
мой разум это не может понять, придётся тоже запомнить
0
Заблокирован
12.08.2011, 18:12 10
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
мой разум это не может понять
так запрограммировано - для этого справка с примерами и существует, чтобы пользоваться VBA.
0
437 / 144 / 9
Регистрация: 12.01.2009
Сообщений: 678
Записей в блоге: 1
12.08.2011, 19:42 11
Цитата Сообщение от Busine2009 Посмотреть сообщение
Не надо указывать Добавить_строкНадо в справку иногда заглядывать, там примеры есть.
Золотые слова)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2011, 19:42
Помогаю со студенческими работами здесь

Определить или протестировать, есть ли в конфигурации какие-либо ограничения по ее функционалу
Добрый день. Ребята подскажите как можно определить или протестировать, есть ли в конфигурации...

Есть ли какие-то ограничения на количество или объем передаваемых сервлету параметров из HTML?
Hi, ALL! Есть ли какие-то ограничения в кол-ве или объеме передаваемых сервлету параметров из...

Есть ли какие - то ограничения по минимальной версии Windows / Linux для последней версии Qt?
Привет! Вот тут какие - то непонятки. Скачал Qt последний на Win7 - ворк пёрфеткли, на 8.1 - та же...

Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе
Для каждого из четырех классов указаны имена девочек, обучающихся в них. Определить, какие из этих...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru