Consulta sobre formularios
Hola nuevamente Darkwizard88, nuevamente te molesto con una nueva consulta, ahora tiene que ver con el tema de los formularios que uno puede crear y las consultas que tengo son las siguiente:
¿Cómo puedo dejar fijos los formularios en la pantalla?, de modo que el usuario no pueda cerrarlos haciendo clic en la X a no ser que utilice el botón cerrar que esta puesto en el formulario.
¿Cuál es el evento que debo utilizar para que al pasar el mouse sobre un icono o botón este se ejecute de acuerdo al código ingresado?
Desde ya te agradezco por tu ayuda
¿Cómo puedo dejar fijos los formularios en la pantalla?, de modo que el usuario no pueda cerrarlos haciendo clic en la X a no ser que utilice el botón cerrar que esta puesto en el formulario.
¿Cuál es el evento que debo utilizar para que al pasar el mouse sobre un icono o botón este se ejecute de acuerdo al código ingresado?
Desde ya te agradezco por tu ayuda
1 Respuesta
Respuesta de Fran Riveiro
1
1
Fran Riveiro, Tecnico superior en administrador de sistemas informáticos
Sobre la primera duda, deshabilita el botón POR y solucionado, eso creo que salia en las propiedades, ahora mismo no te puedo decir cual es ya que no tengo acceso a el office para mirarlo y de memoria obviamente no me lo se je je.
Sobre tu segunda duda, te pediría que la explicaras con más detalle, que es lo que tienes y que es lo que quieres que haga, ten en cuenta que yo no estoy viendo el formulario ni nada, con lo cual todo detalle que me puedas dar es necesario para poder solucionar tu duda, ya que sino se que es lo que estas haciendo, como lo estas haciendo y con que fin no puedo situarme para solucionar tu duda.
Sobre tu segunda duda, te pediría que la explicaras con más detalle, que es lo que tienes y que es lo que quieres que haga, ten en cuenta que yo no estoy viendo el formulario ni nada, con lo cual todo detalle que me puedas dar es necesario para poder solucionar tu duda, ya que sino se que es lo que estas haciendo, como lo estas haciendo y con que fin no puedo situarme para solucionar tu duda.
Estimado Darkwizard88 el formulario que yo tengo es el siguiente:
http://c/:\Documents ahi trate de enviarte el formulario que tengo creado, si esta bien enviado podras ver que hay una puerta que dice entrar la idea es que al pasar el mouse por la puerta automaticamente se llame a otro formulario donde se debe ingresar los datos solicitados.
En lo que se refiere a la primera pregunta yo busque en las propiedades pero no logre encontrar la propiedad que desactive la X. Así que si es posible enviame cual es la propiedad que corresponda o el código que pueda solucionar esto.
http://c/:\Documents ahi trate de enviarte el formulario que tengo creado, si esta bien enviado podras ver que hay una puerta que dice entrar la idea es que al pasar el mouse por la puerta automaticamente se llame a otro formulario donde se debe ingresar los datos solicitados.
En lo que se refiere a la primera pregunta yo busque en las propiedades pero no logre encontrar la propiedad que desactive la X. Así que si es posible enviame cual es la propiedad que corresponda o el código que pueda solucionar esto.
El formulario no se ve.
Sobre el botón POR tienes que añadir este código en la ventana de código de tu formulario:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode <> 1 Then
Cancel = 1
Else
Cancel = 0
End If
End Sub
Este código lo saque de otro lado, así que imagino que funcionará, volviendo al form en si.
Por lo que entiendo lo que tienes es un formulario que solo tiene una puerta que pone entrar en un botón y que cuando se pase el ratón por encima se llame a un segundo formulario, pues bien lo que tienes que hacer es poner la llamada del segundo formulario dentro de un mousemove:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'AQUI LA LLAMADA AL OTRO FORMULARIO
End Sub
Y así cuando pases el ratón por encima llamara al segundo formulario.
Bueno, como siempre, aquí me tienes y cualquier duda mal aclarada u otra nueva que te surja no dudes en preguntarme.
Sobre el botón POR tienes que añadir este código en la ventana de código de tu formulario:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode <> 1 Then
Cancel = 1
Else
Cancel = 0
End If
End Sub
Este código lo saque de otro lado, así que imagino que funcionará, volviendo al form en si.
Por lo que entiendo lo que tienes es un formulario que solo tiene una puerta que pone entrar en un botón y que cuando se pase el ratón por encima se llame a un segundo formulario, pues bien lo que tienes que hacer es poner la llamada del segundo formulario dentro de un mousemove:
Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'AQUI LA LLAMADA AL OTRO FORMULARIO
End Sub
Y así cuando pases el ratón por encima llamara al segundo formulario.
Bueno, como siempre, aquí me tienes y cualquier duda mal aclarada u otra nueva que te surja no dudes en preguntarme.
Hola darkwizard88 aquí me tienes de nuevo, la respuesta que me enviaste en cuanto al botón X me funciono bastante bien, e cuanto a la otra respuesta también funciona pero me gustaría saber como puedo hacer que al momento de llamar al otro formulario este se cierre aotomaticamente y así no tener que estar ocupando memoria sin necesidad en el equipo donde se este utilizando la aplicación.
Por otro lado quiero que me ayudes en relación a la pregunta que te realice antes con respecto a como poder seleccionar una hoja por medio de una macro, resulta que yo probé el código en un libro en blanco y cree una pequeña aplicación y me funciono, pero al tratar de ingresar el código a la aplicación que estoy trabajando ahora no me resulta, para lo cual te envío el la rutina en donde yo debería insertar el código que tu me enviaste anteriormente y no me funciona:
1) Tengo creado un formulario que tiene 1 frame con 3 optionboton (hoja1, hoja2 y hoja3) y otro frame con 3 optionboton donde representan los niveles(básica, media, tp) y 2 commadboton (Insertar y Cancelar). En el botón insertar yo ingreso el siguiente código:
Private Sub CommandButton1_Click()
intRespuesta = MsgBox("Es la primera vez que ingresa datos en el semestre", vbYesNo + vbQuestion, "MsgBox como función")
If intRespuesta = vbYes Then
Hoja1.Range("a9:k25") = Clear
Hoja1.Cells(5, 4) = ListBox1.List(ListBox1.ListIndex)
Hoja1.Cells(30, 2) = TextBox1
alumnos = TextBox2
If Hoja1.Cells(5, 4) = "1º Básico A" Or Hoja1.Cells(5, 4) = "1º Básico B" Then
cur = "1º básico"
ElseIf Hoja1.Cells(5, 4) = "2º Básico A" Or Hoja1.Cells(5, 4) = "2º Básico B" Then
cur = "2º básico"
ElseIf Hoja1.Cells(5, 4) = "3º Básico A" Or Hoja1.Cells(5, 4) = "3º Básico B" Then
cur = "3º básico"
ElseIf Hoja1.Cells(5, 4) = "4º Básico A" Then
cur = "4º básico"
ElseIf Hoja1.Cells(5, 4) = "5º Básico A" Or Hoja1.Cells(5, 4) = "5º Básico B" Then
cur = "5º básico"
ElseIf Hoja1.Cells(5, 4) = "6º Básico A" Or Hoja1.Cells(5, 4) = "6º Básico B" Then
cur = "6º básico"
ElseIf Hoja1.Cells(5, 4) = "7º Básico A" Then
cur = "7º básico"
ElseIf Hoja1.Cells(5, 4) = "8º Básico A" Or Hoja1.Cells(5, 4) = "8º Básico B" Then
cur = "8º básico"
ElseIf Hoja1.Cells(5, 4) = "1º Medio A" Or Hoja1.Cells(5, 4) = "1º Medio B" Then
cur = "1ºMedio"
ElseIf Hoja1.Cells(5, 4) = "2º Medio A" Or Hoja1.Cells(5, 4) = "2º Medio B" Then
cur = "2ºMedio"
ElseIf Hoja1.Cells(5, 4) = "3º Medio A" Then
cur = "3º TP"
ElseIf Hoja1.Cells(5, 4) = "3º Medio B" Then
cur = "3ºMedio"
ElseIf Hoja1.Cells(5, 4) = "4º Medio A" Then
cur = "4º TP"
ElseIf Hoja1.Cells(5, 4) = "4º Medio B" Then
cur = "4ºMedio"
End If
ActiveSheet.Cells(9, 1).Activate
If cur = "1º básico" Then
Sheets("Subsectores").Select
Range("a2:a16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "2º básico" Then
Sheets("Subsectores").Select
Range("b2:b16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "3º básico" Then
Sheets("Subsectores").Select
Range("c2:c16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "4º básico" Then
Sheets("Subsectores").Select
Range("d2:d16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "5º básico" Then
Sheets("Subsectores").Select
Range("e2:e16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "6º básico" Then
Sheets("Subsectores").Select
Range("f2:f16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "7º básico" Then
Sheets("Subsectores").Select
Range("g2:g16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "8º básico" Then
Sheets("Subsectores").Select
Range("h2:h16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "1ºMedio" Then
Sheets("Subsectores").Select
Range("i2:i16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "2ºMedio" Then
Sheets("Subsectores").Select
Range("j2:j16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "3ºMedio" Then
Sheets("Subsectores").Select
Range("k2:k16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "3º TP" Then
Sheets("Subsectores").Select
Range("l2:l16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "4ºMedio" Then
Sheets("Subsectores").Select
Range("m2:m16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "4º TP" Then
Sheets("Subsectores").Select
Range("n2:n16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
End If
If alumnos > 1 Then
Sheets("1 semestre").Select
Range("a1:l31").Select
Selection.Copy
fila = 34
For i = 1 To alumnos - 1
ActiveSheet.Cells(fila, 1).Activate
ActiveSheet.Paste
fila = fila + 34
Next i
End If
Range("a6").Select
End
Else
End
End If
End Sub
Al tratar de combinar el código que me enviaste anteriormente dentro de este código no me funciona y me tira un error, si tu puedes ver la forma de solucionar esto te lo agradezco desde ya.
Por otro lado quiero que me ayudes en relación a la pregunta que te realice antes con respecto a como poder seleccionar una hoja por medio de una macro, resulta que yo probé el código en un libro en blanco y cree una pequeña aplicación y me funciono, pero al tratar de ingresar el código a la aplicación que estoy trabajando ahora no me resulta, para lo cual te envío el la rutina en donde yo debería insertar el código que tu me enviaste anteriormente y no me funciona:
1) Tengo creado un formulario que tiene 1 frame con 3 optionboton (hoja1, hoja2 y hoja3) y otro frame con 3 optionboton donde representan los niveles(básica, media, tp) y 2 commadboton (Insertar y Cancelar). En el botón insertar yo ingreso el siguiente código:
Private Sub CommandButton1_Click()
intRespuesta = MsgBox("Es la primera vez que ingresa datos en el semestre", vbYesNo + vbQuestion, "MsgBox como función")
If intRespuesta = vbYes Then
Hoja1.Range("a9:k25") = Clear
Hoja1.Cells(5, 4) = ListBox1.List(ListBox1.ListIndex)
Hoja1.Cells(30, 2) = TextBox1
alumnos = TextBox2
If Hoja1.Cells(5, 4) = "1º Básico A" Or Hoja1.Cells(5, 4) = "1º Básico B" Then
cur = "1º básico"
ElseIf Hoja1.Cells(5, 4) = "2º Básico A" Or Hoja1.Cells(5, 4) = "2º Básico B" Then
cur = "2º básico"
ElseIf Hoja1.Cells(5, 4) = "3º Básico A" Or Hoja1.Cells(5, 4) = "3º Básico B" Then
cur = "3º básico"
ElseIf Hoja1.Cells(5, 4) = "4º Básico A" Then
cur = "4º básico"
ElseIf Hoja1.Cells(5, 4) = "5º Básico A" Or Hoja1.Cells(5, 4) = "5º Básico B" Then
cur = "5º básico"
ElseIf Hoja1.Cells(5, 4) = "6º Básico A" Or Hoja1.Cells(5, 4) = "6º Básico B" Then
cur = "6º básico"
ElseIf Hoja1.Cells(5, 4) = "7º Básico A" Then
cur = "7º básico"
ElseIf Hoja1.Cells(5, 4) = "8º Básico A" Or Hoja1.Cells(5, 4) = "8º Básico B" Then
cur = "8º básico"
ElseIf Hoja1.Cells(5, 4) = "1º Medio A" Or Hoja1.Cells(5, 4) = "1º Medio B" Then
cur = "1ºMedio"
ElseIf Hoja1.Cells(5, 4) = "2º Medio A" Or Hoja1.Cells(5, 4) = "2º Medio B" Then
cur = "2ºMedio"
ElseIf Hoja1.Cells(5, 4) = "3º Medio A" Then
cur = "3º TP"
ElseIf Hoja1.Cells(5, 4) = "3º Medio B" Then
cur = "3ºMedio"
ElseIf Hoja1.Cells(5, 4) = "4º Medio A" Then
cur = "4º TP"
ElseIf Hoja1.Cells(5, 4) = "4º Medio B" Then
cur = "4ºMedio"
End If
ActiveSheet.Cells(9, 1).Activate
If cur = "1º básico" Then
Sheets("Subsectores").Select
Range("a2:a16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "2º básico" Then
Sheets("Subsectores").Select
Range("b2:b16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "3º básico" Then
Sheets("Subsectores").Select
Range("c2:c16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "4º básico" Then
Sheets("Subsectores").Select
Range("d2:d16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "5º básico" Then
Sheets("Subsectores").Select
Range("e2:e16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "6º básico" Then
Sheets("Subsectores").Select
Range("f2:f16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "7º básico" Then
Sheets("Subsectores").Select
Range("g2:g16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "8º básico" Then
Sheets("Subsectores").Select
Range("h2:h16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "1ºMedio" Then
Sheets("Subsectores").Select
Range("i2:i16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "2ºMedio" Then
Sheets("Subsectores").Select
Range("j2:j16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "3ºMedio" Then
Sheets("Subsectores").Select
Range("k2:k16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "3º TP" Then
Sheets("Subsectores").Select
Range("l2:l16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "4ºMedio" Then
Sheets("Subsectores").Select
Range("m2:m16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
ElseIf cur = "4º TP" Then
Sheets("Subsectores").Select
Range("n2:n16").Select
Selection.Copy
Sheets("1 semestre").Select
ActiveSheet.Paste
End If
If alumnos > 1 Then
Sheets("1 semestre").Select
Range("a1:l31").Select
Selection.Copy
fila = 34
For i = 1 To alumnos - 1
ActiveSheet.Cells(fila, 1).Activate
ActiveSheet.Paste
fila = fila + 34
Next i
End If
Range("a6").Select
End
Else
End
End If
End Sub
Al tratar de combinar el código que me enviaste anteriormente dentro de este código no me funciona y me tira un error, si tu puedes ver la forma de solucionar esto te lo agradezco desde ya.
Buff mañana lo miro con más calma, pero no se yo si tanto if esta muy bien eh... ahora no te puedo decir donde esta el error porque la falta de sueño y tanto if me mareo, mañana según tenga un hueco en el curro te lo miro y te comento.
En serio si me mandas el fichero y lo miro desde el fichero te lo agradecería infinito, el código se puede mejorar en ciertos aspectos, si puedes enviarme el fichero te dejo un mail:
franciscoriveiro@ iceacsa. Es (acuérdate de que hay un espacio ahí en medio)
me envías el fichero, me dices donde falla y yo te lo miro, intento ahorrar un poco de código ahí y ya te explico en donde fallaba y por qué fallaba.
franciscoriveiro@ iceacsa. Es (acuérdate de que hay un espacio ahí en medio)
me envías el fichero, me dices donde falla y yo te lo miro, intento ahorrar un poco de código ahí y ya te explico en donde fallaba y por qué fallaba.
No he podido enviar el fichero solicitado ya que la dirección de correo que me enviaste me marca error, diciendo que <span>no tienen el formato de correo electrónico correcto, por lo tanto te agradecería que me enviaras una nueva dirección o me envíes un correo a esta dirección: [email protected] o [email protected] y de esta manera yo te puedo enviar el fichero.
</span>
</span>
- Compartir respuesta
- Anónimo
ahora mismo