Programación visual básica en excel

Tengo escrito por grabación de macros en excel que selecciona dos celdas en excel y le aplica el combinado y centrado de celdas.

De esta forma:

Sub Centrar()
'
' Macro para centrar
' Grabando la macro
ActiveWindow.SmallScroll Down:=-3
Range("C5:D5").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge

End Sub

Yo necesito modificar dicho código para que me haga hasta la ultima fila la combinación y centrado de las celdas C6:D6, C7:D7, C8:D8 y así hasta la última fila.

Se me ocurio utilizar alguna de las estructuras repetitivas (loop) ya sea for to next o do until

el problema esta en que cuando llega a esta linea me da error

 ActiveSheet.Cells("10,2:10,3").Select

pensé en usar el offset

No he llegado a escribir todo el sub porque el error me tiene trabado el código escrito hasta ahora es el siguiente
Sub escribir()
 ' Macro escrita por mi para probar y despues
 ' Aplicarle algun loop para cumplir el cometido
 ' Combinar y centrar las fias de la 5 en adelante del las columnas c y d
 Dim filainicial As Long
 Dim filafinal As Long
 filafinal = 1000
 'ActiveSheet.Range("c5") = "Escribire"
 ActiveSheet.Cells("5,10") = "Celda"
 'For filainicial = 5 To filafinal
   ' ActiveSheet.Cells("10,2:10,3").Select
   With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
   End With
    Selection.Merge
'Next filaincial
End Sub

2 Respuestas

Respuesta
1

La grabadora de macros es muy buena para ir comenzando con el VBA y lo mejor es eso de ir probando/ensayando, es la mejor manera de aprender. Un ejemplo simple como para que vayas analizándolo:

Sub Combinando()
Dim FilaFinal As Long, x As Long
Let FilaFinal = 1000
For x = 5 To FilaFinal
Range("C" & x & ":D" & x).MergeCells = True
Range("C" & x & ":D" & x).HorizontalAlignment = xlCenter
Next x
End Sub

Dale una leída a algunos manuales, es obvio que la idea de como hacerlo, la tienes, solo es cuestión de "ajustar" algunas cosas.

Salu2

Abraham Valencia

¡Gracias! Abraham el codigo me sirvio no me acordaba como se hacia la concatenación en vba ya que lo use cuando recien empesaba después ya  estudie visualbasic 6.0 donde tego desarrolados varios programas es cierto que se concatena igual, pero se me hiso una laguna y no lo relacione.  Y hace 3 años aprendi javasicrippt y php donde es distintto.

Saludos

Respuesta
-1

Esta macro hace lo que pides

Sub combinarycentrar()
Set datos = Range("c5").CurrentRegion
With datos
    For i = 1 To .Rows.Count
        With .Cells(i, 1).Resize(1, 2)
            .Merge
            .HorizontalAlignment = xlCenter
        End With
    Next i
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas