planetz Ответов: 2

Как использовать одну переменную в нескольких подразделах в макросе в excel VBA


Всем Привет,

У меня есть макрос, который разделен на 2 субмарины.

Пользовательский интерфейс имеет 2 кнопки, каждая из которых назначена субподрядчику.

Мой запрос находится в первом подзаголовке, есть расчет, предположим, он дает x=2. Во втором подменю мне нужно проверить значение x.

Я не могу вызвать одну субмарину из другой, так как они работают с разных кнопок.

Редактировать:
При первом нажатии кнопки пользователь будет просматривать файлы,а количество файлов будет сохранено в X.
При втором нажатии кнопки появится проверка, если x > 0.
Пользователь может подождать некоторое время после нажатия первой кнопки. Или может изменить нет файлов.

Таким образом, субмарины исключают друг друга, за исключением переменной x.

Как это сделать??
Спасибо...!!

Что я уже пробовал:

1. " Dim x как целое число"
снаружи все подводные лодки. Но он не сохраняет своей ценности.

2. я пытался использовать функцию, но это ни к чему меня не привело!!

Patrice T

Покажи код !

planetz

dim fcount как целое число

публичные суб-браузерные файлы()
"просмотр файлов и подсчет нет файлов
fcount=fcount+1
конец подводной лодки

public sub runMacro()
если fcount > 0, то
- сделай что-нибудь
конец, если
конец подводной лодки


**две подводные лодки работают на двух разных щелчках кнопок

2 Ответов

Рейтинг:
2

Maciej Los

Если вы хотите определить глобальную переменную, вставьте новый модуль и объявите его таким образом:

Public xSharedValue As Integer


Но...

Вы можете вызвать одну субмарину из другой:
Private Sub Button1_Click
    'your code here
    '....
    
    'call another sub/procedure
    DoSomething(x)
End Sub

Private Sub DoSomething(ByVal x As Integer)
    'your code here
End Sub


Если DoSomething процедура находится в другом модуле, вы должны изменить ее объявление на:
Private Public Sub DoSomething(ByVal x As Integer)
    'your code here
End Sub


Для получения более подробной информации, пожалуйста, смотрите: Область действия переменных в Visual Basic для приложений[^]


Рейтинг:
0

F. Xaver

вне суб / функции он не тусклый .. используйте частное или публичное поле для своей области.

во всяком случае, .. конечно, вы можете вызвать другую подфункцию/функцию

Private Data As Integer

Public Sub a()
    Data = 5
    Call b
End Sub

Public Sub b()
    MsgBox "Data is: " & Data
End Sub


planetz

Спасибо за Вашу поддержку..!! Но требование состоит в том, чтобы не вызывать другую подлодку из подлодки. Они должны запускаться при нажатии кнопки пользователем.

F. Xaver

вы все еще можете вызвать a и b с помощью кнопок... этот вызов был просто примером для этой переменной, не теряя ее данных.

Member 14820041

большое вам спасибо!
Застрял в подобном сценарии !