Ir para conteúdo
Fórum Script Brasil
  • 0

Metodo Select Da Classe Range - Falha


andré Luiz

Pergunta

Pessoal, SOCORRO! Meus neuronios já pifaram... blink.gif

Devo estar cometendo um erro elementar, mas pra dizer a verdade, faz dias que estou fuçando e não encontro o que estou fazendo de errado.

Uma comando super simples como Cells.Select não funciona de jeito nenhum na minha macro.

Já substitui por outro comando (como por exemplo "Range("A1").Select"), já alterei a sequencia de execução, já tentei quase tudo...

O problema ocorre sempre que a macro atinge uma função de Range ou Select ou ainda Cells(C,L).Select ou Cells(C,L).Activate.

alguém tem alguma pista do que estou fazendo de errado no código?

Muito obrigado. André

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

A coisa vem assim....

O módulo é executado dentro de uma planilla Excel cuando o usuário aciona um botão. então o sistema pede para o usuario indicar onde está o arquivo texto com todas as informações para a preparação da planilha em Excel.

' Opening file

CancelProcedure = MsgBox("Indique localizacao do arquivo txt.", vbOKCancel)

If CancelProcedure = 2 Then GoTo Suspende:

FileToOpenTxt = Application.GetOpenFilename("Text Files (*.txt), *.txt")

MsgBox FileToOpenTxt

Application.ScreenUpdating = True

Workbooks.OpenText Filename:=FileToOpenTxt, _

Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, TextQualifier:= _

xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, Semicolon:=False,

_

Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(0, 1), Array(8, 1), _

Array(15, 1), Array(31, 1), Array(47, 1))

E até aqui tudo anda bem. Depois a macro muda o nome do arquivo para gravá-lo como .xls

' Saving file

FileToOpenTxt = Right(FileToOpenTxt, 26)

FileToOpenTxt = Left(FileToOpenTxt, 22)

ActiveWorkbook.SaveAs Filename:= _

"C:\Documents and Settings\amascaro\My Documents\SAP files\RSF Macro\" & FileToOpenTxt _

, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _

ReadOnlyRecommended:=False, CreateBackup:=False

E novamente, até aqui não há problemas. Tudo funciona bem e o arquivo é gravado com .xls

Aqui aparece o problema. O primeiro que tento fazer, depois de ter o arquivo já gravado é tirar o grid da planila e ajustar a largura de cada célula, mas aí aparece a falha.

' Formating file

ActiveWindow.DisplayGridlines = False

Cells.Select

Cells.EntireColumn.AutoFit

Range("A7:V15000").Select

E a macro é interrompida justamente no comando Cells.Select

Se altero este comando para qualquer outro Range( ).Select dá o mesmo.

Pode ser que além de ter a planilha aberta neste momento e já salva como xls ainda assim tenha que incluir outro comando para confirmar que a planilha está selecionada? Qual seria?

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, fiz o teste abaixo aqui e deu tudo certo. Como você pode ver, eu só mudei o caminho do arquivo (para ser um caminho fixo):

arquivo = "d:\temp\botoes.txt"

Application.ScreenUpdating = True

Workbooks.OpenText Filename:=arquivo, Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array(0, 1), Array(8, 1), Array(15, 1), Array(31, 1), Array(47, 1))
ActiveWorkbook.SaveAs Filename:=arquivo, FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False

ActiveWindow.DisplayGridlines = False
Cells.Select
Cells.EntireColumn.AutoFit
Range("A7:V15000").Select

Teste este código aí e veja se dá o mesmo erro.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

DESCOBRI !!!!!!!!! Aleluia ! biggrin.gif

Obrigado pela ajuda, me fez pensar um pouco mais, mas me deu um estalo que me fez lembrar de uma macro que recebi já faz algum tempo de um colega nos EUA (no trabalho) e que teinha uma diferença básica para esta que me estava fazendo sofrer: eu estava escrevendo a macro dentro da propria planilha do Excel onde e não em um módulo a parte, dentro do VBAProject.

Quando me liguei na diferença fiz o teste. Deletei a macro toda da planilha e a coloquei em um módulo, dentro do mesmo VBAProject, mas esta simples mudança foi o suficiente para o método Range passasse a funcionar. Agora posso seguir com o projeto adiante.

