Как выполнить нужную операцию Если одна из командных кнопок в порядке, а другая - ОТМЕНА - PullRequest
0 голосов
/ 09 августа 2011

Может кто-нибудь сказать мне, как я могу выполнить определенную задачу, основанную на опциях командной кнопкиУ меня есть пользовательская форма, где пользователь отправляет свои данные, и у него есть 2 кнопки управления, одна из которых в порядке, а другая - ОТМЕНА.Я должен выйти, когда пользователь нажимает кнопку ОТМЕНА, и продолжить процесс, когда пользователь нажимает кнопку ОК

             file_name=userform1.textbox1.value

. Таким образом, мы можем получить данные текстового поля в наши функции, но как узнать, какая кнопкаклавиша нажата?Поскольку я нажимаю OK или ОТМЕНА, операция все еще выполняется.Я пробовал вот так

       value=userform1.commandbutton1.value 
       value2=userform1.commandbutton2.value

не работает.Я даже попробовал эти

      commandbutton1_click() \\ this is the OK command button 
      call main
      end sub
      commandbutton2_click() \\ this is the CANCEL command button
      end sub

Я пытался вызвать основную подпрограмму из подпрограммы OK, но она говорит, что основная подпрограмма не найдена, потому что я написал эти коды в этой рабочей книге, а подпрограмма commandbutton1_click находится внутриМодуль Userform1 ТАК, как мне заставить его работать?Надеюсь, вы поняли, где я застрял. Заранее спасибо

Ответы [ 2 ]

1 голос
/ 09 августа 2011
Private Sub CommandButton1_Click() 'should be called cmdOk
    main
End Sub

Private Sub CommandButton2_Click() 'should be called something like cmdCancel
    Unload Me
End Sub

Private Sub main()
    'DO PROCESSING
End Sub

Вы звоните main на Form_Load() или Form_Activate() или как-нибудь так?При нажатии кнопки «Отмена» вышеприведенный файл выгружается.При нажатии Ok запускается обработка.Это не более того.

0 голосов
/ 09 августа 2011

Если вы хотите оставить метод main вне вашей пользовательской формы, вы можете попробовать что-то вроде этого, основываясь на примере, приведенном @cularis

' This way you can keep your code in ThisWorkbook    
' I would recommend creating a new module. 
' You can name your module whatever you'd like. 

Private Sub CommandButton1_Click()
    ThisWorkbook.main
End Sub

Private Sub CommandButton2_Click()
    Unload Me
End Sub 
...