Como usar a meta de pesquisa no Visual Basic

Felizmente, o objetivo é completamente integrado ao VBA, por isso é fácil escrever uma macro para usá-lo.

Passo 1

Abra o documento do Excel no qual você deseja executar sua macro de busca de meta.

Passo 2

Encontre duas células nas quais você gostaria de usar a Meta de meta. O primeiro deve ser a célula na qual você tem um objetivo fixo. O segundo deve ser onde você permite que o Excel seja alterado para atender à meta. O valor da primeira célula deve ser uma fórmula baseada na segunda fórmula (caso contrário, as alterações feitas pelo Excel na segunda célula não importam, pois não aparecerão na primeira).

Passo 3

Abra a janela Macro. No Excel 2007 ou posterior, você pode fazê-lo clicando na guia "Visualizar" da lista e, em seguida, clicando em "Macros". Nas versões anteriores do Excel, clique no menu "Ferramentas", escolha "Macros" e depois "Macros".

Passo 4

Digite o nome da sua macro Meta de meta na janela Macro e clique em "Criar". Isso iniciará o programa do Visual Basic para os aplicativos do editor e mostrará o texto da nova macro, que aparecerá como uma sub-rotina vazia como esta:

Sub MyMacroName () End Sub

Passo 5

Crie um intervalo de objeto representando a célula para a qual você tem uma meta conhecida (a primeira célula da Etapa 2). Por exemplo, se você quiser uma meta de busca para a célula A1, escreva:

Dim goalCell As Range goalCell = ThisWorkbook.Worksheet (1) .Range ("A1")

Passo 6

Crie um intervalo de objeto que represente a célula que você deseja que o Excel altere para que a primeira célula alcance o novo destino. Por exemplo, se você quiser que o Excel manipule a célula A2, escreva:

Dim variávelCell As Range variableCell = ThisWorkbook.Worksheet (1) .Range ("A2")

Passo 7

Encontre o método GoalSeek no intervalo da célula de destino. Como o primeiro argumento, ele oferece o valor no qual você deseja aplicar a Meta de meta; Como argumento, ele oferece o intervalo da célula variável. Por exemplo, se você deseja aplicar a meta a 0, escreva:

goalCell.GoalSeek (0, variableCell)