VBA estoy tratando de crear un rango dinámico, lo estoy haciendo de las siguientes maneras pero me da error.

ncol = ncol + 66
Ncol es el valor variable de la columna y 66 es el código ascii de la letra "A", xran = "(A:" & CStr(ncol) & ")", intentando me gener ("A:B") C, DE, E etc deependiendo del valor de ncol al usarlo en .Range("xran").Columns.AutoFit error

La otra forma es .Columns("A:" & CStr(ncol)). AUTOFIT, serían tan ambles de apoyarme enesto

2 Respuestas

Respuesta
1

Te dejo la macro ajustada:

Sub ajusteCol()
'x Elsamatilde
ncol = ncol + 66
xran = "(1:" & ncol & ")"
Range(xran).Columns.AutoFit
End Sub

Sdos y no olvides valorar la respuesta (Excelente o buena).

Tengo una duda el rango que genera es de este tipo 1:B funciona?

Saludos

No, disculpa. No va la línea que suma 66 a tu variable.

La macro que dejaste al inicio parte con el contenido de una variable ncol.

Se entiende que allí ya tenés el número de columna que te interesa. En mi macro coloqué la instrucción, pero esa línea no hace falta si ya viene de alguna otra.

Entonces no es necesario pasarla a letras, podes utilizar números también.

Sub ajusteCol()
'x Elsamatilde
'ncol = ActiveCell.Column    'el número de columna activa o como lo obtengas
xran = "(1:" & ncol & ")"
Range(xran).Columns.AutoFit
End Sub

Sdos!

Respuesta
1

Trata con esta macro, no emplea código ASCII ni lo ocupa solo seleccionas la casilla donde quieres iniciar el rango y correr la macro que te va pedir que señales con el ratón donde quieres que finalice el rango, das click y la macro te sombreara el rango requerido.

Sub letra()
celda = ActiveCell.Address(False, False)
Set celda2 = Application.InputBox(prompt:="celda final", Type:=8)
cf = celda2.Address(False, False)
Range(celda & ":" & cf).Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas