Saltar al contenido

Copiar y pegar orden de tabulacion


Recommended Posts

publicado

He creado una hoja excel con 20 formularios identicos ( Necesito que sea así). En cada formulario hay unos 15 combobox y otros 15 textbox, así como 30 "label" y por ultimo el correspondiente botón "Introducir".

He cogido el primer formulario y he ordenado el orden de tabulación subiendo o bajando los combobox ,textbox, y boton dejando abajo todos los"label" en el correspondiente cuadro "orden de tabulación del primer formulario. Ahora he de ordenar la tabulación a los otros 19 formularios que repito son identicos a este primero.

¿No existe ningún truco o atajo para ordenar los otros 19 formularios a imagen y semejanza del que ya he ordenado?. Sería devino seleccionar el primer cuadro "Orden de tabulacion" previamente ordenado, copiarlo y pegarlo en los otros 19 cuadros "Orden de tabulacion" de sus correspondientes 19 formularios restantes pero eso no es posible y me ahorraría mucho tiempo.

Saludos

publicado

Partiendo de la base que tu formulario con el orden de tabulación se llama Userform1 y que todos los formularios tienen los mismos controles, coloca:

En Thisworkbook:


Private Sub Workbook_Open()
ObtenerTabulación
End Sub[/CODE]

[b][u]En un Módulo:[/u][/b]

[CODE]Public Nombres() As Variant
Public Índices() As Integer

Sub ObtenerTabulación()
Dim Fila As Integer

On Error Resume Next
Load UserForm1
With UserForm1
ReDim Nombres(.Controls.Count)
ReDim Índices(.Controls.Count)
For Each Control In .Controls
Nombres(Fila) = Control.Name
Índices(Fila) = Control.TabIndex
Fila = Fila + 1
Next
End With
Unload UserForm1
End Sub[/CODE]

[b][u]En el resto de formularios donde hay que copiar el orden de tabulación:[/u][/b]

[CODE]
Private Sub UserForm_Initialize(): On Error Resume Next
For x = 0 To UBound(Nombres): Controls(Nombres(x)).TabIndex = Índices(x): Next
'....
'....
'.... RESTO DE CÓDIGO DE ESTE EVENTO
'....
'....
End Sub[/CODE]

El orden de tabulación se resuelve al abrir el archivo, si se modifica algún índice de tabulación, habrá que salvar los cambios y volver a abrir el archivo.

_

publicado

Vale, ya he colocado el código en Thisworkbook, he abierto un modulo y he introducido su correspondiente codigo y he introducido el codigo en el del formulario que quería probar. (Formulario05)

Al picar al botón Formulario05 sale el siguiente cuadro: error de compilación, no se encuentra biblioteca o proyecto.

Private Sub UserForm_Initialize(): On Error Resume Next

For x = 0 To UBound(Nombres): Controls(Nombres(x)).TabIndex = Índices(x): Next

End Sub

¿que me estoy dejando?

publicado

Necesito un archivo, con al menos 2 formularios, el FORMULARIO05 y otro donde debamos copiar las tabulaciones.

No hacen falta datos, solo con los formularios es suficiente.

Las macros deben estar tal como se te ha producido el error.

publicado

Muy buenas, disculpa la tardanza, he tenido un pequeño accidente dias atras.

Bueno te envio el código del formulario05 que es uno de los que esta el orden de tabulacion desordenado, en él verás que le he implantado tu código. despues te mando el código del formulario02, el cual ya está ordenado. actualmente no dan errores, simplemente no funciona.

El módulo donde copie el codigo es el modulo3 y tambien copie el del Thisworkbook.

Por cierto,el formulario con el orden de tabulación se llama "formulario" Y no Userform1 y efectivamente todos los formularios tienen los mismos controles, por lo tanto quedan así los archivos:

En Thisworkbook:

Private Sub Workbook_Open()

ObtenerTabulación

End Sub

En el módulo 3:

Public Nombres() As Variant

Public Índices() As Integer

Sub ObtenerTabulación()

Dim Fila As Integer

On Error Resume Next

Load Formulario

With Formulario

ReDim Nombres(.Controls.Count)

ReDim Índices(.Controls.Count)

For Each Control In .Controls

Nombres(Fila) = Control.Name

Índices(Fila) = Control.TabIndex

Fila = Fila + 1

Next

End With

Unload Formulario

End Sub

el codigo de los dos formularios no me permite enviarlo al completo pues tiene muchos mas caracteres que los que admite este correo, solo pongo las primeras lineas de ellos.

En el formulario ( El primero de los 11 que ya está ordenada la tabulación):

Private Sub ComboBox6_Enter()

Dim i As Integer

Dim j As Integer

Dim H As Integer

Dim fin As Integer

Dim tareas As String

ComboBox6.BackColor = &H80FF&

(Seguiria el código)......

.......................................

.......................................

.......................................

End Sub

En el formulario05 que esta desordenado (previamente le he introducido tu códio):

Private Sub formulario_Initialize(): On Error Resume Next

For x = 0 To UBound(Nombres): Controls(Nombres(x)).TabIndex = Índices(x): Next

End Sub

Private Sub ComboBox6_Enter()

Dim i As Integer

Dim j As Integer

Dim H As Integer

Dim fin As Integer

Dim tareas As String

ComboBox6.BackColor = &HFF0000

End Sub

Gracias por tu ayuda.

publicado
Necesito un archivo, con al menos 2 formularios, el FORMULARIO05 y otro donde debamos copiar las tabulaciones.

No hacen falta datos, solo con los formularios es suficiente.

Las macros deben estar tal como se te ha producido el error.

Insisto, necesito el archivo en que se te produce el error.

