Macro en excel no guarda valores de variables
En septiembre escribí algo parecido y di con la solución yo solo (un error de deletreo de la variable al nombrarla publica, una tontería). En este caso sigo sin encontrar dónde está el problema.
Tengo un formulario que me muestra ciertos datos de la facturación de un cliente (número de factura, cliente, fecha, importe...). Está hecho de forma que si la factura es del tipo "azul" me dice que no puede mostrar los datos y si es del tipo "roja" sí. Lo hago así:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
num_factura = TextBox1.Value
Sheets("albaranes").Select
ultima_fila_albaranes = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
i = ultima_fila_albaranes
''' BUSCAMOS SI EL NUMERO DE FACTURA ESTÁ EN LA HOJA DE FACTURAS ROJAS
Do While i > 3
If Range("I" & i).Value = num_factura Then
mensaje = MsgBox("Factura ROJA. Elija otra.", vbOKOnly + vbInformation, "ERROR EN NÚMERO DE FACTURA")
TextBox2.Value = "" ' Cliente
TextBox3.Value = "" ' Restaurante
TextBox4.Value = "" ' Fecha
TextBox5.Value = "" ' Importe
Exit Sub
End If
i = i - 1
Loop
''' LOCALIZAMOS LA FACTURA EN LA HOJA DE FACTURAS AZULES Y MOSTRAMOS SUS DATOSSheets("facturas").Select
ultima_fila_facturas = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
i = ultima_fila_facturas
salir_bucle = 0
Do While i > 3 And salir_bucle = 0
If Range("A" & i).Value = num_factura Then
TextBox2.Value = Range("C" & i).Value ' Cliente
TextBox3.Value = Range("D" & i).Value ' Restaurante
TextBox4.Value = Range("B" & i).Value ' Fecha
TextBox5.Value = Range("E" & i).Value ' Importe
salir_bucle = 1
End If
i = i - 1
Loop
factura = TextBox1.Value
cliente = TextBox2.Value
restaurante = TextBox3.Value
fecha = TextBox4.Value
importe = TextBox5.Value
End Sub
Como veis, al final todo le doy valor a ciertas variables. Variables que dentro del propio formulario están declaradas públicas de la siguiente manera:
Public factura, cliente, restaurante As Integer
Public fecha As Date
Public importe As Currency
El caso es que al darle a un segundo botón, me abre un segundo formulario en el que me añade un Textbox extra para modificar el texto que aparece en la factura. Además, me mantiene los datos anteriores para asegurarme de que estoy modificando la factura correcta. Lo hago así (recordad que es un formulario distinto):
Private Sub UserForm_Initialize()
TextBox1.Value = factura
TextBox2.Value = cliente
TextBox3.Value = restaurante
TextBox4.Value = fecha
TextBox5.Value = importe
End Sub
Hay poco que rascar en ese código. El caso es que las variables "factura" y "cliente" no las guarda. Cuando se está ejecutando la macro, al pasar al segundo informe, si me pongo encima de ellas con el ratón aparecen "Vacío", en lugar del valor. Las otras tres sí que las coge.
He comprobado y no estoy usando esas variables en ninguna otra parte de todo el código ni las declaro en ningún otro sitio.
¿Qué está pasando?