Помогите передать значения переменных

Программирование на Visual Basic for Applications
own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Помогите передать значения переменных

Сообщение own » 23.06.2004 (Ср) 8:49

Приветствую Всех

Проблема такая, в VBAпроекте два модуля, надо значения переменных
1го модуля передать во 2ой модуль, чтобы там эти значения использовались.
Есть ли решение этой проблемки.
I'm Blind

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 23.06.2004 (Ср) 9:13

Объяви их глобально:
Код: Выделить всё
public VariableName as ...
"There's more than one way to do it!"

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 23.06.2004 (Ср) 9:37

Дело в том что они не объявлены, они созданы внутри процедуры,
вот так:

r = fc.row
а потом эта переменная вставляется сюда

Cells( r , 3 )

в следующей процедуре эта переменная значения не имеет
вот как ее получить это же значение в другой процедуре?
I'm Blind

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 23.06.2004 (Ср) 9:55

но ведь где-то ты объявляешь переменную "r"? Так кто мешает объявить её в модуле как Public?
"There's more than one way to do it!"

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 23.06.2004 (Ср) 11:00

Большое человеческое спасибо, попробую сегодня, если не получится, напишу.
I'm Blind

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 23.06.2004 (Ср) 12:34

Знать Ситуация такая, переменная "r" ни где в модуле не объявляется,
вот что у меня есть:

Применяю конструкцию For Each-Nexт для поиска ячейки, объявлены только 2 переменные связанные с конструкцией, внутри кострукции пишу r = fc.row, т.е. r - принемает номер строки.
Затем процедура кончается.

Новая процедура там надо занести значение в ячейку, для этого
я пишу ........Cells( r, 1)..... вот здесь "r" номер строки не имеет, поэтому выскакивает ошибка.
[/b]
I'm Blind

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 23.06.2004 (Ср) 12:42

но ведь где-то есть такая строка Dim r as integer (или long)? Иначе он бы ругался и требовал объявления переменной...
"There's more than one way to do it!"

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 23.06.2004 (Ср) 12:58

В том то и дело что нет, а неругается потому что On Error Resume next
Вот посмотри прмерно такой код у меня:

Sub okbutton_Click()
Dim ws As Worksheet
Dim wb As Workbook
For each wb in workbooks
For each ws in wb.worksheets
On Error Resume Next
Set fc = ws.usedrange.find ......
r = fc.row
next
next
End Sub

Sub format_Click()
g = TextBox1
' Здесь будет ошибка т.к. в этой процедуре r- уже неизвестен
Sheets("Лист2").Cells(r, 1) = g
End Sub
I'm Blind

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 23.06.2004 (Ср) 13:05

Во всех учебниках рекомендовано, чтобы в каждом модуле была такая строка: Option Explicit. Тогда все необъявленные переменные не смогут иметь место. Ну а дальше, объяви в одном из модулей переменную, как Public.
"There's more than one way to do it!"

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 23.06.2004 (Ср) 13:09

ок попробую.
Благодарствую и ниииизкий поклоон,
:wink: завтра отпишусь что получилось или не получилось.
I'm Blind

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 23.06.2004 (Ср) 15:09

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

Создаем UserForm
На нее кнопку и textBox1

1ая процедура

Sub TextBox()
r = TextBox1
End Sub

2ая процедура

Sub CommandButton1_Click()
Sheets("Лист1").Cells(r, 1) = 444
End Sub

Как перенести значение "r" из 1ой во 2ую процедуру?
I'm Blind

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.06.2004 (Ср) 15:35

Тебе русским языком советовали, объяви переменную R как Global или Public и используй.
Lasciate ogni speranza, voi ch'entrate.

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 23.06.2004 (Ср) 16:03

Код: Выделить всё
public r as integer

Sub TextBox()
r = TextBox1
End Sub

Sub CommandButton1_Click()
Sheets("Лист1").Cells(r, 1) = 444
End Sub
"There's more than one way to do it!"

own
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 07.05.2004 (Пт) 23:35

Сообщение own » 23.06.2004 (Ср) 16:37

Все ребята спасибо бальшое, я все понял УРАААААААА!!!!!!!!!
Да надо было просто объявлять в перели всех процедур.
СПАСИБО!!!!!


YESSSSSS
I'm Blind


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 123

    TopList