You are on page 1of 23

(Terceira vez que encaminho. Se voltar de novo, meu provedor tá baleado...) Pessoal, Minha contribuição para o grupo.

Segue um documento "html", que contém inúmeras dicas de VBA para Excel. Espero que gostem! Foi... ps(*) - Tenho mais, quem quiser, mail-me. Gilson Bentos Encarregado CPD gilson.bentos@... 726-1214 R-7044 ^^^^^^^^^^^^^^^^^^^^^^^~ Se voce já conhece o Excel, então colecione e utilize as DICAS, sempre renova das, incluidas neste SITE, que esperamos lhe acrescentarão valiosos conhecimen tos. E se voce suspeitava que o EXCEL era incapaz de executar certas tarefas então esta é uma boa oportunidade para que voce teste as soluções encontradas e refaça seu trabalho aplicando as novidades que garimpou. As questões abaixo inauguram a seção Dicas e Macetes relativamente ao EXCEL e o (V)isual (B)asic for (A)pplications.
Recomendações :

As questões encaminhadas por e-mail devem ser descritas com máxima clareza. De nossa parte, consideramos estar demonstrando cortesia aquele que nos escreve procurando faze-lo corretamente. Escrever corretamente tem sido, conforme temos observado, a primeira grande barreira. Para contornar essa dificuldade temos três sugestões a fazer : Rascunhar sua questão antes de ativar o browser, fazer uso de exemplos e subdividir seu problema em questões ão 40 (080299Q40)">40. Transcrevendo dados em Multiplas colunas 41. Eliminando Lancamentos em Duplicidade 42. Como referir-se ao texto de uma TextBox 43. Permitindo o Usuario selecionar arquivos após FileOpen 44. Lendo numeros por extenso 31. Construindo uma ListBox e Recuperando 32. Definindo-se o último elemento 33. Diferença entre as funções IsNumber 34. Somando-se valores em 35. Encontrando-se o valor 36. Solucionando dúvidas do 37. Usando o VBA para atribuir nomes 38. Resolvendo um Problema de 39. Selecionando um range desconhecendo-se o último elemento 24. Identificando Numéricos, Alfanuméricos e Fórmulas 25. Usando o Teclado para acionar Rotinas 26. Construindo ListBoxes 27. Selecionando Dados num Range e Formatando 28. Resolvendo uma questão com Edit Replace 29. Partindo de uma Lista, informar o numero de elementos diferentes 30. Usando a Estrutura Select Case para acionar Rotinas 18. Selecionando células especiais 19. Criando Menus via VBA que acionam Rotinas 20. Como ler uma fórmula sem abrir o Arquivo ? 21. Como identificar via VBA as células que contem Comentários ? 22. Como fazer um Sort e voltar atrás. 23. Como gerar um gráfico "experto" 11. Identificando a linha que contem uma CheckBox 12. Obtendo Subtotais dado da e escolhido série IsNumeric Databases máximo Usuário aos ranges Classificação

13. Obtendo o Diretório em A1 14. Apontando um êrro no uso da função Sum 15. As várias formas de obter-se um mesmo dado 16. Contornando problemas em arquivos corrompidos 17. Usando a função DCount 1. Acrescentando um valor à hora atual 2. Incluir um som avisando que a rotina chegou ao fim 3. Acrescentando worksheets após a última 4. Operando com vários arquivos de forma sequencial 5. Trabalhando com Datas 6. Acesso a Constante declarada em outro Arquivo 7. Somando e impondo condições 8. Eliminando Textos mas mantendo o resto 9. Operando com ranges variáveis 10.Selecionando Worksheets a partir de certo ponto

Questão 45 (310100Q45) A Central de Help contribui com Gerentes que estão em apuros com questões de Arredondamento. E um caso muito comum em magazines de departamentos é usar-se nos preços de certos produtos da categoria YY o valor 0,99 nas casas decimais. E a pergunta que se faz : Será que o critério usado para fixar estes valores tem sido uniforme ? Assim um produto hipotético pertencendo a essa categoria YY com custo de 12,56 e margem de 30% apontaria para um preço final de venda de 16,33. Ao ser no entanto colocado nas prateleiras, como pertence a categoria YY, seu valor inicial de venda igual a 16,33 seria alterado para 15,99 ou 16,99. O problema é estabelecer para tal categoria de produtos YY, um critério único e uniforme, que forneça como resultado final valores com decimais 0,99. Solução Sendo C o custo e =roundup(C*(1+m);0)-0,01 Questão 46 (310100Q46) Seria possivel fazer com que o Excel somasse seletivamente os valores de uma couna ? Exemplificando : Numa coluna (b26:b31) com os valores 100, 30,10,110,500,300 quero somar todos os valores abaixo de 50 com os valores acima de 200. Solução 46 (310100S1Q46) A expressão a seguir resolve seu problema : =Sum(Sumif(b26:b31;{"<50"; ">200"})) O Excel aceita ws.Select end Next ActiveWindow.SelectedSheets.PrintOut End Sub Questão 49 (310100S1Q49) Queremos dividir os valores de uma extensa coluna de numéricos por um certo valor.Há como faze-lo automáticamente ? Solução 49 (310100S1Q49) Selecione uma célula vazia na planilha que contem a tal lista de numéricos Suponhamos que o divisor comum seja 50. Escreva numa célula vazia =50, e acione Enter, Acione Edit Copy, Selecione a região que contem os valores a serem divididos, Acione Edit Paste Special e selcione o option button Divide, e todos os valores serão divididos por 50 mais de dois p" then False if m a margem, a função 45 abaixo fornece o (310100S1Q45) resultado pretendido

Hide Solução 51 (310100S1Q51) Use ActiveSheets.567.5\1 3. Como corrigir meu erro ? ActiveSheet.1) retorna 3 enquanto que Ceiling(3.567.6\1 4.Shape("CommandButton1"). .45.5\1 retorna 2 n arredondado para retorna retorna retorna retorna numérico 1) -1) -1) trunca o numérico retorna retorna retorna n retorna retorna retorna o sentido inteiro mais contrário próximo 5 4 4 3 Converte o FIXED(1234.Visible Questão 52 (310100Q52) Atribui ao range A1:A10 o nome "Despesas". Selection. FIXED(1234.6" "1230" "-1230" parte inteira 8 -8 3 respeitando a A proc abaixo faz os testes : Sub Dim n MsgBox MsgBox End Sub Teste( = "Int "n\1 InputBox("Entre () retornará retornará com : : " um " & & ) n numérico") Int(n) n\1 Questão 51 (310100Q51) Incluí um botão(CommandButton1) na minha Sheet mas quero esconde-lo por ora. O comando abaixo não faz o que eu preciso. Ocorre que preciso incluir mais dados. FIXED(44.6\1 2.Name = renomeamos o novo "Despesas" antigo.33" Trunc função TRUNC(8.45.9) TRUNC(PI()) que em texto "1234.Questão 50 (310100Q50) Como é que o VBA se comporta diante de questões de arredondamento ? Solução 50 (310100S1Q50) Int(n) retorna Ex: Int(-2. FIXED(-1234.5\1 2.7) mais próximo retona menor que n 4 Round(ValorNumérico.1) retorna -3 o inteiro Int(4. o nome "Despesas" passa a não ter mais sentido.9) TRUNC(-8.CasasDecimais) Floor e Ceiling agem em Ex: Floor(3.Shapes("CommandButton1").332) equals "44. Em consequencia.567. 1) retorna 4 n\1 retorna Exemplos: 4. Como reaproveitar o antigo nome ("Despesas") para indicar o novo range A1:A11 Solução 52 (310100S1Q52) Sub ''''Despesas ''''Acrescentamos dados é na celula Select = False AdicionandoNovaCelulaAoRange( o A11 e nome inicial do range com o nome ) Range Range("A1:A10"). Ocuparei então a célula a11.

