Que estoy haciendo mal?

05/07/2006 - 20:15 por vm_tapia | Informe spam
en un UserForm tengo un TextBox con el nombre "CODIGO" al cual le asigno la
siguiente rutina:

Private Sub Codigo_AfterUpdate()
Rango = ThisWorkbook.Worksheets("Clientes").Range("Consecutivo")
Numero = ThisWorkbook.Application.WorksheetFunction.Max(Rango)
NumNuevo = Numero + 1
If AltaClientes.Codigo.Value = NumNuevo Then
Exit Sub
ElseIf AltaClientes.Codigo.Value <> NumNuevo Then
MsgBox "El numero de codigo que usted asigno es incorrecto" &
Chr(13) & _
"Por favor NO cambie el numero sugerido por el sistema" & Chr(13) & _
"El numero de codigo consecutivo correcto es el: " & NumNuevo &
Chr(13) & _
"El mismo que sera asignado a este movimiento de alta de cliente.",
vbOKOnly + vbCritical, "TICSA - Aviso Importante"
AltaClientes.Codigo.Value = ClearContents
AltaClientes.Codigo.Value = NumNuevo
End If
End Sub

lo que pasa es lo siguiente:

1.- al ejecutar el UserForm, del rango llamado "CONSECUTIVO" toma el numero
mas grande y le agrega 1 para el codigo del nuevo cliente
2.- el TextBox no tiene el enfoque ni orden de tabulacion
3.- en caso de que el usuario quiera cambiar el numero consecutivo la rutina
se lo impide asignado el numero correcto
4.- lo malo es que al hacer pruebas de funcionamiento el mensaje de error
sale aunque capture el dato correcto (99)

mi rango de codigos es del 1 al 98
el nuevo numero es el 99

¿que estoy haciendo mal?

Preguntas similare

Leer las respuestas

