Referir somente a Range("A1") pode ser perigoso. Range("A1") é equivalente, no VBA, a ActiveSheet.Range("A1"). Se você quiser que seja A1 de uma planilha específica, terá que escrever Worksheets("Sheet1").Range("A1"). Mas o perigo não pára por aí. Se você
tiver duas pastas de trabalho abertas, Worksheets("Sheet1").Range("A1") é equivalente a ActiveWorkbook.Worksheets("Sheet1").Range("A1"). Então, uma dica seria utilizar o objeto ThisWorkbook. A diferença do ThisWorkbook para o ActiveWorkbook é que o ThisWorkbook
se refere à pasta de trabalho que está executando o código, não importando qual pasta de trabalho está ativa.
Mas então você poderia reclamar que é moroso escrever esse tanto para representar uma célula. Por exemplo:
ThisWorkbook.Worksheets("Sheet1").Range("A1") = ThisWorkbook.Worksheets("Sheet1").Range("A1") + 1
É um código para adicionar 1 unidade à uma célula determinada. Muito ruim. O que programadores fazem é usar variáveis para representar objetos. Por exemplo:
Dim ws as Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
ws.Range("A1") = ws.Range("A1") + 1
O código fica melhor de ler, entender e fazer manutenção.
O ThisWorkbook que você vê no Project Explorer não tem a ver com o ThisWorkbook que uso nos exepmolos do código acima. Favor não confundir.
Bom Dia Felipe.
Obrigado pelas ricas explicacoes proporcionadas que para mim sao muito importante para comecar com os pes em piso firme do que em piso falso, senao um dia se tiver um programa meio grande, poderia ficar perdido por falta de bases fundamentais.
Entendi bem quando voce diz que se escrever so o Range("A1"), por exemplo em This Workbook ou Module(do editor Project Explorer), ela vai significar que eh o Range("A1") do Sheet ativo,certo? (por favor corrija-me se estou interpretando errado), mas se eu
escrever o mesmo Range("A1") numa Sheet(do editor Project Explorer), ela so funcionar se essa sheet estiver ativa,nao e? em outras palavras o Range("A1") escrito numa Sheet1(do editor Project Explorer), so vai funcionar no Sheet1 enquanto se escrever o Ranage(A1")
num Module ou This Workbook(do editor Project Explorer) vai funcionar em qualquer Sheet, desde que ative o Sheet que queira que ela funciome,certo?
Eu entendo Pasta de Trabalho como Diretorio, e quando voce fala
Se você tiver duas pastas de trabalho abertas,
e mesma coisa que dizer Se tivesse dois arquivos de Diretorios(Pastas) diferentes abertos?
E quando voce diz
ThisWorkbook se refere à pasta de trabalho que está executando o código
e a mesma coisa que dizer ThisWorkbook se refere ao arquivo que esta executando o codigo?
ou sera que tem jeito de gravar os codigos no Diretorio como costuma gravar os arquivos no diretorio?
Desculpe-me Felipe, essas duvidas estao surgindo por eu estar muito tempo fora do Pais.Entendo Workbook como sendo um arquivo Excel, Workbook("book1") seria um arquivo excel com nome book1.
A diferença do ThisWorkbook para o ActiveWorkbook é que o ThisWorkbook se refere à pasta de trabalho que está executando o código
Quanto a sua explicacao acima, penso que entedi bem a diferenca, para ver se entendi mesmo, por exemplo se tenho os codigos escritos no arquivo cartao pontos e tiver que ativar o arquivo dados(Workbooks("dados"), e do arquivo dados quiser voltar ou acessar
celulas do arquivo cartao ponto em vez de escrever (Workbooks("cartao ponto")) e a mesma coisa que escrever ThisWorkbook que vai entender como sendo o arquivo cartao ponto onde estao escritos os codigos?.
O ThisWorkbook que você vê no Project Explorer não tem a ver com o ThisWorkbook que uso nos exepmolos do código acima. Favor não confundir.
Entendi bem o que voce esplanou, ou seja o ThisWorkbook do codigo significa o Arquivo que o codigo esta escrito,certo?
Mas a minha Duvida principal que postei no Forum e sobre o ThisWorkbook, Module, Sheet do editor de Project Explorer em onde escrever os codigos, pois voce dando dois cliques em ThisWorkbook aparece a janela para escrever os codigos, assim como em Module
ou Sheet.
Nao sei se consegui transmitir as minhas duvidas, mas mais uma vez ficarei grato se puder me esclarecer e desde ja agradeco
Tadao