Visual Basic - Variables que dan problemas

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Variables que dan problemas

Publicado por Antoñito Manuel (30 intervenciones) el 26/06/2014 19:46:59
Hola a todos:

Tengo un problema que tiene que ver con variables. Resulta que pongo el programa y nada más empiezo a teclear, se para y dice que en una ventana, error '13' en tiempo de ejecución, en la depuración señala solo un dígito, que es un número, el que tecleé, espero que me podáis decir el porqué no funciona.

Gracias por todo.
Saludos.
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
Imágen de perfil de Oscar

Variables que dan problemas

Publicado por Oscar (63 intervenciones) el 26/06/2014 19:53:29
Si no nos pones el código difícilmente podremos ayudarte
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

Variables que dan problemas

Publicado por Antoñito Manuel (30 intervenciones) el 26/06/2014 20:13:22
Hola a todos:

Perdonad, es que no estoy ducho en el foro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Option Explicit
    Dim FechaNatal As String * 10 'Text1
    Dim DIA As Byte
    Dim MES As Byte
    Dim AÑO As Integer
    ' ----------------
    Dim HoraNatal As String * 8 'Text2
    Dim HORA As Byte
    Dim MIN As Byte
    Dim SEG As Byte
    Dim HoraNatalD As Double
    ' ----------------------
    Dim TAV As String * 7 'Text3
    Dim HoraTAV As Byte
    Dim MinTAV As Byte
    Dim TAVD As Single
    ' ----------------
    Dim CiudadNatal As String 'Text4
    ' -----------------------
    Dim LongitudNatal As String * 9 'Text5
    Dim LongGra As Byte
    Dim LongMin As Byte
    Dim LongSeg As Byte
    Dim LongitudNatalD As Double
    ' --------------------------
    Dim LatitudNatal As String * 8 'Text6
    Dim LatGra As Byte
    Dim LatMin As Byte
    Dim LatSeg As Byte
    Dim LatitudNatalD As Double
    ' ----------------
    Dim GMT As Single
    Dim HoraGMT As Byte
    Dim MinGMT As Byte
    Dim SegGMT As Byte
    Dim GMTD As Double
 
 
Private Sub Text1_Change()
    If Text1.Text = "" Then
        MsgBox ("Poner la Fecha Natal en DD/MM/AAAA")
    End If
    FechaNatal = Text1.Text
' ------ FECHA NATAL  -------
    DIA = Left(FechaNatal, 2)
    DIA = Val(DIA)
    MES = Mid(FechaNatal, 4, 2)
    MES = Val(MES)
    AÑO = Right(FechaNatal, 4)
    AÑO = Val(AÑO)
    Label9.Caption = DIA & "/" & MES & "/" & AÑO
End Sub

Supongo que como es en este text.box donde empieza el problema, seguramente solucionando este, los demás que en lo básico es igual, se podrá solucionar los siguientes, en caso de no ser así, pondría los demás.

Gracias por todo.
Saludos.
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
Imágen de perfil de Oscar

Variables que dan problemas

Publicado por Oscar (63 intervenciones) el 26/06/2014 21:36:30
El problema que veo es que usa el MsgBox como una función (usando los paréntesis) y en ese caso te devuelve un valor que no capturas. Si quieres usar el msgbox tan sólo para mostrar la ventanahazlo de esta forma.

Msgbox "Poner la Fecha Natal en DD/MM/AAAA"", VBOkOnly

Otra cosa la variable Año es de tipo Integer pero en la línea:

AÑO = Right(FechaNatal, 4)

le asignas un string por lo que te dará un error de tipos incompatibles

Las variables DIA y MES las creas como Byte e igualmente les asignas un string a cada una MAL

DIA = Left(FechaNatal, 2)
MES = Mid(FechaNatal, 4, 2)


Lo puedes solucionar de esta forma:

AÑO = Cint(Right(FechaNatal, 4))
y omitiendo la linea siguiente AÑO=VAL(AÑO)
etc
etc
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

Variables que dan problemas

Publicado por Antoñito Manuel (30 intervenciones) el 26/06/2014 23:23:28
Hola a todos:

Por lo pronto, no funciona, antes tenía el código en un command.Button y funcionaba, al pasarlo a los text.box pasó lo contrario, explico lo de las cadenas, fechanatal string, a partir de ahí, lo tomo por partes y lo hago numérico, porque así venía en un código de gw-basic, el mes contiene el mid, como no sea que esté mal distribuido.