#1 AnSanVal
05/07/2006 - 23:06 | Informe spam
1º.- creo que; Numero =
ThisWorkbook.Application.WorksheetFunction.Max(Rango), debería ser; Numero =
ThisWorkbook.Application.WorksheetFunction.Max(Range("Rango").
2º.- ThisWorkbook.Application.WorksheetFunction.Max(Range("Rango") devuelve
"99" (texto) y Numero devuelve 99 (número).

Saludos desde Tenerife (España).
******************************
"vm_tapia" escribió en el mensaje
news:
en un UserForm tengo un TextBox con el nombre "CODIGO" al cual le asigno
la
siguiente rutina:

Private Sub Codigo_AfterUpdate()
Rango = ThisWorkbook.Worksheets("Clientes").Range("Consecutivo")
Numero = ThisWorkbook.Application.WorksheetFunction.Max(Rango)
NumNuevo = Numero + 1
If AltaClientes.Codigo.Value = NumNuevo Then
Exit Sub
ElseIf AltaClientes.Codigo.Value <> NumNuevo Then
MsgBox "El numero de codigo que usted asigno es incorrecto" &
Chr(13) & _
"Por favor NO cambie el numero sugerido por el sistema" & Chr(13) &
_
"El numero de codigo consecutivo correcto es el: " & NumNuevo &
Chr(13) & _
"El mismo que sera asignado a este movimiento de alta de cliente.",
vbOKOnly + vbCritical, "TICSA - Aviso Importante"
AltaClientes.Codigo.Value = ClearContents
AltaClientes.Codigo.Value = NumNuevo
End If
End Sub

lo que pasa es lo siguiente:

1.- al ejecutar el UserForm, del rango llamado "CONSECUTIVO" toma el
numero
mas grande y le agrega 1 para el codigo del nuevo cliente
2.- el TextBox no tiene el enfoque ni orden de tabulacion
3.- en caso de que el usuario quiera cambiar el numero consecutivo la
rutina
se lo impide asignado el numero correcto
4.- lo malo es que al hacer pruebas de funcionamiento el mensaje de error
sale aunque capture el dato correcto (99)

mi rango de codigos es del 1 al 98
el nuevo numero es el 99

¿que estoy haciendo mal?
Respuesta Responder a este mensaje
#2 vm_tapia
05/07/2006 - 23:39 | Informe spam
AnSanVal:

Disculpame pero no entiendo eso de que devuelve texto.
pero ya vi una posible manera de arreglar esto.

Te aviso si lo resuelvo.



"AnSanVal" wrote:

1º.- creo que; Numero =
ThisWorkbook.Application.WorksheetFunction.Max(Rango), debería ser; Numero =
ThisWorkbook.Application.WorksheetFunction.Max(Range("Rango").
2º.- ThisWorkbook.Application.WorksheetFunction.Max(Range("Rango") devuelve
"99" (texto) y Numero devuelve 99 (número).

Saludos desde Tenerife (España).
******************************
"vm_tapia" escribió en el mensaje
news:
> en un UserForm tengo un TextBox con el nombre "CODIGO" al cual le asigno
> la
> siguiente rutina:
>
> Private Sub Codigo_AfterUpdate()
> Rango = ThisWorkbook.Worksheets("Clientes").Range("Consecutivo")
> Numero = ThisWorkbook.Application.WorksheetFunction.Max(Rango)
> NumNuevo = Numero + 1
> If AltaClientes.Codigo.Value = NumNuevo Then
> Exit Sub
> ElseIf AltaClientes.Codigo.Value <> NumNuevo Then
> MsgBox "El numero de codigo que usted asigno es incorrecto" &
> Chr(13) & _
> "Por favor NO cambie el numero sugerido por el sistema" & Chr(13) &
> _
> "El numero de codigo consecutivo correcto es el: " & NumNuevo &
> Chr(13) & _
> "El mismo que sera asignado a este movimiento de alta de cliente.",
> vbOKOnly + vbCritical, "TICSA - Aviso Importante"
> AltaClientes.Codigo.Value = ClearContents
> AltaClientes.Codigo.Value = NumNuevo
> End If
> End Sub
>
> lo que pasa es lo siguiente:
>
> 1.- al ejecutar el UserForm, del rango llamado "CONSECUTIVO" toma el
> numero
> mas grande y le agrega 1 para el codigo del nuevo cliente
> 2.- el TextBox no tiene el enfoque ni orden de tabulacion
> 3.- en caso de que el usuario quiera cambiar el numero consecutivo la
> rutina
> se lo impide asignado el numero correcto
> 4.- lo malo es que al hacer pruebas de funcionamiento el mensaje de error
> sale aunque capture el dato correcto (99)
>
> mi rango de codigos es del 1 al 98
> el nuevo numero es el 99
>
> ¿que estoy haciendo mal?



Respuesta Responder a este mensaje
#3 vm_tapia
05/07/2006 - 23:52 | Informe spam
AnSanVal:

Creo que asi se entiende mas el codigo:
-
Private Sub Codigo_AfterUpdate()
ListaCodigos = ThisWorkbook.Worksheets("Clientes").Range("Consecutivo")
UltimoCodigo =
ThisWorkbook.Application.WorksheetFunction.Max(ListaCodigos)
NuevoCodigo = UltimoCodigo + 1
If AltaClientes.Codigo.Value = NuevoCodigo Then Exit Sub
If AltaClientes.Codigo.Value <> NuevoCodigo Then
MsgBox "El numero de codigo que usted asigno es incorrecto" &
Chr(13) & _
"Por favor NO cambie el numero sugerido por el sistema" & Chr(13) & _
"El numero de codigo consecutivo correcto es el: " & NuevoCodigo &
Chr(13) & _
"El mismo que sera asignado a este movimiento de alta de cliente.", _
vbOKOnly + vbCritical, "TICSA - Aviso Importante"
AltaClientes.Codigo.Value = ClearContents
AltaClientes.Codigo.Value = NuevoCodigo
End If
End Sub
-


"AnSanVal" wrote:

1º.- creo que; Numero =
ThisWorkbook.Application.WorksheetFunction.Max(Rango), debería ser; Numero =
ThisWorkbook.Application.WorksheetFunction.Max(Range("Rango").
2º.- ThisWorkbook.Application.WorksheetFunction.Max(Range("Rango") devuelve
"99" (texto) y Numero devuelve 99 (número).

Saludos desde Tenerife (España).
******************************
"vm_tapia" escribió en el mensaje
news:
> en un UserForm tengo un TextBox con el nombre "CODIGO" al cual le asigno
> la
> siguiente rutina:
>
> Private Sub Codigo_AfterUpdate()
> Rango = ThisWorkbook.Worksheets("Clientes").Range("Consecutivo")
> Numero = ThisWorkbook.Application.WorksheetFunction.Max(Rango)
> NumNuevo = Numero + 1
> If AltaClientes.Codigo.Value = NumNuevo Then
> Exit Sub
> ElseIf AltaClientes.Codigo.Value <> NumNuevo Then
> MsgBox "El numero de codigo que usted asigno es incorrecto" &
> Chr(13) & _
> "Por favor NO cambie el numero sugerido por el sistema" & Chr(13) &
> _
> "El numero de codigo consecutivo correcto es el: " & NumNuevo &
> Chr(13) & _
> "El mismo que sera asignado a este movimiento de alta de cliente.",
> vbOKOnly + vbCritical, "TICSA - Aviso Importante"
> AltaClientes.Codigo.Value = ClearContents
> AltaClientes.Codigo.Value = NumNuevo
> End If
> End Sub
>
> lo que pasa es lo siguiente:
>
> 1.- al ejecutar el UserForm, del rango llamado "CONSECUTIVO" toma el
> numero
> mas grande y le agrega 1 para el codigo del nuevo cliente
> 2.- el TextBox no tiene el enfoque ni orden de tabulacion
> 3.- en caso de que el usuario quiera cambiar el numero consecutivo la
> rutina
> se lo impide asignado el numero correcto
> 4.- lo malo es que al hacer pruebas de funcionamiento el mensaje de error
> sale aunque capture el dato correcto (99)
>
> mi rango de codigos es del 1 al 98
> el nuevo numero es el 99
>
> ¿que estoy haciendo mal?



Respuesta Responder a este mensaje
#4 AnSanVal
07/07/2006 - 01:22 | Informe spam
Para que entiendas lo de texto y lo de número, haz clic en la línea If
AltaClientes.Codigo.Value = NuevoCodigo Then Exit Sub
y pulsa la tecla de función F9 (interrupción). Cuando ejecutes el código se
detendrá en esa línea. Entoces pasa el cursor sobre
AltaClientes.Codigo.Value (sin hacer clic) y verás el valor que tiene (está
entre comillas), haz lo mismo con NuevoCodigo y veras que su valor no está
entre comillas por tanto no son iguales y la condición no se cumple.

Saludos desde Tenerife (España).
*************************************
"vm_tapia" escribió en el mensaje
news:
AnSanVal:

Creo que asi se entiende mas el codigo:
-
Private Sub Codigo_AfterUpdate()
ListaCodigos = ThisWorkbook.Worksheets("Clientes").Range("Consecutivo")
UltimoCodigo > ThisWorkbook.Application.WorksheetFunction.Max(ListaCodigos)
NuevoCodigo = UltimoCodigo + 1
If AltaClientes.Codigo.Value = NuevoCodigo Then Exit Sub
If AltaClientes.Codigo.Value <> NuevoCodigo Then
MsgBox "El numero de codigo que usted asigno es incorrecto" &
Chr(13) & _
"Por favor NO cambie el numero sugerido por el sistema" & Chr(13) &
_
"El numero de codigo consecutivo correcto es el: " & NuevoCodigo &
Chr(13) & _
"El mismo que sera asignado a este movimiento de alta de cliente.",
_
vbOKOnly + vbCritical, "TICSA - Aviso Importante"
AltaClientes.Codigo.Value = ClearContents
AltaClientes.Codigo.Value = NuevoCodigo
End If
End Sub
-


"AnSanVal" wrote:

1º.- creo que; Numero >> ThisWorkbook.Application.WorksheetFunction.Max(Rango), debería ser;
Numero >> ThisWorkbook.Application.WorksheetFunction.Max(Range("Rango").
2º.- ThisWorkbook.Application.WorksheetFunction.Max(Range("Rango")
devuelve
"99" (texto) y Numero devuelve 99 (número).

Saludos desde Tenerife (España).
******************************
"vm_tapia" escribió en el mensaje
news:
> en un UserForm tengo un TextBox con el nombre "CODIGO" al cual le
> asigno
> la
> siguiente rutina:
>
> Private Sub Codigo_AfterUpdate()
> Rango = ThisWorkbook.Worksheets("Clientes").Range("Consecutivo")
> Numero = ThisWorkbook.Application.WorksheetFunction.Max(Rango)
> NumNuevo = Numero + 1
> If AltaClientes.Codigo.Value = NumNuevo Then
> Exit Sub
> ElseIf AltaClientes.Codigo.Value <> NumNuevo Then
> MsgBox "El numero de codigo que usted asigno es incorrecto" &
> Chr(13) & _
> "Por favor NO cambie el numero sugerido por el sistema" &
> Chr(13) &
> _
> "El numero de codigo consecutivo correcto es el: " & NumNuevo &
> Chr(13) & _
> "El mismo que sera asignado a este movimiento de alta de
> cliente.",
> vbOKOnly + vbCritical, "TICSA - Aviso Importante"
> AltaClientes.Codigo.Value = ClearContents
> AltaClientes.Codigo.Value = NumNuevo
> End If
> End Sub
>
> lo que pasa es lo siguiente:
>
> 1.- al ejecutar el UserForm, del rango llamado "CONSECUTIVO" toma el
> numero
> mas grande y le agrega 1 para el codigo del nuevo cliente
> 2.- el TextBox no tiene el enfoque ni orden de tabulacion
> 3.- en caso de que el usuario quiera cambiar el numero consecutivo la
> rutina
> se lo impide asignado el numero correcto
> 4.- lo malo es que al hacer pruebas de funcionamiento el mensaje de
> error
> sale aunque capture el dato correcto (99)
>
> mi rango de codigos es del 1 al 98
> el nuevo numero es el 99
>
> ¿que estoy haciendo mal?



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida