2015-05-06 2 views
1

Я использовал код, на который был отправлен ответ в ссылке, которую я добавил ниже, и у меня есть некоторые проблемы, можете ли вы мне помочь?Диалоговое окно VBA для выбора диапазона в разных книгах, зависающих вверх

VBA Dialog box to select range in different workbook

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

В основном, я пытаюсь скопировать указанные столбцы из одной книги и вставить их в лист в моей оригинальной книге. Я знаю, что моя кодировка «copyButton_Click()» не подходит, но я не могу зайти так далеко в отладку, чтобы ее исправить. Вот что у меня есть:

МОДУЛЬ 1:

Sub extractData() 
    Dim FName As Variant 
    Dim wb As Workbook 
    Dim destSheet As String 
    ' 
    Application.ScreenUpdating = False 
    destSheet = "NewData" 
    ' 
    'Selects and clears data 
    Sheets(destSheet).Select 
     Range("A2:I12000").Select 
     Selection.delete Shift:=xlUp 
     Range("A2").Select 
    ' 
    'Prompts user to select updated ILP file to copy data from: 
    FName = Application.GetOpenFilename(filefilter:="Excel Files (*.xls;*.xlsx;*.xlsm), *.xls;*.xlsx;*.xlsm") 
     If FName <> False Then 
     Set wb = Workbooks.Open(FName) 
    ' 
    ExtractCompareUserForm.Show vbModeless 
    ' 
     End If 

    Application.ScreenUpdating = True 

    End Sub 

UserForm КОД:

Private Sub UserForm_Initialize() 
     Dim wb As Workbook 

    '~~> Get the name of all the workbooks in the combobox 
     For Each wb In Application.Workbooks 
      ComboBox1.AddItem wb.Name 
     Next 

     ComboBox1 = ActiveWorkbook.Name 
    End Sub 

    '~~> This lets you toggle between all open workbooks 
    Private Sub Combobox1_Change() 
     If ComboBox1 <> "" Then Application.Workbooks(ComboBox1.Text).Activate 

     Label1.Caption = "": RefEdit1 = "" 
    End Sub 

    '~~> This lets you choose the relevant range 
    Private Sub RefEdit1_Change() 
     Label1.Caption = "" 

     If RefEdit1.Value <> "" Then _ 
     Label1.Caption = "[" & ComboBox1 & "]" & RefEdit1 
    End Sub 

    Private Sub copyButton_Click() 
    Dim addr As String 
    ' 
    addr = RefEdit1.Value 
    ' 
    'Copy Data: 
     UserForm1.addr = Selection.Address 
     addr.Copy 

    End Sub 

    Private Sub PasteButton_Click() 
    Dim destSheet As String 
    ' 
    Workbooks(2).Close SaveChanges:=False 
    ' 
    '  Now, paste to working workbook: 
      Sheets("NewData").Activate 
      Range("B2").Select 
      ActiveSheet.Paste 
      Application.CutCopyMode = False 
     Unload Me 
     ' 
    Call CopyData 

    End Sub 

Вот где висит и не позволяет мне нажать на что-нибудь.

ответ

1

Вы деактивировать обновление экрана, вам необходимо активировать его, прежде чем показывать свой UserForm, в конце Sub extractData():

У вас есть:

ExtractCompareUserForm.Show vbModeless 
End If 
Application.ScreenUpdating = True 
End Sub 

Переключить на:

Application.ScreenUpdating = True 
    ExtractCompareUserForm.Show vbModal 
End If 
End Sub 
+0

Проблема все еще существует, когда я пытаюсь t @ R3uK – JFro777

+0

Хммм ... Мой плохой, я забыл переключиться ...:/См. редактирование, но вы, возможно, уже пробовали его Я предполагаю, что вы также пробовали с помощью простого «ExtractCompareUserForm.Show vbModal»? – R3uK

+0

AHH Да! ExtractCompareUserForm.Show vbModal исправил проблему! Большое спасибо @ R3uK Если вы хотите отрегулировать отредактированное выше, я за исключением ответа. – JFro777