Не удалось выбрать метод Range Class с помощью ThisWorkbook

 Dim wb As Workbook
    Set wb = Application.Workbooks("Book2.xlsx")
    wb.Activate
    wb.Sheets("Sheet1").Range("A1").Select 

Ps: несколько раз приведенный выше код работает правильно, в большинстве случаев выдает исключение

Глядя на эту ссылку Ошибка времени выполнения ' 1004 ': не удалось выбрать метод Range Class с использованием ThisWorkbook, я сделал то же самое, что и выше, все еще не удается


person user1844634    schedule 07.09.2017    source источник


Ответы (2)


попробуйте сначала активировать лист, а затем использовать выбор, но, прежде всего, вам действительно нужен выбор? Это самый дорогой метод, который вы можете вызвать (иногда он все еще нужен)

Если вам просто нужно прочитать/записать значение в ячейку, вы можете сделать это так

Dim wkb as Workbook
Dim wks as Worksheet

wkb = Application.Workbooks("Book2.xlsx")
wks = wb.Sheets("Sheet1")

System.Windows.Forms.MessageBox.Show(wks.Range("A1").Value2)
' or use this code for selecting
' With wks
'   .Activate()  ' not really sure you need it, test it
'   .Range("A1").Select
' End With  
person PetLahev    schedule 07.09.2017
comment
wb = Globals.ThisWorkbook.Application.Workbooks.Open(Имя файла:=fileName, ReadOnly:=False) wb.Activate() TemplateSheet = Globals.ThisWorkbook.Sheets.Add(After:=Globals.ThisWorkbook.ActiveSheet) TemplateSheet.Activate( ) TemplateSheet.Cells(1, 1).select() Даже я пытался активировать лист, хотя он не работает - person user1844634; 07.09.2017
comment
Я так понимаю выдает ошибку в последней строке? Попробуйте, работает ли команда активации листа. Я не могу протестировать сейчас, у меня нет Visual Studio. Только что проверил это в VBA, и, кажется, работает Sub test() Dim wkb As Workbook Set wkb = Application.Workbooks.Add Dim wks As Worksheet Set wks = wkb.Sheets.Add wks.Activate wks.Cells(10, 1).Select End Sub - person PetLahev; 07.09.2017
comment
Я попытался с помощью команды активации листа. Иногда работает, иногда выдает ошибку. Странный.. - person user1844634; 07.09.2017

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

Application.Goto Sheets(1).Range("A1")
person ExcelinEfendisi    schedule 08.09.2017