Espero que esta discução possa servir de fonte de consulta para outros usuários que possam se enfrentar com o mesmo problema.

Valeu.

rolleyes.gif André Luiz

Link para o comentário
Compartilhar em outros sites

  • 0
DESCOBRI !!!!!!!!! Aleluia ! :D

Obrigado pela ajuda, me fez pensar um pouco mais, mas me deu um estalo que me fez lembrar de uma macro que recebi já faz algum tempo de um colega nos EUA (no trabalho) e que teinha uma diferença básica para esta que me estava fazendo sofrer: eu estava escrevendo a macro dentro da propria planilha do Excel onde e não em um módulo a parte, dentro do VBAProject.

Quando me liguei na diferença fiz o teste. Deletei a macro toda da planilha e a coloquei em um módulo, dentro do mesmo VBAProject, mas esta simples mudança foi o suficiente para o método Range passasse a funcionar. Agora posso seguir com o projeto adiante.

Espero que esta discução possa servir de fonte de consulta para outros usuários que possam se enfrentar com o mesmo problema.

Valeu.

:rolleyes: André Luiz

Por favor, estou com o mesmo problema. Eu criei uma planilha em branco, coloquei um botão e a macro.

O que é exatamento colocar uma macro "em módulo"?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

olá pessoal... estou com o mesmo problema..... sendo que já estou escrevendo a macro em um módulo (ao invés de escrever na planilha) e continua sem funcionar. Será porque tenho mais de um módulo? Mas isso não faz sentido algum...... aliás..... programar em vba é uma porcaria.... mas.... é a necessidade... já tentei também alterar a propriedade <TakeFocusOnClick> do botão de True para False; também não funciona. Eu li num fórum que o Excel tem um problema sério com foco, e ao focar um botão, dava erro ao focar numa planilha. Não sei mais o que fazer. Meus clientes estão quase me enforcando. Já tentei de tudo, ou melhor, quase tudo.

Será que alguém tem alguma outra idéia? A versão do meu Excel é a 2003. Obrigada.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Marcelo Alves

Boa Tarde.

Estou fazendo uma macro no Excel onde preciso localizar um texto, e colar sobre o mesmo a formatação que trouxe de outro local.

Porem quando faço a macro, utilizo o comando

Cells.Find(What:="CIDADE", After:=ActiveCell, LookIn:=xlFormulas, LookAt _

:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _

False, SearchFormat:=False).Activate

Range("A71").Select

ActiveSheet.Paste

Range("A72").Select

Porém quero substituir o valor "A71" pela celula localizada. Como faço ?

Obrigado desde já

Link para o comentário
Compartilhar em outros sites

  • 0

No meu caso, era um erro parecido...

Apenas mudei a ordem da linha  " Range("A1:D22").Activate "

Ela estava após habilitar o envio de e-mail, alterando para antes de habilitar, parou o erro:

___________________________________

'Código antigo:

Sub Enviar_cancelar_envio()
   
   If ActiveWorkbook.EnvelopeVisible = False Then
   ActiveWorkbook.EnvelopeVisible = True
   

   Range("A1:D22").Activate


With ActiveSheet.MailEnvelope
      .Introduction = "This is a sample worksheet."
      .Item.To = "E-Mail_Address_Here"
      .Item.Subject = "My subject"
      .Item.Send
End With

   Else
   ActiveWorkbook.EnvelopeVisible = False
   Range("E1").Activate
   End If

 

_________________________________________

'Segue o código que parou de dar o erro:

Sub Enviar_cancelar_envio()
   
   If ActiveWorkbook.EnvelopeVisible = False Then
   Range("A1:D22").Activate 
   ActiveWorkbook.EnvelopeVisible = True
   
With ActiveSheet.MailEnvelope
      .Introduction = "This is a sample worksheet."
      .Item.To = "E-Mail_Address_Here"
      .Item.Subject = "My subject"
      .Item.Send
End With

   Else
   ActiveWorkbook.EnvelopeVisible = False
   Range("E1").Activate
   End If

_______________________________________

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...