Cuando lo pongo en marcha al poner el primer número, se para en el mes, señalándolo en amarillo, a pesar de que el día, está antes, no lo entiendo.

Gracias por todo.
Saludos.
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

Variables que dan problemas

Publicado por Roberto F. (11 intervenciones) el 27/06/2014 11:04:12
Hola:
Lo primero, como estas haciendolo en el evento change tienes que tener en cuenta que cada vez que tecleas una letra se ejecutará el evento, así que vas a poner una fecha con cada tecla te visualizará un msgox, lo cual a mi (opinión personal) me puede parecer una chapuza.

Ademas... el en caso de que la fecha sea "" se ejecuta el resto del código, por lo que produce el error.
Deberías haber puesto algo así.

1
2
3
4
If Text1.Text = "" Then
        MsgBox ("Poner la Fecha Natal en DD/MM/AAAA")
        Exit sub 'esta instrucción hace que no se ejecute el resto
    End If

Aunque también en vez de ver si la caja de texto está vacía podria ser mejor comprobar si lo que hay es una fecha...puedes usar IsDate

Y por último, como te decía, en vez de un msgbox cada evento, puedes hacer algo así:

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Text1_Change()
 
    If not isDate(Text1.text) then
	label9.caption="Poner la fecha Natal en DD/MM/AAAA"
    else
' ------ FECHA NATAL  -------
	DIA=day(text1.text)
	MES=month(text1.text)
	ANYO=year(text1.text)
	Label9.Caption = DIA & "/" & MES & "/" & ANYO
    Endif
End Sub
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
Imágen de perfil de Oscar

Variables que dan problemas

Publicado por Oscar (63 intervenciones) el 27/06/2014 11:14:15
Estoy de acuerdo con Roberto
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Variables que dan problemas

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 27/06/2014 21:19:59
Eso por lo visto es VB6.0

Tu primer problema el de las fechas se te podrías solucionar usando además de lo que ya te dijeron, un control MaskedTextbox, con eso le estableces la máscara para que acepte los datos en formato DD/MM/AAAA y asunto solucionado, solo tendrias que verificar
If ISDATE(me.txtmaskedtextbox.text) then
aqui hacer algo
END IF

Y tampoco entiendo porque tanto código para algo tan sencillo:
Que no sería mejor declarar algo así:
Dim MiFecha as date

if isdate(me.txtmaskedtextbox.text) then
MiFecha=CDATE(me.txtMaskedTextbox.text)
ENDIF

Luego quiero el mes?
mMes=month(mifecha)
El dia?
mDia=day(miFecha)
El año?
mAnio=Year(miFEcha)

Y te olvidas de tremendo chorizo solo para una fecha?.
La verdad no entiendo tanto código.

Además ya debería ser tiempo de pasar a .NET no? a menos que solo piensen programar en un mundo de XP bueno entendible.

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

Variables que dan problemas

Publicado por Antoñito Manuel (30 intervenciones) el 27/06/2014 21:29:37
Hola a todos:

Bueno, he probado lo que me ha indicado Roberto, sigue sin dar resultado.

1. Poniendo el Exit Sub, igual.
2. He intentado poner IsDate, pero el visual basic 6, no lo reconoce, solo Date.
3. He probado con Date, pero no deja poner la fecha completa.
A) Poniendo primero el día, con /, depuración y señala un día antes, pero de enero de 1900.
B) Poniendo primero el día con - da opción introducir el mes, pero si son dos digitos y empieza por 0, depuración y señala el año 1899.
C) Poniendo primero el día con - da opción introducir el mes, pero pongo el dígito del mes en un, ejemplo abril el 4, cuando pongo otro -, depuración, la variable da el día y mes, pero con año actual.

Así que no se como hacerlo, espero que tengáis mejor suerte.

Gracias por todo.
Saludos.
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

Variables que dan problemas

Publicado por Antoñito Manuel (30 intervenciones) el 27/06/2014 21:57:51
Hola de nuevo:

Al poner mi comentario, he visto que había otro de Wilfredo, pero no se como poner IsDate, si no lo reconoce, se pregunta el porqué tanto lío, pues porque no soy experto, por tanto os ruego que si decís algo referente a un elemento nuevo, que no aparece en la lista de herramientas, digáis los pasos para ponerlo y las declaraciones para ser reconocido.

