Notifications
Clear all

Como percorrer várias caixas de texto na planilha?

5 Posts
3 Usuários
0 Reactions
609 Visualizações
(@klarc28)
Posts: 0
New Member
Topic starter
 

O código a seguir já está quase funcionando. Só não estou conseguindo pegar o valor das caixas de texto:

Option Explicit

Sub PREENCHERCAIXAS()

Dim CT As Object
'ESTE LAÇO PERCORRE TODOS OS CONTROLES
'DA PLANILHA PLAN1
For Each CT In Plan1.Shapes
'MOSTRAR O NOME DE CADA CONTROLE

'MsgBox CT.Name

Dim C As Long
Dim D As Long
'D VAI SER A QUANTIDADE DE LINHAS
'A DESLOCAR PARA BAIXO
'EM RELAÇÃO À CELULA ATIVA
D = 0
'COMO TENHO TRÊS PARES DE CAIXA DE TEXTO,
'FAÇO UM LAÇO DE 1 A 3
For C = 1 To 3

If CT.Name = "txtNOME" & C Then
'POSSO DESLOCAR UMA CÉLULA PARA A DIREITA
'QUE SERIA O NÚMERO 1 ABAIXO
'OU POSSO DEIXAR NA MESMA COLUNA
'AÍ EU VOU TROCAR DE 1 PARA ZERO
ActiveCell.Offset(D, 0).Value = CT.TEXT


End If

If CT.Name = "txtENDERECO" & C Then
'AQUI DESLOCO 1 CÉLULA PARA A DIREITA
ActiveCell.Offset(D, 1).Value = CT.Text

End If
D = D + 1

Next



Next


End Sub

Dá erro nesta linha:

ActiveCell.Offset(D, 0).Value = CT.TEXT
 
Postado : 14/02/2018 2:51 pm
(@xlarruda)
Posts: 0
New Member
 

Só uma teoria mas..
tente colocar D=0 depois do For C= 1 to 3..
Mas não tenho certeza

 
Postado : 14/02/2018 3:52 pm
(@klarc28)
Posts: 0
New Member
Topic starter
 

Não deu certo. Parece que ele não reconhece a propriedade do objeto CT. As coordenadas das células posso ajustar depois. Mas não consigo pegar o texto da caixa de texto.

 
Postado : 14/02/2018 3:55 pm
(@edsonbr)
Posts: 0
New Member
 

Como não são controles tipo Formulário mas sim controles ActiveX na camada de desenho da planilha, pode-se percorrer através da coleção de OLEObjects ou da coleção de Shapes. Exemplo:

Objetos OLE da Plan1:

Sub PercorrerOLEObj()
  Dim CT As OLEObject
  For Each CT In Plan1.OLEObjects
    If TypeOf CT.Object Is MSForms.TextBox Then
      Debug.Print CT.Name
      Debug.Print CT.Object.Value 'ou .Text
    End If
  Next CT
End Sub

Figuras da Plan1:

Sub PercorrerShapes()
  Dim CT As Shape
  For Each CT In Plan1.Shapes
    If TypeOf CT.OLEFormat.Object.Object Is MSForms.TextBox Then
      Debug.Print CT.Name
      Debug.Print CT.OLEFormat.Object.Object.Value 'ou .Text
    End If
  Next CT
End Sub
 
Postado : 14/02/2018 4:02 pm
(@klarc28)
Posts: 0
New Member
Topic starter
 

Sen ... sa ... cio ... nal!
Ge ... ni ... al!
Ex ... tra ... or ... di ... ná ... rio!
Ma ... ra ... vi ... lho ... so!

Edson, você é o cara. Muito obrigado!

Para quem precisar, está aí o anexo:

 
Postado : 14/02/2018 4:12 pm