Duplicar UserForm

Resuelto
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. Colaborador
    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
    1. 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. Colaborador
        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
      2. @gbinformeRe,

        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
      3. Colaborador
        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
    2. 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