Caberia a pergunta : Porque a M$ usa o ano de 1900 como ano base? E a resposta é : Para manter compatibilidade com o Lotus 123 (a M$ entendeu que manter o êrro seria menos prejudicial que tentar conserta-lo). ODDFYIELD.Range("A11")). mas não impossível) então o uso destas funções acarretarão um êrro que espera-se seja corrigido nas próximas versões. constataremos diferenças de 4 anos e um dia. Nesses casos em alguns cálculos. COUPNCD. MDURATION.Union(Range("Despesas"). COUPDAYBS. COUPDAYSNC. Se estivermos diante de um negócio onde a data 29 de Fevereiro de 2000 é a data do primeiro pagamento de juros.Name End Sub Questão 53 (310100Q53) = "Despesas" Agradecemos esclarecer-nos com mais detalhes dos problemas que envolvem as datas básicas adotadas pela Microsoft. Finalmente.Select Exit Ignoro: MsgBox "Essa End Sub Questão 55 (14022000Q55) planilha denominada "Asterix" ) Ignoro Sub planilha não existe" ProcurandoFantasmas( GoTo . os mesmos serão abertos com a data base do MacIntosh (1904). COUPPCD. A recíproca é verdadeira. dependendo das datas consideradas. Se tentamos calcular os dias decorridos entre 2 de dezembro de 1898 e 7 de dezembro de 1999 tambem obtemos êrro tendo em vista que a data 2 de dezembro de 1898 é anterior a data base (1900). fazem parte do pacote "Analysis ToolPack" da Microsoft e se encontram na biblioteca de funções do EXCEL. DURATION. Desta forma obteremos resultados com êrros se calculamos por exemplo o número de dias entre 15 de março de 1900 e 15 de janeiro de 1900. Mas neste caso considera tambem que a data 01 de Janeiro de 1904 tem o valor serial igual a Zero. COUPDAYS. As instruções abaixo resolvem seu problema Sub On error Worksheets("Asterix"). ODDFPRICE. Questão 54 (14022000Q54) O trabalho que eu estou desenvolvendo cria (conforme a situação) novas planilhas e posteriormente usa essas tais planilhas criadas via programa. No caso dos usuários do MacIntosh a data base é diferente : 02 de Janeiro de 1904 cujo valor serial é 1.and YELD As funções financeiras acima. E datas anteriores a data base no Excel são tratadas como texto. Assume válida a data calendário 29 de Fevereiro de 1900 e devolve para esta data o valor serial 60 (=DateValue ("29/2/1900")).xls) num MacIntosh (ano base 1904). PRICE. Solução 53 (310100S1Q53) Excel Os usuários de PC’s sabem que o Excel usa a data base : 01 de Janeiro de 1900 e determina para esta data o valor serial (DateValue) igual a 1. Como encontrar ou saber se determinada planilha se encontra entre as demais ? Solução 54 (14022000S1Q54) Suponhamos que voce esteja procurando pela criada pelo programa. Access Da mesma forma o Access usa a data base 31 de dezembro de 1899 para compatibilizar-se com o Lotus 123 Funções Financeiras ACCRINT. (fato difícil de ocorrer. Mas daí decorrem outros problemas. e não podemos realizar a subtração envolvendo simultâneamente datas e texto. se um usuário de PC’s (ano base 1900) abrir seus arquivos Excel(*.

Havendo vários workbooks abertos lhe devolverá o path do workbook aberto que encabeçar a lista.. "@") Questão 56 (14022000Q56) Como posso alterar o diretório de C:\My Documents\ para o diretório que na verdade contem a minha aplicação ? Solução 56 (14022000Q56) A instrução CHDir irá alterar o diretório mas o drive que estiver ativo permanece inalterado A instrução CHDrive irá alterar o drive que estiver ativo A instrução ThisWorkbook.txt" vbNormalFocus Questão 40 (080299Q40) Numa Planilha Excel tenho anotado regularmente Nomes. as ) string Documentos\Explica..txt" . Sub Dim f Shell End Sub Exibindo_O_Notepad( f = "Notepad "c:\Meus " & f. . devo alerta-lo para alterar o nome do seu arquivo.Value = Format(Array(x. vbOkCancel. Use "Explica. ‘2" .y) . Minhas tentativas tem sido frustradas pois o Excel coloca "1" .Path lhe devolve o path do workbook que estiver aberto. Supondo que este seu arquivo texto está no diretório C:\Meus Documentos\. Como faze-lo ? Solução 57 (14022000S1Q57) A instrução STOP coloca um "freio" (break) na sua procedure. SobreNomes e Telefones de amigos e Clientes(sobretudo Clientes). Mas é preciso cuidado. "00003" etc. Salvei o referido texto (arquivo) como "Texto Explicativo. usei o Notepad (Windows98). "Alerta") trabalho : Mais instruções Antes de entrarmos no mérito da procedure. Usei a Coluna B para fazer estas anotações. Questão 57 (14022000Q57) A partir de determinada instrução.Path lhe devolve o path do workbook que contem a macro ou procedure. Se voce declarou variáveis globais as mesmas serão resetadas quando o ponteiro do programa passar pela instrução END. desejo interromper a execução da minha procedure. Se uma pessoa tem mais de um telefone. A instrução ActiveWorkbook. Solução 55 (14022000S1Q55) Tente a instrução : Range("MeuRange"). Para tanto. As instruções que se seguem a essa instrução ficam portanto em suspenso. Para não haver dúvida declare suas variáveis como Static (neste caso não haverá modificação de valores quer voce use Stop ou End Para interromper uma Procedure recomendamos usar o modelo abaixo Sub ‘ Faça algo MsgBox ("Pare Agora ‘Continue seu End Sub Questão 58 (14022000Q58) Escreví um texto explicativo para o usuário do meu programa. "00002" . eu repito o seu nome na linha de baixo com o respectivo telefone. Como posso abrir o referido arquivo a partir do Excel permitindo que o usuário tenha livre acesso as minhas informações ? Solução 58 (14022000S1Q58) : ou ProcedureModelo( ) declare Variáveis e insira instruções clique OK para continuar". "3" sem os zeros que para o meu caso são importantes. a procedure abaixo resolve a questão.Como introduzir nas células valores tais como "00001" . A instrução END coloca um ponto final na sua procedure.txt" que tem apenas 7 caracteres.

decidimos apresenta-la na íntegra para mostrar a íntima relação do VBA com os problemas do dia a dia. Order1:=xlAscending. consultamos essa Central de Help sobre a possibilidade de eliminarmos da nossa relação.InputBox("Informe Qual o Range?". quem o atende não é o mesmo vendedor.Delete Shift:=xlUp End If Next End Sub Questão 42 (080299Q42) Quero aplicar em Sheet1(que eu chamei "Minha Planilha") uma TextBox (vou nomea-la MeuTeste) e me referir a um texto ("Estou me Apresentando") no interior do objeto criado. SobreNomes e Telefones(Obs: A Macro funcionará desde que até mesmo para os amigos íntimos voce tenha anotados Nome e SobreNome) Sub For Each Celula. Contudo. Porem muitas vezes. é possivel que na nossa relação haja lançamentos (codigos) em duplicidade.Value Then c. Como essa lista já está muito longa. o que ocorre com frequência.Select Range("a1").Select ActiveSheet. codificamos o pedido lançando um código na coluna A(Excel/97). Ficamos gratos pelo Help Solução 41 (080299S1Q41) Observação: Os leitores que acompanham essa seção devem observar que na maioria das vezes simplificamos a descrição do problema. os códigos lançados em duplicidade. via Macro. fato que nos leva a ter prejuizo.Ocorre que quando há uma alteração qualquer (quando um Cliente altera seu Sobrenome por exemplo ou quando há alterações no número do telefone.Offset(1. Em consequencia. Pergunto como faze-lo ? . _ Title:="Range(ColunaA)". Selecione a sua lista(coluna B) e acione a Macro abaixo e voce terá separado em colunas diferentes Nomes. A questão acima poderia ser resumida na frase : "Como colocar em colunas diferentes Nomes. Se quem o atende no momento da confirmação for o mesmo vendedor que o atendeu da primeira vez.Value = c.Select Selection. Como a relação de pedidos (codigos) é extensa.Copy Sheets("Sheet2"). se ausenta ou muda de Estado) sou obrigado a fazer um trabalho extra para colocar em dia essa minha coluna B. OrderCustom:=1.Paste Selection. A questão acima poderia ser resumida na frase : "Como eliminar numa mesma coluna os dados repetidos". ou quando um Cliente falece. Numa segunda oportunidade o Cliente confirma o pedido e informa-se quanto deverá pagar. inclusive impostos e frete. _ Header:=xlGuess. _ MatchCase:=False. Desde já agradeço por antecipação vossa atençao. pergunto se o VBA me faria a fineza de colocar em colunas diferentes a minha lista de Nomes SobreNomes e Telefones. decidimos apresenta-la na íntegra para mostrar a íntima relação do VBA com os problemas correntes do dia a dia. provavelmente nada ocorrerá de errado.Sort Key1:=Range("A1").Offset(1. Type:=8) rfonte. In ReformulaListaDeNomes() Selection OtherChar:="-" Questão 41 (080299Q41) Após recebermos uma solicitação por telefone.Cells If c.TextToColumns Next End Sub Celula Destination:=Celula. 0). Orientation:=xlTopToBottom For Each c In Selection. SobreNomes e Telefones dispostos inicialmente numa única coluna ?" Contudo. 0). Solução 40 (080299S1Q40) Observação: Os leitores que acompanham essa seção devem observar que na maioria das vezes simplificamos a descrição do problema. Sub EliminaDuplicidades( ) Set rfonte = Application.

.Clique duplo em Sheet1(Minha Planilha) 5.Encerre DesignMode e ative o VBE Project Explorer 4. "Um". "Dois". "Trinta e ") . Solução 44 (110299S1Q44) Function Escr(n) Unid = Array("".xls). "Doze". "Quatro". "Nove". Escr.Substitute(Escr. ative ToolBar Control ToolBox. "Cinco".xls disponíveis ? E se o Usuário desistir da tarefa teclando Cancel ? Como proceder ? Solução 43 (080299S1Q43) Sub ChDir "A:\" FileToOpen Application.Text me = ) _ Apresentando" Questão 43 (080299Q43) É possivel escrever-se uma Macro que abra no Drive A:\ a janela "File Open" para que o Usuário escolha um dentre os arquivos do tipo . 1) > 0 Then If InStr(1. Isso é possível ? Ficamos gratos pelo Help. Escr.Na planilha Minha Planilha. "Trinta". "Dez". "Vinte". 1) = 0 Then Escr = Application.Substitute(Escr.GetOpenFilename(filefilter:="Excel MultiSelect:=True) z = MsgBox Select Case MsgBox "Voce Case MsgBox "Voce Fez End End Sub CapturandoFileName() = Files(*.Em Properties troque Name TextBox1 por Name MeuTeste. 1) = 0 Then If InStr(1.". entre em DesignMode e aplique o objeto TextBox 2.MeuTeste. "Vinte". "Trinta". Escr.Solução 42 (080299S1Q42) 1. _ _ Case Teclou uma TypeName(FileToOpen) z z "Boolean" Cancel" "Variant()" Seleção Simples" Select Questão 44(110299Q44) Usando-se o Excel / VBA seria possível escrever-se uma função que após ler um numero na forma tradicional.Escreva a macro abaixo e acione F5 Sub Sheets("Minha "Estou End Sub UsandoTextBoxes( Planilha"). "Três". "Quatorze". uot. "enta". 3. _ "Seis". "Vinte e ") End If End If End If End If If Num Mod 10 <> 0 Then If InStr(1. "Oito". deverá ser capaz de ler um valor qualquer inteiro (ex: 4215) e escreve-lo por extenso (ex:"Quatro Mil Duzentos e Quinze"). "Sete". "Quinze". o converta para forma "por extenso" ? Essa função em outras palavras. _ "Treze". "Onze". 1) = 0 Then Escr = Application.

Substitute(Escr. Botafogo. 1) > 0 Then Escr = Application. Text:="Fluminense" .AddItem Index:=4. Ocorre que minhas séries tem um numero variável de elementos. Após o último dado. escrever 2 labels : "Media : ". costumo saltar duas linhas. e na linha de baixo "Desvio: ". escrevo-os na coluna B obedecendo evidentemente a direção dos Labels mencionados.AddItem Index:=1. Fluminense e Vasco).Show If Not ListBoxOK Then Exit Sub x = LB. Text:="Botafogo" .ListBoxes("LB") LB. "Mil". ao selecionar manualmente quaisquer dos 4 times quero exibir uma mensagem com o Time escolhido. de modo que sem saber .End If End If End If End If If Num Mod 100 <> 0 Then If InStr(1. Escr.(Num \ 1000) * 1000) <= 100 Then If InStr(1.Substitute(Escr.AddItem Index:=3. 1) > 0 Then Escr = Application.ListIndex MsgBox "Voce Selecionou o Time: " & LB. Text:="Vasco" End With ListBoxOK = DialogSheets("ListBoxDialog").ListIndex MsgBox "Voce Selecionou o Item: " & LB.Substitute(Escr.DialogSheets("ListBoxDialog") Set LB = ListBoxDialog. Isto posto. Como proceder ? Solução 31 (010299S1Q31) Sub ExibindoOTimeEscolhido() 'MS Office95/97 Dim LB As ListBox Dim ListBoxDialog As DialogSheet Set ListBoxDialog = ThisWorkbook. "Mil e ") End If End If End If End Function Questão 31(010299Q31) Preciso construir uma ListBox com 4 Times (Flamengo.RemoveAllItems Worksheets(1). Escr. "entos". "entos e ") End If End If If Num Mod 1000 <> 0 Then If (Num . "ento". 1) > 0 Then Escr = Application. Quanto aos valores numéricos da Média e do Desvio.List(x) End Sub Questão 32 (010299Q32) Com muita frequência preciso calcular a média e o desvio padrão de séries.AddItem Index:=2.Select With LB . "entos". "Cento e ") End If End If If Num Mod 100 <> 0 Then If InStr(1. Escr. "Cento". "Mil". Text:="Flamengo" .

. quero escrever um programa que coloque o valor 45 na coluna C. Ax:Ay) onde x e y correspondem ao início e fim da série antes da filtragem..) obtendo uma resposta R = Sum(.Formula = _ "=StDev(A4:A" & ultElemento & ")" End Sub Questão 33 (010299Q33) Seria possivel explicar-me a diferença entre as funções IsNumber e IsNumeric ? Solução 33 (010299S1Q33) IsNumeric é uma função que opera somente no ambiente VBA.Value = "Desvio: " 'Colocando as Formulas: Range("B" & ultElemento + 2). Não há "vazios". Vamos supor que sua série esteja na coluna A. Sub ExibindoOSumário() Dim ultElemento As Long ultElemento = Range("a4"). antes ou depois da filtragem ? Solução 34 (010299S1Q34) No seu caso particular. Ocorre que o valor R não é recalculado para refletir a soma dos elementos que foram selecionados. a partir de a4 e que não haja "brancos". Numa coluna diferente somo esses valores usando =Sum(. Supondo sua série de valores no range A5:A20 e no range A4 o Label da Série. Quero escrever um programa que me calcule na coluna C adjacente(que está vazia) e nas linhas correspondentes aos valores dados. .End(xlDown).. Já IsNumber é uma função que se encontra na biblioteca do Excel. Exemplificando : se meus únicos valores nas colunas A e B forem 12 e 45 respectivamente.Row 'Inserindo os Labels: Range("A" & ultElemento + 2). Há como contornar o problema ? Solução 32 (010299S1Q32) Seu problema gira em torno do último elemento da série. sua fórmula será : =Subtotal( 9. Como proceder para termos sempre renovado o valor da soma dos elementos. Ambas fazem no entanto o mesmo serviço : Indicam True ou False caso se trate ou não de um numérico Questão 34 (010299Q34) Tenho uma coluna de valores numéricos.)..A5:A20) Questão 35 (010299Q35) Tenho duas colunas A e B de valores numéricos. abandone a função Sum e passe a usar a função =Subtotal( 9. Então temos que defini-lo.Value = "Media: " Range("A" & ultElemento + 3). o máximo entre dois valores a1 e b1. tambem não posso indicar onde ficarão os referidos Labels.onde cairá o ultimo elemento da série.Formula = _ "=Average(A4:A" & ultElemento & ")" Range("B" & ultElemento + 3).. o valor do Máximo.. Solução 35 (010299S1Q35) Escrevendo um programa que identifique em c1. Agora faço uma filtragem usando AutoFilter.

Em c11 tenho um valor X que não é exatamente a soma (c5:c10). usei a expressão : "=If(sum(c5:c10)-c11<1. 1). perco muito tempo ao ter que classiicar as notas dos meus alunos.Names. Cells(linha.Max(Range(Cells(1.CurrentRegion. o programa abaixo preencherá a coluna C com os valores máximos encontrados.Range(Cells(4. e as notas. _ RefersTo:=Selecao2 End Sub Questão 38 (010299Q38) Trabalhando em alguns colegios.Select For linha = 1 To Selection. Preciso então comparar cada nota com as demais estabelecendo a classificação .Add Name:="MeuRange2". caso contrário. Cells(1. Portanto substitua na sua fórmula as aspas simples por aspas duplas : "=If(sum(c5:c10)-c11<1. Agradeço à Central de Help em Excel / VBA a ajuda. 2))) Next End Sub Questão 36 (010299Q36) Tenho valores numericos no range c5:c10.Formula = _ Application. "ERRO")" Ocorre que a fórmula acima contem erros. Cada uma das minhas classes tem cerca de 30 a 40 alunos.Max(Range(Cells(linha. Cells(4. 3)). quero que a rotina escreva em d7 a palavra "ERRO" Para chegar a solução desse problema.Names.Sub ExibeValorMaximo() Cells(1. 2). """". 1). não há nada a fazer.Select set Selecao1 = Selection ActiveWorkbook.Formula = _ Application.Select set Selecao2 = Selection ActiveWorkbook.Count Cells(linha. 3)). exigencia da direção. 1).Add Name:="MeuRange1". devem ser fracionarias com uma casa decimal. Cells(5. 3). "".Range(Cells(5. que não apresenta dificuldades maiores. Se a diferença entre o valor exato (sum(c5:c10)) e X for menor que 1. razão pela qual o programa não roda.Rows. 3). Sub ExibeValorMaximo() Cells(1. 2))) End Sub Se voce tem vários valores nas colunas A e B. ""ERRO"")" Questão 37 (010299Q37) Quero atribuir nomes a dois ranges. Como proceder usando-se o VBA ? Solução 37 (010299S1Q37) Suponhamos que seus ranges sejam repectivamente b4:c4 e b5:c5 Sub AtribuindoNomesAosRanges( ) Worksheets(1). Solução 36 (010299S1Q36) O problema da sua fórmula reside na utilização das aspas simples. 2). _ RefersTo:=Selecao1 Worksheets(1).

Escreva suas 9 notas no range b6:b14 2.. transcrevo abaixo.Neste ponto escreva o que for necessário..5 ficou em sétimo lugar..Select .(É claro que notas repetidas tem a mesma classificação).Para resolver o problema do range dinâmico : 1)em sheet1 selecione os dados na coluna b (b6:bn) 2)<Insert <Name <Define Name: RangeDinamico Refers to: =Offset(Sheet1!$b$6. Quando a lista de notas é grande. 2. Obs : Não se esqueça do Ctrl Shift Enter Caso V..7 Classificação: 8..1.5. a classificação fica penosa. pois pode ocorrer faltas aos exames. Teria a Central de Help em Excel / VBA como solucionar este caso ? Solução 38 (010299S1Q38) Tudo o que se indicar abaixo.. sobre a qual não tenho detalhes. tenho valores numéricos. 5.Em c3 escreva =Min($c$6:$c$14) 4. se aplica integralmente a qualquer range de dados... Já recorri a outras fontes sem resultados. as notas e sua classificação final. capaz de espichar ou de encolher dependendo do numero de notas lançadas.. A titulo de exemplo.6 ficou em segundo lugar. 3..Select RangeDinamico. O numero de notas lançadas por sua vez tambem não é igual ao de alunos de mesma classe. a título de exemplo. 4..3.Em module1 escreva a rotina : Sub ClassificandoNotas( ) Worksheets(1).Sa queira fazer um programa.. 2. End . 2. sujeita a erros.6. Solução 39 (010299S1Q39) Sub SelecionandoNaCol( ) .Select . 3 Observando-se as duas linhas ao mesmo tempo. quem tirou 5. 5.Em e6 escreva a formula {=sum(if(d6<=$d$6:$d$14.CountA(Sheet1!$B:$B).Em d6 escreva a fórmula =b6-Min($c$6:$c$14) e arraste até d14 5.iniciando seu programa Range("b5".5. (solução interativa) 1...1)) <Add <OK 3. etc.. 1. textos e vazios(células que não foram preenchidas) se alternando. 3. peço a Central de Help em Excel / VBA que me instrua a respeito.. 6.1))} e arraste até e14 Os valores no range e6:e14 corresponderão à classificação sem o perigo de erros. 7. leve em conta as seguintes observações : 1..5.Row.1))} e arraste-a até c14 3.SpecialCells(xlLastCell). 9... 7.. indiquei que quem tirou 6.O range b6:bn tem as características de um range dinâmico. End Questão 39 (010299Q39) Na coluna B a partir de b5.1 ficou no primeiro lugar. 2.. Cells(Cells.. quem tirou 2..0. 3.Escreva em c6 a fórmula : {=sum(if(b6>=$b$6:$b$14. Desde já fico grato pela colaboração.0.difícil... Isto é possível? Se positivo. Quero selecionar nessa coluna B tudo que estiver entre b5 e a última célula preenchida.0.. 2))..4. 0. Notas: 2.

Address 'Localizando a Fórmula End If Questão 25 (190199Q25) Quero acionar uma Rotina em VBA usando as teclas Alt + a. "ExecutoARotinaOK" End Sub Sub ExecutoARotinaOK() MsgBox "OK" End Sub Questão 26 (190199Q26) Quero construir uma ListBox contendo os nomes dos estados do Brasil. introduza o segmento abaixo no seu programa Cells(x. Como Proceder ? Solução 26 (190199S1Q26) Escreva os nomes dos Estados numa única coluna (exemplo "a3:a26" ) . quero identificar se determinado elemento é numérico ou alfanumérico.Select Application. Isso é possível ? Solução 25 (190199S1Q25) Sim. acione a tecla a) Sub Trap() Worksheets(1). <Input Range: a3:a26 <Cell Link : "A1" (escolha A1 para Cell Link) Notas : < (este sinal indica que voce está acionando o botão esquerdo do mouse) > (este sinal indica que voce está acionando o botão direito do mouse) . "=") <> 0 Then MsgBox "Esta Celula contem uma Fórmula" MsgBox ActiveCell.Questão 24 (190199Q24) Na minha Folha de Dados. <Forms.y). é possível.Select If IsNumeric(ActiveCell) = True Then MsgBox "Celula contendo Numerico" Else MsgBox "Celula contendo Dado não Numérico" End If Solução 24 (190199S2Q24) Respondendo a segunda pergunta.OnKey "%a". <ListBoxes ><Format Control . Na rotina Trap( ) voce deve indicar que combinação de teclas usará para acionar "ExecutoARotinaOK" Transcreva as rotinas abaixo e na Planilha (Sheet1) por exemplo acione Alt + a (Mantendo a tecla Alt calcada. em seguida faça : <View. <Toolbars.Select If Instr(ActiveCell. introduza o segmento abaixo no seu programa Cells(x.y). Como proceder ? Como saber tambem se deteminada célula contem uma fórmula ? Solução 24 (190199S1Q24) Respondendo a primeira pergunta.

00" CellObject. Quero testar algumas rotinas tomando por base os valores iguais ou acima de 500 Primeiro : Quero que esses valores especiais mudem de cor e sejam formatados com duas casas decimais Segundo : Não só mudem de cor mas assumam o formato ITALICO e fiquem em Negrito Solução 27 (190199S1Q27) Respondendo a Primeira pergunta Option Explicit 'Declare todas as Variáveis Const Blue = 5 'Usando Constantes em Visual Basic Const Red = 3 Const Green = 4 Const Yellow = 6 Sub MudandoDeCor( ) Dim CellObject as Object 'Definindo a variável CellObject ActiveSheet.Range("a5:a300").Value >=500 Then With CellObject. deixamos em branco grande quantidade de dados .ColorIndex = 7 End if Next End Sub Respondendo a Segunda pergunta Option Explicit Const Blue = 5 Const Red = 3 Const Green = 4 Const Yellow = 6 Sub xMudandoDeCor( ) Dim CellObject as Object ActiveSheet.Bold = True . Como proceder nestes casos ? Solução 28 (190199S1Q28) .Italic = True End With End If Next End Sub Questão 28 (190199Q28) Originalmente na minha Planilha.Font .Select 'Selecionando o Range For each CellObject in Selection If CellObject.Value >=500 Then CellObject.NumberFormat = "0.Select For each CellObject in Selection If CellObject.Font. Usei <Edit <Replace Find What: * Replace With: 0 e o que ocorreu é que a planilha inteira foi zerada porque o Excel entendeu que quando escrevi "*" estava indicando "qualquer dado".ColorIndex = 7 .Na caixa de diálogo Input Range escreva a2:a25 Na caixa de diálogo Cell Link escreva A1 Questão 27 (190199Q27) A minha Planilha contem valores numéricos no range a5:a300. Para indicar referidos claros usei (*).Range("a5:a300"). Agora quero que tudo que for (*) seja transformado em Zero.

o Excel lhes aplica nomes. Estas informações estão "espalhadas" de uma forma desordenada em linhas e colunas no range citado. O uso das facilidades "AutoFilter ou Advanced Filter" pouco me acrescentam para investigar que células estão pintadas de vermelho.Select 'A variavel MeuRange abaixo está apontando para o range 'a1:k5000 Set MeuRange = ActiveSheet.EntireRow.Hidden = True 'Iniciando a pesquisa em cada linha do range MeuRange For Each mLinha In MeuRange.Range("a1:k5000") 'Acelerando a pesquisa desconectando a atualização da Tela Application.Rows 'Iniciando a pesquisa em cada celula de uma mesma linha For Each Celula In mLinha.Run("Chamada1") Case "btn2" myRoutine = Application.Faça o seguinte : Edit Replace Find What: * Replace With: ~ Search By: Columns Replace: All Questão 29 (190199Q29) No Range b5:b12 tenho os seguintes valores er Case "btn1" myRoutine = Application. Há linhas com uma.Run("Chamada2") End Select End Sub Sub Chamada1() MsgBox "SSS" End Sub Sub Chamada2() MsgBox "XXX" End Sub Notas: Ao introduzir objetos numa Planilha. Como resolver o impasse para mostrar-me apenas as linhas que possuem células marcadas "pintadas" de vermelho? Solução 18 (110199S1Q18) Sub MostrandoCelulasEmFundoVermelho( ) Dim MeuRange as Range Dim Celula as Range.Interior.Cells If Celula. "Pinto-as" de vermelho.EntireRow. ou mais de uma célula com interior vermelho.Hidden = False Exit For End If Next Next 'Desfazendo a Atualização da Tela .ScreenUpdating = False 'Escondendo as linhas do range a1:k5000 MeuRange. Linha as Range Worksheets("Informx"). Atribua (Assign) a Macro QuemChamou() aos dois botões btn1 e btn2 Ativando btn1 ou btn2 as macros Chamada1() ou Chamada2() serão executadas Questão 18 (110199Q18) Minha Planilha("Informx") no range a1:k5000 contem celulas com informações importantes que eu costumo destacar alterando-lhes a cor do fundo. assim como há linhas sem que nenhuma célula esteja demarcada.ColorIndex = 6 Then Celula. Voce deve ter o cuidado de trocar esses nomes para btn1 e btn2.

Controls. Faça : Sub LendoSemAbrir( ) Range("A11").OnAction = "ExecutaRotina1" '===Agora temos o SubMenu "Exportação" Controle2.Application.Add _ (Type:=msoControlPopup.ScreenUpdating = True End Sub Questão 19 (110199Q19) Como criar Menus em VBA de tal forma que eu possa acionar minhas duas Rotinas (uma de Importação e outra de Exportação) Solução 19 (110199S1Q19) Sub IntroduzMenusESubMenus() Set MBarraDeMenus = CommandBars.Caption = "Exportação" Controle2.Formula = "=[AA.xls.Caption = "Importação" Controle1. Sheet1 contem uma fórmula em A11 É possivel ler esta fórmula sem que eu abra o referido arquivo ? Solução 20 (110199S1Q20) Sim é possivel.Controls.CommandBar. Id:=1) Set Controle2 = novoMenu. Temporary:=True) novoMenu. Id:=1) '===Agora temos o SubMenu "Importação" Controle1.ActiveMenuBar '===As instruções abaixo introduzem novo Menu na '===Barra de Menus : "Importação /Exportação" Set novoMenu = MBarraDeMenus.Controls.Add _ (Type:=msoControlButton.Caption = "Importação/Exportação" '===Criando os SubMenus Controle1 e Controle2: Set Controle1 = novoMenu.xls]" & "Sheet1" & "!A1" End Sub Questão 21 (110199Q21) Em determinada célula da minha Planilha há Comentários.Add _ (Type:=msoControlButton.CommandBar.OnAction = "ExecutaRotina2" End Sub Sub ExecutaRotina1() '===Introduza o código MsgBox "Executando a Rotina de Importação" End Sub Sub ExecutaRotina2() '===Introduza o código MsgBox "Executando a Rotina de Exportação" End Sub Questão 20 (110199Q20) O arquivo AA. Pergunto como posso identificar se uma celula contem ou não Comentários ? .

Activate AChart = ActiveChart. desfazendo esse Sort.Border If AChart(i) >= AChart(i .Count With ActiveChart.etc no range B2:Bn Selecione as colunas B:C e execute a macro abaixo que prescinde Da função UNDO. Orientation:=xlTopToBottom End Sub Questão 23 (110199Q23) Minha coluna A Range("a1:an") contem valores das cotações de determinada Ação. 0) End If End With Next End Sub .1) Then . MatchCase:= _ False. Essa coluna B deverá conter a série de valores 1. 255. Key2:=Range("B2") _ .Sort Key1:=Range("B2").Comment If Com Is Nothing Then MsgBox "Não há Comentários".Points(i). OrderCustom:=1. Como resolver o problema usando o VBA ? Solução 22 (110199S1Q22) Estamos supondo seus dados no range C2:Cn Adicione a Coluna Dummie B adjacente à sua Coluna de dados.SeriesCollection(1). e quando a ação subir a linha deve ficar verde. Sub SortDesfazSort( ) Selection. vbExclamation End If End Sub Questão 22 (110199Q22) Minha Coluna C contem valores numéricos inteiros.Points.2.Values For i = 2 To ActiveChart. MatchCase:= _ False.Solução 21 (110199S1Q21) Sub VeComentario() On Error Resume Next Set Com = ActiveCell.Color = RGB(0.Color = RGB(255.5. Orientation:=xlTopToBottom '[insira seu código complementar] Selection.SeriesCollection(1). vbExclamation Else MsgBox "O comentário é :" & Com.3.Sort Key1:=Range("C2"). Preciso fazer um Sort nessa Coluna e mais tarde voltar atrás. Header:=xlGuess. Ativando o Recorder.SeriesCollection(1). Sorteando a Coluna de Dados e aplicando Undo a Macro não se completa. Order2:=xlAscending. Key2:=Range("C2") _ . Order2:=xlAscending.Text.ChartObjects("Chart 1"). Header:=xlGuess. Order1:=xlAscending. 0) Else . OrderCustom:=1..4. Order1:=xlAscending. Quero traçar um gráfico linear de tal forma que quando o valor da ação cair a linha deve ficar vermelha. 0. Solução 23 (110199S1Q23) Sub ColorLine() ActiveSheet..

Pergunta : É possível identificar a linha correspondente a uma CheckBox que acabou de ser ativada ? Solução 11(040199S1Q11): Sim é possível. Function:=xlSum. Para deflagrar a tarefa A.TopLeftCell. Tente a macro abaixo: Sub Qual_Linha() Linha = ActiveSheet. Valor em Reais) e os demais dados estejam no range B5:Cn (onde n é indeterminado).CheckBoxes(Application. A outra coluna contem Valores em Reais.Subtotal GroupBy:=1.Parent. TotalList:=Array(2) .ShowLevels RowLevels:=2 Solução 12 (040199S3Q12) Escondendo a Tabela Se voce quer obter somente um SubTotal relativamente ao conjunto. nem quantos elementos há relativamente a cada código.Cells(4. ele precisará ativar as CheckBoxes (s e g) e assim por diante.Parent. Function:=xlSum. Function:=xlSum. Aplicar um Data Sort na sua tabela deve ser então o primeiro passo. Não há linhas em branco. O que importa é que códigos iguais pertencentes ao mesmo grupo formem blocos. TotalList:=Array(2) . É possível programar-se a obtenção de subtotais ? Há três respostas possíveis para sua questão.Outline. ele precisará ativar as CheckBoxes (x.ShowLevels RowLevels:=1 Imaginemos que na sua tabela (na Sheet1).Subtotal GroupBy:=1.Activate Cells(4. Alem disso há códigos repetidos. TotalList:=Array(2) Solução 12 (040199S2Q12) Escondendo a Tabela Se voce quer mostrar apenas os Subtotais por grupo de códigos e um Total Geral relativamente a soma do conjunto escreva : .Caller). Solução 12 (040199S1Q12) Mostrando a Tabela Se voce quer obter Subtotais relativamente a cada grupo de códigos e um Total Geral escreva : . Function:=xlSum.CurrentRegion .Subtotal GroupBy:=1. Uma coluna contem códigos. as células B4 e C4 contenha os Labels (Código. A rotina abaixo lhe servirá de guia : Sub TestandoSubTotais() Worksheets(1).Select With Worksheets(1). 2).Row MsgBox "Voce Selecionou a CheckBox da Linha : " & _ Linha. O numero de caracteres do código não é relevante. mas não é possível dizer a priori quantos códigos diferentes há.Questão 11(040199Q11): Quero preparar para o meu Cliente uma Worksheet com várias CheckBoxes. vbExclamation End Sub Questão 12 (040199Q12) Minha planilha contem duas colunas adjacentes. Os códigos diferem no número de caracteres. 2).Outline. z e w) Para deflagrar a tarefa B. TotalList:=Array(2) . sem levar em conta os códigos escreva : .Subtotal GroupBy:=1.

mas não obtive sucesso.Usamos o caracter (. 2. X = "1.5 escrito como texto em a10 (alinhado à esquerda) (b) "1.5 em VBA obtem-se o numérico 1.Sum(Range("c3:c27800")) Questão 15 (040199Q15) Como obter os valores: (a) 1. 1). vbExclamation End Sub Questão 14 (040199Q14) Quero somar os valores constantes do range C3:C27800 e obter o resultado na célula C2.5" (b) n = 11.Value = Application.5"" " (c) n = 12.Value = Application.5" ou X = 1. Onde está o meu êrro ? Range("c2").Value = x 'retornará C:\MyDocuments MsgBox x.) como separador de casas decimais(Windows\Regional Settings é como nosso equipamento está configurado).1).12.WorksheetFunction.5 escrito como fórmula em a13 Solução 15 (040199S1Q15) 1.Select 'Substitua n por 10.5 (d) n = 13.5 em EXCEL Cells(n. X = " ""1. WorksheetFunction.5" entre aspas duplas em a11 (c) 1.11.Quando se escreve 1.5 escrito como valor numérico em a12 (alinhado à direita) (d) =1. X = "1.13 em cada um dos casos ActiveCell.End With End Sub Questão 13 (040199Q13) Como fazer com que a célula A1 apresente o meu diretório ? Solução 13 (040199S1Q13) É possivel escrever : NomeAnterior = "C:\MeuDIR\OLDFILE" NomeAtual = "C:\SeuDIR\NEWFILE" Name NomeAnterior As NomeAtual ' Move o arquivo e Renomeia Respondendo sua questão : Sub testePath() x = CurDir("C") Cells(1.Sum("c3:c27800") Solução 14 (040199S1Q14) Modifique sua expressão para : Range("c2"). X = "=1. Usei a expressão abaixo.Value = X Onde : (a) n = 10.5" Questão 16 (040199Q16) .

sugerimos usar tambem a ont> Selecione uma célula qualquer da planilha e escreva =NovoTempo("00:00:05") Solução 2(231298S2Q1): Se voce quiser acionar uma rotina decorridos 05 segundos faça : Sub Inicio() MsgBox "Alô Brasil" Application. ByVal uFlags as Long) as Long Sub TestandoSom( ) Call sndplaysound ("c:\windows\media\chimes. o Excel deflagra uma caixa de diálogo com 5 tabs. mas voce não encontrará no Windows Explorer Properties as informações que precisa. Não consigo saber quais eram as Sheets que o mesmo continha. Solução 17 (040199S1Q17) A função Dcount pede três argumentos : Range. É possivel acrescentar uma nova Worksheet de tal forma que se posicione após a última ? . B(range(b1:b100)) e na coluna C (range(c1:c185)) que satisfaçam a condição : Maiores que 50.Provavelmente (cometi algum êrro) perdi meu trabalho. Como há preferência por expressões com índices. É possivel usar o Windows Explorer ? Há algum modo para contornar essa situação ? Solução 16 (040199S1Q16) É possível. Ative a tab "Contents" e voce verá as sheets e dialogSheets do arquivo corrompido. No tocante aos ranges. Questão 17 (040199Q17) Preciso saber quantos valores há nas colunas A(range(a1:a65)). "Decorridos5Segundos" End Sub Sub Decorridos5Segundos() MsgBox "Feliz Ano Novo" End Sub A mensagem "Feliz Ano Novo" será apresentada 5 segundos após voce ter execu tado a rotina Inicio( ) Questão 2(231298Q2) : Ao cabo da minha rotina quero acrescentar um som de forma a alertar o usuário de que o programa chegou ao fim.dll" Alias "sndPlaySoundA" _ (ByVal lpszSoundName As String. Tente no entanto : Com File Open aponte para o arquivo corrompido selecionando-o sem tentar abri-lo. dou preferência a fórmulas que usem indices.wav". Field e Criteria.0) End Sub Questão 3(231298Q3) : Meu projeto compreende várias Worksheets.OnTime Now + TimeValue("00:00:05"). Com o Mouse direito ative "Properties". Isso é possível ? Solução 2(231298S1Q2) : Declare function sndplaysound Lib "winmm.

Se o seu Workbook contem por exemplo 3 Worksheets então Worksheets. e assim por diante.. seja MacroBB a macro que manipula os dados do arquivo BB. BB. Sub TestandoOperação( ) Dim Arquivo as string. Move After:=Worksheets(Worksheets. Este processo.xls.xls e DD.xls . CC. Exemplificando : 28/05/98 . alem de demorado é trabalhoso.xls. DD.xls faz os cálculos necessários e fecha o arquivo quando conclui o serviço.xls estão no diretório C:\My Documents Abra um novo arquivo (NovoArquivo. Preciso escrever na coluna ao lado o dia da semana e o numero de ocorrências desse dia no mes. 5 (onde o valor 5 indica que nesse mes de maio tivemos 5 Quintas Feiras até o dia 28) Solução 5(231298S1Q5): Supondo que B:B seja sua coluna de datas e que sua primeira data está em b4 escreva em c4 : = text(b4. O modêlo abaixo para o arquivo AA.Close End Sub Questão 5(231298Q5) : Tenho uma coluna com datas na forma dia/mes/ano.xls" diretorio = "C:\My Documents\" Workbooks.Open diretorio & Arquivo Application. que contará o numero de worksheets no seu Workbook.xls seja a macro MacroAA.Count) Questão 4(231298Q4) : Tenho quatro arquivos.Solução 3(231298S1Q3) : Tudo bem se voce estiver usando a última versão do Excel. Para simplificar vamos chama-los de AA. Suponhamos que seus arquivos AA.xls ? Solução 6(231298S1Q6): . da mesma forma.xls. Quinta Feira.xls.Add.Count será igual a 3 e portanto Worksheets(Worksheets. Grupo os resultados obtidos quando abro o arquivo CC. Faço o mesmo em relação ao arquivo BB. Executo uma macro para o arquivo AA.xls importa os dados anteriores e executa outra série de calculos.xls..xls deve ser extendido aos demais arquivos.Count) será o mesmo que escrever Worksheets(3) Insira no seu programa a instrução : Worksheets. "dddd") (que lhe devolve Quinta Feira) escreva em d4 : =int(day(b4)/7 + 1) (que lhe devolve 5) Selecione c4:d4 e arraste enquanto houver dados na coluna B Questão 6(231298Q6) : Como posso ter acesso a uma constante que foi declarada em outro arquivo . O arquivo DD.xls) e use como modelo de desenvolvimento a macro TestandoOperação( ) que abre o arquivo AA. É possivel fazer um programa que execute o mesmo serviço sem interrupção ? Solução 4(231298S1Q4) : Suponhamos que a macro que manipula os dados do arquivo AA.Run Macro:=Arquivo + "!MacroAA" Windows(Arquivo).xls.xls. diretorio as String Arquivo = "AA. Neste caso use o método Count.

Isso é possivel ? Solução 7(231298S1Q7): Sim.xlConstants). criterio2 . b1:b500) (Expressão A) irá somar os valores da coluna B todas as vezes que os valores da coluna A superarem 200 =sumif(a1:a500. Somar por exemplo os valores da coluna B quando aqueles da coluna A superarem 200 subtraindo esse resultado dos valores da coluna B quando aqueles da coluna A forem inferiores a 53.. Solução 9(231298S1Q9): O range a1:an tem as características de um range dinâmico. no range A1:An disponho de caracteres numéricos sob a forma de strings. Mas não lhe será possível acessa-la se voce estiver num dos módulos do arquivo BBB. criterio1 . resultando nos ranges a1:a15(n = 15) . a1:a150(n =150) .Ao declarar a constante X como Public no arquivo AAA. mantendo no entanto as datas e demais valores numéricos ? Solução 8(231298S1Q8): Sub EliminaTextos( ) Worksheets("Sheet1"). Como solucionar esse problema..Expressão B Satisfeito ? Questão 8(231298Q8) : Seria possivel escrever-se uma rotina que elimine da minha planilha os textos. 150. Tenho então dois problemas a resolver : a)preciso converter os strings em números para operar com os mesmos b)o range a1:an é variavel de forma que n pode assumir quaisquer valores.xls.xls.. Questão 7(231298Q7) : Numa coluna com 500 valores numéricos preciso fazer uma soma complexa. voce poderá acessá-la de qualquer módulo desde que nesse mesmo arquivo AAA.ClearContents End with fim: Exit Sub End Sub Questão 9(231298Q9) : Na coluna A. Exemplificando : n pode assumir a sequencia de valores 15.SpecialCells(xlTextValues. é possível : Supondo seus dados no range a1:a500 escreva então a fórmula : =sumif(a1:a500.. b1:b500) (Expressão B) irá somar os valores da coluna B todas as vezes que os valores da coluna A não superarem 53 criterio1 é ">200" e criterio2 é "<=53" Calcule então : ExpressãoA . ou seja somar valores que atendam a diferentes critérios.Select On Error GoTo fim With Columns . Para resolver o problema do range dinâmico : 1)em sheet1 selecione os dados na coluna A (A1:An) .xls. etc. a1:a76(n=76) . capaz de espichar ou de encolher. 76 .

e não todas as Worksheets (a partir da Quarta) como voce deseja Para selecionar todas as Worksheets a partir da quarta.Select Next End With End Sub Solução10(231298S1Q10): Sua Proc seleciona somente a última Worksheet.0.Select For Each Cell in Selection Cell.Index >= MeuIndice Then sh. Worksheets(7) = Sheet3 Como selecionar todas as Worksheets a partir da Worksheets(4) ? A Proc abaixo não faz exatamente o que eu quero. Worksheets(6) = Sheet2.value) Next End Sub Questão10(231298Q10) : Tenho 7 Worksheets na seguinte ordem: Worksheets(1) = Sheet7.Value = CDBL(cell.Select RngDyn.Select For Each sh In wb. 4 End Sub Sub VamosSelecionar(wb As Workbook.Select End Sub Outra Solução10(231298S3Q10) : Sub XTesteSeleção() VamosSelecionar ActiveWorkbook. Refers to: =Offset(Sheet1!$A$1.0.Worksheets.Count ReDim MeuArray(4 To c) For i = 4 To c MeuArray(i) = i Next i Sheets(MeuArray). Worksheets(3) = Sheet5.Worksheets If sh.Worksheets(MeuIndice). i As Integer c = ActiveWorkbook.COUNTA(sheet1!$A:$A). ByVal MeuIndice As Integer) Dim sh As Worksheet wb.Sheets.Worksheets(i).Worksheets(i).1) <Add <OK Em module1 escreva a rotina : Sub TransfSeuString( ) Worksheets(1).Select (i=prim) Outra Solução10(231298S2Q10): Sub testandoSeleção() Dim MeuArray.Select .2)<Insert <Name <Define Name: RngDyn será o nome do range. Worksheets(5) = Sheet1. c As Integer. Worksheets(4) = Sheet4.Select False Next End Sub .Worksheets(i). Onde está o êrro ? Sub SelecionandoTeste() Dim i As Integer prim = 4 With ActiveWorkbook For i = prim To . Worksheets(2) = Sheet6. a linha de comando deve ser reescrita como .Count .

Retorno ao tôpo dessa página .