VBA ActiveWorkbook vs. ThisWorkbook

Este tutorial discutirá a diferença entre o VBA ActiveWorkbook e ThisWorkbook.

ActiveWorkbook vs. ThisWorkbook

É importante saber a diferença entre ActiveWorkbook e ThisWorkbook no VBA:

A ActiveWorkbook é a pasta de trabalho atualmente ativa (semelhante a como ActiveSheet é a planilha atualmente ativa). Esta pasta de trabalho é a pasta de trabalho onde o código VBA é armazenado. Este livro de trabalho nunca mudará.

ThisWorkbook

Pense em ThisWorkbook como uma variável de objeto que permite fazer referência à pasta de trabalho que contém o código em execução no momento.

Este código exibirá uma MessageBox com o nome ThisWorkbook:

123 Sub Show_ThisWorkbook ()MsgBox ThisWorkbook.NameEnd Sub

ActiveWorkbook

A ActiveWorkbook é uma variável de objeto que permite fazer referência à pasta de trabalho atualmente ativa.

Este código exibirá uma MessageBox com o nome ActiveWorkbook:

123 Sub Show_ActiveWorkbook ()MsgBox ActiveWorkbook.NameEnd Sub

VBA assume ActiveWorkbook

Ao tentar trabalhar com objetos (por exemplo, Planilhas) dentro do ActiveWorkbook, você não precisa declarar explicitamente o objeto ActiveWorkbook. O VBA presumirá que você está se referindo ao ActiveWorkbook.

Então, é isso:

1 ActiveWorkbook.Sheets ("Sheet1"). Range ("$ A $ 5"). Value = 1

É o mesmo que este:

1 Folhas ("Folha1"). Intervalo ("$ A $ 5"). Valor = 1

Pastas de trabalho novas ou abertas estão ativas

Sempre que você cria uma nova pasta de trabalho ou abre uma pasta de trabalho, ela se torna “Ativa”. Você pode ver por si mesmo com este código que adicionará uma pasta de trabalho e recuperará o nome da nova pasta de trabalho:

1234 Sub Show_ActiveWorkbook_Add ()Workbooks.AddMsgBox ActiveWorkbook.NameEnd Sub

Depois de adicionar ou abrir uma pasta de trabalho, você pode atribuí-la a uma variável usando o objeto ActiveWorkbook. Mostraremos como nos exemplos abaixo:

Exemplos de ThisWorkbook e ActiveWorkbook

Alternar pasta de trabalho ativa

Alterne a pasta de trabalho ativa usando o nome da pasta de trabalho:

1 Pastas de trabalho ("Livro1"). Ative

Alterne a pasta de trabalho ativa usando o número de pedido da planilha (1 é a primeira planilha em uma pasta de trabalho)

1 Pastas de trabalho (1). Ativar

Tornar este livro ativo

Torne ThisWorkbook (onde o código atualmente em execução está armazenado) o ActiveWorkbook:

1 ThisWorkbook.Activate

Definir ActiveWorkbook para uma variável

Atribua o ActiveWorkbook a uma variável de objeto de pasta de trabalho:

12 Dim wb como pasta de trabalhoDefinir wb = ActiveWorkbook

Fechar e salvar a pasta de trabalho ativa

Fecha e salva o ActiveWorkbook:

1 ActiveWorkbook.Close SaveChanges: = True

Feche a pasta de trabalho ativa sem salvar

Fecha o ActiveWorkbook sem salvar:

1 ActiveWorkbook.Close SaveChanges: = False

ActiveWorkbook - Salvar como

Executa um Salvar como da pasta de trabalho ativa.

123456789 Sub SaveAsActiveWorkbook ()Resultado não ofuscante como varianteresult = Application.GetSaveAsFilename (InitialFileName: = "", _FileFilter: = "Pasta de trabalho habilitada para macro do Excel (* .xlsm), * .xlsm, Pasta de trabalho do Excel (* .xlsx), * .xlsx")Se resultado = Falso, então retornaResultado de ActiveWorkbook.SaveAsEnd Sub

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave