Excel - Llenar series con macro

 
Vista:
sin imagen de perfil

Llenar series con macro

Publicado por luis (2 intervenciones) el 08/05/2014 23:26:06
Saludos a todos:

Tengo un problemilla y no puedo resolverlo espero que me puedan ayudar, se agradece la atención por anticipado:


Estoy trabajando en excel 2010 y visual para aplicaciones.

Tengo una hoja que se llama Menú en la cual tengo un botón de comando con el siguiente código:

Private Sub CmdRecibos_Click()

Rem macro que pone el texto Recibos en la linea 2 de la primera columna vacia y muestra un userform llamado UserRecibos

Range("A2").Select

Do While ActiveCell <> Empty

ActiveCell.Offset(0, 1).Select

Loop

ActiveCell.FormulaR1C1 = "Recibos"


Rem mensaje que me dice en donde esta la celda activa
MsgBox "Esta es la celda " & Replace(Selection.Address, "$", "")


UserRecibo.Show

End Sub

El anterior còdigo funciona bien

El código del userform UserRecibos es el siguiente:

Dim lugar As String
Private Sub CantRecibos_Change()

Dim Texto As Variant
Dim Caracter As Variant
Dim Largo As Integer
On Error Resume Next
Texto = Me.CantRecibos.Value
TextBox1 = Texto
Largo = Len(Me.CantRecibos.Value)
For i = 1 To Largo
Caracter = Mid(Texto, i, 1)
If Caracter <> "" Then
If Caracter < Chr(48) Or Caracter > Chr(57) Then
Me.CantRecibos.Value = Replace(Texto, Caracter, "")
Else
End If
End If
Next i
On Error GoTo 0
Caracter = 0
Caracter1 = 0
Rem End Sub



End Sub

Private Sub CmdSalir_Click()
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Activate
Loop

ActiveCell.Offset(0, 0) = ReciboInicial
MsgBox "Esta es la celda " & Replace(Selection.Address, "$", "")

lugar = ActiveCell.Address(False, False)
TextBox2 = lugar

j = CantRecibos
k = 1
i = ReciboInicial

For x = 1 To j
y = i + k


Range("F" & LTrim(Str(x))).Value = y: rem esto funciona pero siempre en la columna F y aqui es donde debe de cambiar a un rango variable
i = y
Next x


Rem End

End

End Sub

Private Sub Label3_Click()

End Sub

Private Sub ReciboFinal_Change()

End Sub

Private Sub ReciboInicial_Change()

Dim Texto As Variant
Dim Caracter As Variant
Dim Largo As Integer
On Error Resume Next
Texto = Me.ReciboInicial.Value
Largo = Len(Me.ReciboInicial.Value)
For i = 1 To Largo
Caracter = Mid(Texto, i, 1)
If Caracter <> "" Then
If Caracter < Chr(48) Or Caracter > Chr(57) Then
Me.ReciboInicial.Value = Replace(Texto, Caracter, "")
Else
End If
End If
Next i
On Error GoTo 0
Caracter = 0
Caracter1 = 0


ReciboFinal = Val(ReciboInicial) + CantRecibos
End Sub

Private Sub UserForm_Click()

End Sub

Private Sub UserForm_Initialize()

Range("a2").Select
Selection.End(xlToRight).Select


End Sub

Private Sub CantRecibos_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If CantRecibos = "" Then Cancel = True
End Sub

Private Sub ReciboInicial_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If ReciboInicial = "" Then Cancel = True
End Sub

Private Sub ReciboFinal_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If ReciboFinal = "" Then Cancel = True
End Sub


El problema que tengo es en el botón salir del userform

En él se hace un ciclo que me permite llenar una serie dependiendo de la cantidad que capture en el textbox CantRecibos y el textbox ReciboInicial con el ciclo for next que implemente me funciona a medias ya que como mencione anteriormente si lo hace pero siempre en la columna F que es como lo tengo , pero lo que deseo es que lo haga en la celda siguiente de donde inserta la palabra Recibos que siempre es la linea 2 , en la linea 3 inserta el contenido del textbox llamado ReciboInicial y de ahi hacia abajo comenzaria a llenarse la serie de acuerdo al contenido del textbox llamado CantRecibos , este procedimiento cambia dos o tres columnas hacia la derecha diariamente por eso lo quieor hacer con un rango variable en lugar de darle el Nombre de la Columna "F" en este caso de ejemplo

si alguien me puede ayudar se agradecera:


esperando su ayuda y apreciando la atencion por anticipado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Llenar series con macro

Publicado por Juanjo (494 intervenciones) el 09/05/2014 09:55:07
Muy buenas.

Bueno, no te he leído todo el código, pero una cosa que puedes hacer es declarar una variable pública. Pones al principio de todo el código:
Public columna

Luego la primera macro, antes de UserRecibo.Show, pones
columna = Selection.Column

Y por último, Range("F" & LTrim(Str(x))).Value = y lo sustituyes por:
Range(columna & LTrim(Str(x))).Value = y

Un saludo. Juanjo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Llenar series con macro

Publicado por luis (2 intervenciones) el 10/05/2014 07:26:59
Hola Juanjo

Gracias por ayudarme pero te comento no me funcionó con las indicaciones que me comentas

me da un error 1004 error en el método "range" de objeto "_Global" en la linea
Range(columna & LTrim(Str(x))).Value = y

yo tambien lo habia pensado en meter una variable pero no se como implementarla.

No se si este error se de por que como comente en el post la primera parte del código lo tengo en un boton de comando dentro de la hoja y el segundo código que es donde esta el ciclo esta en el user form
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar