Erro 'Subscrito fora do intervalo' ao selecionar um intervalo

0

Estou recebendo um erro do VBA ( Run-time error '9': Subscript out of range ) quando estou tentando selecionar uma pasta de trabalho e, em seguida, uma célula dentro de uma planilha nessa pasta de trabalho.

this_workbook está correto e copiando e colando a saída no Windows Run resulta na abertura do caderno de trabalho. data_worksheet também está correto.

this_workbook = ThisWorkbook.Path & "\" & ThisWorkbook.Name

Debug.Print "Workbook name - " & this_workbook & vbCrLf
Workbooks(this_workbook).Sheets(data_worksheet).Range("A1").Select

Alguém sabe o que estou fazendo errado?

David Gard
fonte
FYI: Se a sua pergunta for especificamente sobre o código que você escreveu, (como este), você terá um público mais amplo disposto a responder perguntando no Stack Overflow em vez do Super User.
Daniel
@ DanielCook - Eu tenho esse dilema toda vez que publico sobre o VBA. Foi-me dito o oposto exato no passado, e descobri que, como a maioria dos especialistas do Office vagueiam neste fórum, as respostas podem ser menores, mas muitas vezes são melhores.
David Gard

Respostas:

1

Você não pode selecionar um intervalo em uma planilha que não está ativa.

Além disso, chamando usando Workbook(this_workbook) complica excessivamente o seu código.

Tente substituir seu código por isso (assume que data_worksheet representa um nome ou número da planilha):

With Thisworkbook.Sheets(data_worksheet).
    .Activate
    .Range("A1").select
End with

Agora, tenha em mente que esse código não faz nada além de selecionar uma célula em uma determinada pasta, portanto, essa macro não é particularmente útil.

Daniel
fonte
Obrigado por você ajuda. Vendo que você ativou a planilha dentro da pasta de trabalho, em vez de apenas a pasta de trabalho, ela clicou, pois eu estava na planilha errada! E FYI, a macro faz mais do que isso, isso é apenas a arrumação no final de uma função.
David Gard
Eu tinha certeza que você eventualmente faria outra coisa. Você simplesmente não compartilhou essa parte. Espero que você tenha o resto trabalhando sem problemas.
Daniel