Squeak.ru - шаблоны программирования

Как использовать значение глобальной переменной Userform в другой книге с помощью VBA

Я поддерживал две книги Excel в разных папках, в первом Excel я создал пользовательскую форму, в которой есть два поля со списком, я объявил глобальную переменную «EpcName» в форме пользователя, и эта глобальная переменная хранит выбранное значение второго поля со списком. Теперь мой вопрос: как я могу использовать значение глобальной переменной из Userform в другой книге, которая находится в другой папке.

Путь к книге 1 (где я создал форму пользователя) C: \ Users \ inkapb \ AppData \ Local \ Temp \ EPC AutoTool \ Start Screen -UI \ UI.xlsm

Путь к книге 2 C: \ Users \ inkapb \ AppData \ Local \ Temp \ EPC AutoTool \ Projects \ Power Plant \ Power Plant EPC 1.xlsm

Вот код, который я написал в пользовательской форме

 Public EpcName As String
 Private Sub CommandButton1_Click()

 Dim wb As Workbook
 Dim ws As Worksheet


 Set wb = Workbooks("UI.xlsm")
 Set ws = wb.Worksheets("Sheet2")

  Dim qwerty As String
 Dim cf As Range



 EpcName = Me.ComboBox2.Text  'Want to pass this String to other workbook

 With ws
.Activate
With .Range("C1:C10000")

  Set cf = .Find(what:=EpcName, _
    lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)

    If cf = "" Then
 MsgBox "nothing"
 Else
 Range(cf.Address).Select
 Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

 End If

    End With

    End With

 End Sub

Любая помощь приветствуется.


  • Файлы открыты одновременно? Форма пользователя остается открытой, когда вы хотите использовать сохраненное значение? Если вы закроете пользовательскую форму, значение исчезнет из ее глобальной переменной. Если вы закроете файл Excel, все значения исчезнут из всех переменных. 09.12.2015
  • Также вы говорите рабочие листы, но я почти уверен, что вы имеете в виду рабочие тетради. Если да, отредактируйте заголовок и вопрос. 09.12.2015
  • Да, это рабочая тетрадь, извините, изменил ее. Сначала пользовательская форма будет открыта, я открываю вторую книгу. 09.12.2015
  • Что ж, пока ваша пользовательская форма открыта, вы можете ссылаться на глобальную переменную. Но вы также можете ссылаться на любое поле, поэтому нет реальной необходимости в глобальной переменной. Если вы разместите свой код, вам будет легче помочь. 10.12.2015
  • Я добавил код, который я написал в пользовательской форме, пожалуйста, проверьте его 10.12.2015

Ответы:


1

Это должно быть возможно. Объявите и инициализируйте переменную в книге, которая содержит форму пользователя, например нравится.

Option Explicit

Public EpcName As String
Private m_theOtherWorkbook As Workbook

Private Sub UserForm_Initialize()
    On Error GoTo ErrInit

    Set m_theOtherWorkbook = Workbooks("Power Plant EPC 1.xlsm")

    Exit Sub

ErrInit:
    MsgBox "Error in " & Me.Name & ". UserForm_Initialize. " & Err.Description, vbCritical, "Error"
End Sub

Затем в другой книге, модуле класса ThisWorkbook, добавьте, например, подобное публичное свойство (может быть просто публичной переменной).

Option Explicit

Private m_epcName As String

Public Property Get EpcName() As String
    EpcName = m_epcName
End Property

Public Property Let EpcName(ByVal vNewValue As String)
    m_epcName = vNewValue
End Property

А в коде формы пользователя просто вызовите свойство EpcName другой книги (другая книга, конечно же, должна быть открыта). Свойство EpcName теперь является частью нового интерфейса другой книги и должно работать нормально. HTH

 EpcName = "Want to pass this String to other workbook" ' Me.ComboBox2.Text

 If Not m_theOtherWorkbook Is Nothing Then _
    m_theOtherWorkbook.EpcName = EpcName
10.12.2015
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...