Precisamente lo que deseo es solucionar, si se hace formateando, si decís como, seguro que adelantaré, o si decis donde mirarlo, también es de agradecer.

Gracias por todo.
Saludos.
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Variables que dan problemas

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 27/06/2014 22:06:52
Pues por lo visto todo el mundo ya quiere dedicarse a la programación sin antes conocer bien lo que hace y eso trae como consecuencia una baja calidad en lo que se hace.

Bueno aquí tienes los pasos para configurar el control que te dije en el post anterior.

http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-MaskEdBox.htm

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

Variables que dan problemas

Publicado por Antoñito Manuel (30 intervenciones) el 28/06/2014 14:13:50
Hola a todos:

Siento que os encotréis incómodo, no sabía que era sólo para profesionales, los que no somos, vamos dando vandazos aquí y allí, hasta dar con el código correcto a lo deseado, no se trata de que no busque, pero cuando no se sabe que buscar concretamente, es más difícil todavía. Sé que mi código pueda resultar sino engorroso, atrasado, no tengo la suerte de tener un tutor, es ahora, cuando estoy adentrádome en los foros de visual basic, este es uno de los primeros, que me parecía que contestaba mas rápido, pero si es para profesionales, puedo seguir buscando, lo que no voy a hacer es sentirme culpable por querer aprender, por tanto si deseais ayudarme, lo agradeceré, expondré lo que he hecho.

Wilfredo, ese enlace que has puesto es muy bueno, aunque antes de que contestases busqué el control, porque ya tenía algo que mirar, lo encontré e instalé el control, aunque sigo teniendo problemas.

He puesto el código en el Form_Load, también en el Private Sub MaskEdBox1_Validate(Cancel As Boolean), he declarado las variables MiFecha, Day, Month y Year, he creado además controles para hora nacimiento y para TAV y aquí surge algo que no se como resolver.

Pongo en funcionamiento y me deja poner la fecha, la hora natal y la hora de TAV, pero lo que no refleja es que debe ser negativo pues sale positivo, por lo visto no basta poner el signo negativo.

¿Podéis decirme si es que hay que hacer alguna declaración diferente?

Gracias por todo.
Saludos.
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Variables que dan problemas

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 28/06/2014 17:05:39
Si fueras mas explícito en lo que pides, mas compañeros te ayudarían, pero que significa que sea negativo y que no basta con poner el signo negativo.

Que es TAV, recuerda que en este foro ayudamos personas de distintas partes del mundo y por lo tanto no todos entienden que es un TAV o que es exactamente lo que necesitas, porque hasta donde yo sé no existen las horas negativas o si?.

Nunca escuché decir por ejemplo faltan menos 25 minutos para las 11 de la mañana.

Eso deberías aclarar que es lo que pretendes hacer y con eso todos tendremos una idea muy clara de lo que pretendes hacer y no estaríamos tratando de adivinar y te daríamos una respuesta mas exacta.

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

Variables que dan problemas

Publicado por Antoñito Manuel (30 intervenciones) el 29/06/2014 18:02:12
Hola a todos:

Wilfredo, las horas negativas, tienen que ver con restar a otras horas posteriormente o sumar negativamente, estarás constantemente oyendo hay una hora menos en Canarias, o que en Argentina existe una diferencia horaria de 5 horas, el TAV es el tiempo ahorro de verano, que también habrás oido que todos los años adelantamos o retrasamos los relojes, en invierno nos dan la hora que nos han quitado en verano, etc., eso es el TAV.

¿Sabes como poner las horas como negativas?, eso por un lado, luego después está el código, como lo pones no funciona, da error, tuve que ir cambiando el código para que lo aceptase, te lo expongo y me dices en que me equivoco:

if isdate(me.txtmaskedtextbox.text) then
MiFecha=CDATE(me.txtmaskedtextbox.text)
END IF

Por este otro:

If IsDate(Me.MaskEdBox1.Text) Then
MiFecha = CDate(Me.MaskEdBox1.Text)
End If

El código que sigue, tampoco lo reconoce, dentro de Private Sub MaskEdBox1_Change(), tampoco en tex1.text.

mDIA = Day(MiFecha)
mMES = Month(MiFecha)
mAnio = Year(MiFecha)

Label9.Caption = mDIA & "/" & mMES & "/" & mAnio

Gracias por todo.
Saludos.
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
Imágen de perfil de Oscar

Variables que dan problemas

