Saberexcel - o site de quem precisa aprender Microsoft Excel VBA
Esse macro do Aplicativo Microsoft Excel VBA(Visual Basic Application), insere um Shapes(Autoforma) com determinadas medidas, na folha de planilha, contendo as palavras abaixo determinados pelo macro, fazendo um número de interações determinado pela constante Maximo_interacoes, essas palavras são repetidas no proprio shapes(autoforma), esses números de vezes que são determinados pelo loop ao número de interações desejadas.
Observe que aproveitei o exemplo para inserir um contador na célula(A1) e nesta célula vinculei um tipo de barra de progressão bem interessante,
ligada à uma Função
Public Sub Loop_insere_palavra_shapes()
Dim vPlans As Excel.Worksheet
Dim vShapes As Shape
Dim vFrame As TextFrame
Dim i As Long
Const Incio_Texto As String = "Aprender VBA Saberexcel, Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, " _
& "Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, " _
& "Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, Prática, Treinamento é tudo no aprendizado!."
Const Maximo_interacoes As Long = 200
MsgBox Len(Incio_Texto)
Set vPlans = ThisWorkbook.Sheets("Loop_palavras_repetidas_shapes")
Set vShapes = vPlans.Shapes.AddTextbox(msoTextOrientationHorizontal, 50, 50, 500, 1000)
Set vFrame = vShapes.TextFrame
'Debug.Print TypeName(vShapes), vShapes.Name'
vFrame.Characters.Text = Incio_Texto
'vFrame.AutoSize = True
For i = 1 To Maximo_interacoes
Inserir_EsteTexto vFrame, " Saberexcel_VBA_Treinamento®"
Range("A1").Value = i
Next i
'
End Sub
Private Sub Inserir_EsteTexto(vFrame As TextFrame, _
vstrTexto As String)
Dim strRight As String
Dim i As Long
With vFrame
For i = 0 To Int(Len(vstrTexto) / 254)
strRight = .Characters(.Characters.Count).Text
.Characters(.Characters.Count).Insert strRight & Mid(vstrTexto, (i * 254) + 1, 254)
'Debug.Print Len(vstrTexto), .Characters.Count'
Next i
End With
End Sub
Essa macro abaixo é uma macro auxliar para ajudar no teste com o macro acima, sua função deletar shapes retangulares.
Sub Deleta_Shapes_retangulares()
Dim shp As Shape
For Each shp In ActiveSheet.Shapes
If shp.AutoShapeType = msoShapeRectangle Then
On Error Resume Next
If Intersect(shp.TopLeftCell, Selection.Range) Then shp.Delete
'Intersect(shp.BottomRightCell),Selection.Range) Then shp.Delete
End If
Next shp
[A1].Value = ""
End Sub
Aprenda tudo sobre planilhas do Aplicativo Microsoft Excel VBA(Visual Basic Application), sozinho, com baixo custo, praticando com os produtos didáticos Saberexcel
Baixe o exemplo de planiha contendo macros acima
Excel planilha vba shapes interacao texto contador (66.3 KB)