Duplicar UserForm

Resuelto
Mistral_13200 Mensajes publicados 649 Estado Miembro -  
Mistral_13200 Mensajes publicados 649 Estado Miembro -
Hola a todos,
Antes de exponer mi problema, me gustaría presentar mis mejores deseos a toda la comunidad de CCM.
Se me pide que realice una hoja de cálculo para llevar la contabilidad de una asociación. Habrá una hoja por mes, además de una hoja de resumen por categoría y una hoja para el balance anual.
Para cada hoja habrá dos UserForm, uno para los ingresos y otro para los gastos.
Voy a utilizar UserForm bastante complejos en su composición para la entrada de los diferentes elementos. Cada UserForm será llamado con un simple clic en una celda de una columna (ingreso o gasto). He hecho una hoja de cálculo de prueba que pueden descargar con este enlace:
http://www.cjoint.com/c/GAdi13CwEYg
Para no perder demasiado tiempo recreándolos, me gustaría saber si es posible duplicar un UserForm:
- En una misma hoja
- En diferentes hojas
Si es así, ¿cómo se hace?
Gracias de antemano por su ayuda.
Atentamente.
Mistral

3 respuestas

  1. gbinforme Mensajes publicados 14930 Fecha de registro   Estado Colaborador Última intervención   4 744
     
    Hola Mistral_13200 y feliz año para ti,

    Un método bastante simple:
    - en la misma sesión abres un nuevo libro en blanco.
    - seleccionas tu hoja de formulario y la arrastras al nuevo.
    - modificas el nombre para el nuevo formulario
    - seleccionas este formulario de usuario y lo arrastras a tu libro
    Tienes tus 2 formularios en tu libro y dejas de lado el libro en blanco.

    Buen día.

    PD:
    Habrá una hoja por mes,
    Si puedo permitirme, no estoy seguro de que sea la fórmula más adecuada.
    Si pones todas tus escrituras en la misma hoja, será mucho más simple y eficiente hacer una (o varias) tablas dinámicas en la "hoja resumen por categoría y una hoja para el balance anual".
    Siempre zen
    La perfección se alcanza, no cuando no hay nada más que agregar, sino cuando no hay nada más que quitar. Antoine de Saint-Exupéry
    3
  2. Mistral_13200 Mensajes publicados 649 Estado Miembro 4
     
    Hola Gbinform,

    Gracias por tu respuesta.
    He intentado copiar mi hoja y USF en otro libro y funciona.

    He logrado duplicar el USF en el mismo libro, modifiqué las celdas a vigilar y ahora tengo un mensaje de error:
    Nombre ambiguo detectado: Worksheet_SelectionChange

    No entiendo por qué, hay que decir que es la primera vez que uso los USF.

    ¿Puedes aclararme?

    En cuanto a tener solo una hoja, voy a plantear la pregunta al C.A.
    Atentamente
    Mistral
    0
    1. gbinforme Mensajes publicados 14930 Fecha de registro   Estado Colaborador Última intervención   4 744
       
      Re:

      No proviene de los USF, pero has creado 2 procedimientos
      Worksheet_SelectionChange
      y necesitas incluir el código del segundo en el primero.
      Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("G3:G20")) Is Nothing Then Recette.Show ElseIf Not Intersect(Target, Range("F3:F20")) Is Nothing Then Répense.Show End If End Sub 
      0
      1. Mistral_13200 Mensajes publicados 649 Estado Miembro 4 > gbinforme Mensajes publicados 14930 Fecha de registro   Estado Colaborador Última intervención  
         
        Re,

        Funciona perfectamente. Gracias a ti.

        Una pregunta, sin embargo, si quisiera tener más de dos columnas a supervisar, con tantas USF como columnas, ¿puedo escribir lo que está abajo?

        Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If Not Intersect(Target, Range("G3:G20")) Is Nothing Then
        Recette.Show
        ElseIf Not Intersect(Target, Range("F3:F20")) Is Nothing Then
        Dépense.Show
        End If

        If Not Intersect(Target, Range("E3:E20")) Is Nothing Then
        Mode.Show
        ElseIf Not Intersect(Target, Range("D3:D20")) Is Nothing Then
        Ribrique.Show
        End If

        End Sub


        ¿O hay otra manera de hacerlo?

        Es para mi cultura personal...
        Mistral
        0
    2. gbinforme Mensajes publicados 14930 Fecha de registro   Estado Colaborador Última intervención   4 744
       
      Re
      Esto funciona, pero ¿por qué no continuar?
      En lugar de
      End If If Not Intersect(Target, Range("E3:E20")) Is Nothing Then Mode.Show 

      pones:
      ElseIf Not Intersect(Target, Range("E3:E20")) Is Nothing Then Mode.Show 
      0
  3. Mistral_13200 Mensajes publicados 649 Estado Miembro 4
     
    Hola Gbinforme,

    Después de probar mi propuesta, y tras realizar modificaciones, llegué a la tuya que funciona perfectamente.

    Ahora podré avanzar con mi proyecto. Marcaré esta sección como resuelta, pero probablemente volveré a contactar contigo más adelante.

    Gracias nuevamente.

    Atentamente.
    Mistral
    0