Publicado por Oscar (63 intervenciones) el 29/06/2014 18:26:57
Antoñito Manuel dijo:
....
He puesto el código en el Form_Load, también en el Private Sub MaskEdBox1_Validate(Cancel As Boolean), he declarado las variables MiFecha, Day, Month y Year, he creado además controles para hora nacimiento y para TAV y aquí surge algo que no se como resolver.
...

Si has creado variables llamadas Day, Month y Year ahí puedes tener el problema ya que son nombres reservados de VB para las funciones que extraen el dia, el mes y la fecha de una variable Date.

Por otro lado has de tener muuuuucho cuidado al manejar fechas con VB, Access o cualquier otro software de microsoft ya que puede usar muchos formatos, me explico tu puedes crear una variable para guardar dd-mm-aaaa y que acces te guarde mm-dd-aaaa y entonces cuando tu ves la fecha 01-10-2014 crees que es el uno de octubre del 2014 y para access VB ... ser el diez de enero de 2014.

Puedes Utilizar la función Format() para asegurarte de que el formato es exactamente el que tu quieres usar.

En cuanto a las horas en negativo no se si las quieres reutilizar a posteriori, en caso de que no las vayas a usar y quieras pintarlas en algun control puede hacer la resta y añadirle tu el singo dependiendo de cual sea mayor (incluso cambiarle el color a rojo que es muy tipico.)

Yo cuando quiero utilizar variables de tiempo (hh:mm:ss) lo que hago es almacenarlas siempre como tipo long (guardando los segundos) y cuando quiero pintarlas en algún control lo hago a traves de una función que me la convierte a un string con el formato (+- hh:mm:ss), pero sin modificar la variable para mantener la información siempre en segundo y no tener que estar convirtiendo todo el rato.
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Variables que dan problemas

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 29/06/2014 19:18:36
Eso es muy sencillo:

No debes tener problema, pero el asunto está en que no estás declarando las variables.

Si te fijas yo declaré dim MiFecha as date
También debes declar dim mDia as integer
Dim mMes as integer
dim mAnio as integer

Lo que hice del If IsDate(Me.txtmaskedtextbox.text), es lógico que no te funcione porque asumo que ese txtmasked lo que sea alli va el nombre que tu le des a ese control, y no me digas que no funciona, si funciona solo que alli en vez del nombre de control que yo puse tendrías que poner el nombre que tu le asignes a tu control, no se donde está lo que no funciona.
Como ya dije anteriormente, su uno se mete a esto al menos hay que leer pues sino como pretendes hacer algo?. Solo Preguntando?, no es así:

Otra cosa suficiente con que tu en el load de tu formulario puedes decir:
Metxtmaskedbox.text=date()
Con eso al cargar tu formulario ya ese control estará con la fecha.

Es mas teniendo ya declarada tu variable con el tipo date en el load lo que puedes hacer es asignar la fecha del sistema a la variable MiFecha, luego pasar al control maskedbox el valor de la variable MiFecha.

Eso es muy sencillo:

Otra cosa: No pretendas capturar un valor de fecha en el evento change, ya que el evento change, se dispara cada vez que tu pulsas una letra o un numero en el control por lo tanto si pretendes validar si es fecha y solo has logrado poner digamos el número 1 o 0, entonces verifica 1 es una fecha?, retorna falso y truena, por eso tienes problemas.

Si quieres capturar la fecha para luego validar si es fecha o no tendrías que hacerlo en el evento Keypress del control maskedbox, con eso te da chance para que metas la fecha completa entonces alli teniendo ingresada la fecha completa, recién puedes preguntar If IsDate(me.txtmaskedtbox.text), ya que tiene lleno la fecha completa, pero en el evento change, jamás vas a poder validar, ya que por cada digito que vayas metiendo, el valor va cambiando por eso se llama change y al dispararse y no tener un valor fecha correcto truena.

Al menos dale una leída al evento change de cualquier control, para que veas cuando es que se ejecuta o dispara y con eso tendrás una idea mas clara de donde hacer las cosas.

Saludos cordiales
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Variables que dan problemas

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 29/06/2014 19:22:25
Si lo que quieres es mostrar en un label, la fecha ingresada en el control maskedbox, lo único que tienes que hacer es
Label9.caption=me.txtmaskedbox.text

Asunto arreglado.

