
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
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


0