publicado

Vamos a ver si baja el archivo. Explico: Si te pide alguna clave de desbloqueo es 272727.

Verás que he introducido un modulo 3 con el codigo, asi como el codigo en Thisworkbook.

Sólo dejo dos botones, 1º "Formulario" este ya esta ordenada la tabulacion, y el boton 2º "Formulario02"

Recuerda que si no los abres en modo diseño, te daran errores pues he eliminado hojas de las que dependen estos formularios.

Saludos

CALCULARTMR MARZO PARA ENVIAR.rar

publicado

___________________________________________________________________________

Antes de seguir con tu idea, permíteme que te presente la mía.

Se trata de usar un único formulario con lo que tu problema desaparece.

En el adjunto he añadido una hoja nueva con el nombre de "PARÁMETROS", en ella encontrarás la relación entre cada control, su celda correspondiente y a que ENMARCACIÓN corresponde.

Puedes poner tantas ENMARCACIONES como quieras sin tener que tocar el formulario.

Fíjate también en la forma de llenar los combos, solo hay que hacerlo una vez al iniciar el formulario.

Para otra vez que necesites borrar un combo/lista utiliza el método .Clear en lugar de eliminar los elementos uno a uno.

Ya me contarás que tal te parece.

He eliminado todo, a excepción del formulario, para subir el archivo al foro.

_____________________________________________________________________________

CALCULAR TMR MARZO PARA ENVIAR MA.xls

publicado

Bueno, en primer lugar agradecerte el esfuerzo e interés. La lógica dice que solo debería haber como bien dices un formulario para todas las enmarcaciones, En mi caso eso conlleva a un problema y por eso renuncie al formulario único.

Pongamos por ejemplo, tu, vienes a mi tienda con tres cuadros para ponerles marcos, escoges un marco para el primero

así como el tipo de cristal, cartón, complemento etc, picas al botón de introducir datos y los datos van situándose en las hojas correspondientes para así calcularse el precio de esa enmarcacion, después picariamos a 2º enmarcación para elegir otras molduras para el segundo cuadro, el primer problema es que el "Formulario" debería estar limpio de los datos anteriores. Bueno, ya hemos calculado el segundo cuadro, ahora vamos a por el tercero. abrimos el formulario y picamos a tercera enmarcacion, y escogemos otro marco, otro cartón y otro tipo de cristal.

Ya tenemos las tres enmarcaciones diferentes. Ahora viene el otro problema: resulta que has visto otra moldura que te gusta masque la que escogiste en la primera enmarcación, entonces, debo picar a formulario, primera enmarcacion, y aqui viene el problema, los datos de los marcos cristal , complementos etc que habías escogido para el primer marco, ya no estan en el formulario, con lo que debes introducir de nuevo todo ello, con el sistema de tantos formularios como enmarcaciones, eso no pasa.

El sistema de formulario único ha de cumplir lo siguiente: cuando picas a 1º enmarcacion e introduces datos, al pasar a la segunda enmarcación, el formulario debe de estar ya limpio de datos de la primera enmarcacion, y así sucesivamente. pero si quieres volver a una enmarcacion anterior en la que ya introdujiste datos, cuando picas esa enmarcacion anterior, los datos de ella deberían volver al formulario único para así solo cambiar aquel valor que te interese sin tener que volver a empezar a introducir todos los datos.

Si eso se puede cumplir, entonces si que es interesante el formulario único.

Créeme, he creado un programa de calculo creo que bastante sofisticado, y contra toda lógica, pues estos programas se hacen con acces, me gustaría que lo vieras con todas sus hojas y funcionamiento, pero por el foro es inviable, como mucho con el compresor quedaría en unas 2500 megas.

Espero noticias.

publicado

Amigo @[uSER=44587]jose ramon serrano[/uSER], puedes subir el archivo a cualquier servidor de archivos (dropbox, drive, box, etc) y compartes el enlace aquí, así no tendras problemas con el tamaño del archivo.

y respecto a los "inconvenientes" del formularion único, pues NO es problema solucionar eso, de seguro que el maestro @[uSER=46507]Macro Antonio[/uSER] te dará una solución efectiva, suerte

publicado

Hola Macro Antonio, he estado probando y probando el formulario único, sigo sin ver la ventaja desde el punto de vista que esta mas cargado de botones, mis formularios son más simples para hacer lo mismo, abres rellenas datos y aceptas, puedes abrir otra vez y los datos quedan aya a no ser que cierres en la x que entonces se borran. en sí, yo no tengo ningún botón de borrado, este se ejecuta automáticamente cuando le doy al único botón que procesa todos los formularios, pero no por ello dudo que pueda conseguir lo mismo con el formulario único por eso voy a intentar si el amigo @[uSER=133908]bigpetroman[/uSER] me ayuda a recolocarlo (Pues no dudo que interiormente funcione mejor) y que haga la función idéntica que cada uno de mis formularios. Como te dije, mi libro es algo más complejo, por lo que para hacerte una idea de como funciona, hay que tenerlo al completo incluso con unas pequeñas instrucciones de como instalarlo y su funcionamiento y él se ha ofrecido a echarme una mano. Lo tengo acabado en un 99 % faltan unos pequeños reajustes que no dudo en que sean fáciles de solucionar.

Bueno pues ya ves, yo sólo quería saber algún truco para poder copiar y pegar los ordenes de tabulación en todos los formularios. Yo los tenía todos ordenados pero he cambiado la estructura del primer formulario, y me han cambiado la tabulacion, con lo que cuando cambie el aspecto de los otros formularios, tendría que reordenarlos todos de nuevo.

Un cordial saludo, ya iré explicando el progreso.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.