Si encuentras alguna inconsistencia en las propiedades de los controles que te estoy dando, es porque ya la sintaxis de VB6.0 hasta se me olvidó, ya que VB6.0 no lo uso hace como 10 años, porque a estas alturas, ya está muy desfasado al menos para mí.

Saludos
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

Variables que dan problemas

Publicado por Antoñito Manuel (30 intervenciones) el 30/06/2014 20:15:31
Hola a todos:

Os expongo lo que me ocurre, resulta que el tema de la fecha ya está solucionado, incluso he pasado al label9 la fecha por separado, pero no consigo progresar con las horas.

1. No consigo declarar MiHora como time, es decir como hora, lo que deja es Timer o Date, pero Date daría la hora junto a la fecha, yo lo quiero por separado, además de poder separar las horas, los minutos y los segundos.

2. Tampoco consigo poner el signo menos a las horas.

Mi pretensión entre otras cosas es convertir las horas a decimales, como por ejemplo, 10 horas, 02 minutos 37 segundos = 10,0436111 horas o grados decimales, o 4 horas 25 minutos = 4,1666667 horas o grados decimales.

Llevo tiempo buscando en el tema, pero no consigo la información, posiblemente como es algo que parece sin importancia, no se preocupan, no deseo pasarlo a segundos, sino poder hacerlo como os digo, ya que es la forma en que los utilizaré.

Gracias por todo.
Saludos.
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

Variables que dan problemas

Publicado por Antoñito Manuel (30 intervenciones) el 07/07/2014 20:10:12
Hola a todos:

Bueno he puesto 3 MaskedBox, uno para la fecha, otro para la hora, otro para el TAV.
En los dos primeros, no hay problema, en el tercero funciona, siempre que no le ponga el signo negativo.
Así mismo he conseguido los mismos resultados con los datos en string y luego pasado a numérico, excepto el TAV, que tampoco consigo ponerlo en negativo, en string, se plasma el signo (-), pero cuando lo paso a numérico, sigue en positivo.

Desearía ver si alguien sabe como hacer el numero negativo.

Por otro lado quiere esto decir, que antes no me dejaba poner nada, ya que al pulsar la primera tecla, se paraba, me alegaban que era por el evento change, por lo que se prueba que no es precisamente ese el motivo, quizás no esté bien entendido el evento.

A lo que vamos, ¿alguien sabe como poner negativo la variable numérica, o las horas?.

Gracias por todo.
Saludos.
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 8
Ha aumentado su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Variables que dan problemas

Publicado por Wilfredo Patricio Castillo (260 intervenciones) el 07/07/2014 22:30:53
Si son interos o decimales, es tan simple como decir algo así:

Dim UnValor as integer

UnValor=5

Eso es positivo lógicamente

Si quieres que sea negativo es tan simple como decir

UnValor=UnValor*-1

Y con eso tendrás
UnValor=-5

No hay misterio eso enseñan desde la escuela primaria.
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

Variables que dan problemas

Publicado por Antoñito Manuel (30 intervenciones) el 08/07/2014 00:03:38
Hola a todos:

Wilfredo gracias por responder, pero me pregunto y te lo transmito si eso hace que pueda ingresar como negativo, porque lo que no enseñan en la escuela primaria es como introducirlo en visual basic, o como lo ingreso para que aunque posteriormente se haga el cálculo para pasarlo a negativo, conste desde la introducción como negativo.

Te pongo el ejemplo, introduzco una hora negativa, -01:00 en formato string, como pasar ese -01 a -1, porque de los minutos no habría problemas, como hago el cálculo.

Puede ser -01:00 o -125º35'27", -13:30, etc.

Gracias por todo.
Saludos.
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
Imágen de perfil de Hector

Variables que dan problemas

Publicado por Hector (18 intervenciones) el 08/07/2014 19:15:54
Bien te voy a dar un jemplo de lo que pides tu te encargaras de introducirlo en tu programa...en tu formulario, colocaras un textbox, si miras el recuadro de las herramintas lo identificaras.llamalo hora

introduces el valor en negativo ej.-01:00 o -13:30
luego extraes el valor del string y lo asignas a una variable numerica


ej.
private sub Calculo()

dim hora,minutos as single
let hora = csng(mid(hora,1,3))
let minutos = csng(mid(hora,5,2))
..
asi los tienes numericos y con el signo que tu quieras, espero que te ayudes
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

Variables que dan problemas

Publicado por Antoñito Manuel (30 intervenciones) el 10/07/2014 19:51:52
Hola a todos:

Hector, gracias por tu aportación, es refrescante, aunque surge no bien del todo, te expondré con el código lo hecho y los resultados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
Option Explicit
 
Dim FechaNatal As String * 10 'Text1
Dim sDIA As String * 2
Dim DIA As Byte
Dim sMES As String * 2
Dim MES As Byte
Dim sAÑO As String * 4
Dim AÑO As Integer
' ----------------
Dim HoraNatal As String * 8 'Text2
Dim sHORA As String * 2
Dim HORA As Byte
Dim sMIN As String * 2
Dim MIN As Byte
Dim sSEG As String * 2
Dim SEG As Byte
Dim HoraNatalD As Double
' ----------------------
Dim TAV As String * 6 'Text3
Dim sHoraTAV As String * 3
Dim HoraTAV As Integer
Dim sMinTAV As String * 2
Dim MinTAV As Byte
Dim TAVD As Single
' ----------------
Dim CiudadNatal As String 'Text4
' -----------------------
Dim LongitudNatal As String * 9 'Text5
Dim LongGra As Byte
Dim LongMin As Byte
Dim LongSeg As Byte
Dim LongitudNatalD As Double
' --------------------------
Dim LatitudNatal As String * 8 'Text6
Dim LatGra As Byte
Dim LatMin As Byte
Dim LatSeg As Byte
Dim LatitudNatalD As Double
' ----------------
Dim GMT As Single
Dim HoraGMT As Byte
Dim MinGMT As Byte
Dim SegGMT As Byte
Dim GMTD As Double
 
Private Sub Form_Load()
    Text1.Text = ""
    Text2.Text = ""
    Text3.Text = ""
    Text4.Text = ""
    Text5.Text = ""
    Text6.Text = ""
 
End Sub
 
Private Sub Text1_Change()
If Text1.Text = "" Then
MsgBox ("Poner la Fecha Natal en DD/MM/AAAA")
End If
FechaNatal = Text1.Text
' ------ FECHA NATAL -------
sDIA = Left(FechaNatal, 2)
DIA = Val(sDIA)
sMES = Mid(FechaNatal, 4, 2)
MES = Val(sMES)
sAÑO = Right(FechaNatal, 4)
AÑO = Val(sAÑO)
Label7.Caption = DIA & "/" & MES & "/" & AÑO
End Sub
 
Private Sub Text2_Change()
 
    HoraNatal = Text2.Text
' --------- HORA NATAL ----------
    sHORA = Left(HoraNatal, 2)
    HORA = Val(sHORA)
    sMIN = Mid(HoraNatal, 4, 2)
    MIN = Val(sMIN)
    sSEG = Right(HoraNatal, 2)
    SEG = Val(sSEG)
 
    If HORA >= 24 Then
        MsgBox ("Pon la Hora Natal de 0 a 23 Horas")
    End If
 
    Label8.Caption = HORA
    Label9.Caption = MIN
    Label10.Caption = SEG
    HoraNatalD = ((((SEG / 60) + MIN) / 60) + HORA) 'HoraNatal en Decimal
    'La Fórmula es correcta y los resultados
 
    Label11.Caption = HoraNatalD
 
End Sub
 
Private Sub Text3_Change()
 
    If Text3.Text = "" Then
        MsgBox ("Pon las Horas de TAV en +- HH:MM")
    End If
    TAV = Text3.Text
' ---------- TAV ----------
    sHoraTAV = (Left(TAV, 3))
    HoraTAV = Val(sHoraTAV)
    sMinTAV = (Right(TAV, 2))
    MinTAV = Val(sMinTAV)
    Let HoraTAV = CSng(HoraTAV)
    'Let MinTAV = CSng(MinTAV)
    'Da igual que incluya el cambio de minutos o no.
    'Si es positivo, es correcto.
    'Si es positivo, es correcto incluso con minutos.
    'Si es negativo y no tiene minutos, correcto.
    'si es negativo, resta los minutos que le ponga en proporciones.
 
    Label12.Caption = sHoraTAV
    Label13.Caption = sMinTAV
 
    TAVD = (MinTAV / 60) + HoraTAV
    Label14.Caption = HoraTAV
    Label15.Caption = TAVD
    'La Fórmula es correcta y los resultados
 
End Sub

¿Sabes porqué pasa?

Gracias por todo.
Saludos.
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