Saltar al contenido

formulario userform con combobox


Recommended Posts

publicado

Buenas.

Primero de todo he de decir que soy un principiante en VB, y es la primera vez que entro en un foro, así que pido disculpas por cualquier equivocación que pueda cometer de antemano.

Segundo felicito a todo el mundo que participa en ayudaexcel por la gran ayuda que prestan en general, se esté dado de alta o no.

Entro en la consulta. He realizado un formulario con Excel 2003 con ventanas de validación que registran los resultados en una hoja llamada “Basededades” y mediante un buscador las devuelve pudiéndose modificar y se pueden volver a grabar en la misma hoja.

El problema está en que lo he probado hacer con “userforms” y “Comboboxs”, y no consigo realizar tres acciones especificas.

1. He creado un userform1 principal de donde se llama a los siguientes userforms, en este primer userbox se entran datos en los combobox mediante “rowsource” , i despues de llenar los datos del userform1 estos se copian al userform 2 que tiene los mismos combobox que el userform1 más otros específicos del userfom2 (esto lo hago para diferenciar los datos complementarios respecto a un userform3). este es mi principal problema que no puedo copiar de la userform 1 el combobox1 (que lo he renombrado a “C7”) al userfom2 al combobox1 (también renombrado C7).

Adjunto como lo consegui en el formulario sin los userforms.

Sub buscacomandavialitatentotfulls()

Dim buscar

buscar = Range("C7")

If buscar = "" Then Exit Sub

For Each hoja In Sheets

If hoja.Name <> "Registrecomandes" Then

With hoja.Range("A2:AA65500")

Set esta = .Find(buscar)

If Not esta Is Nothing Then

PrimeraCelda = esta.Address

Sheets("Basededades").Visible = True

hoja.Activate

esta.Select

MsgBox "Comanda existent!"

Sheets("Basededades").Visible = False

Sheets("Registrecomandes").Select

Range("C7").Select

Exit Sub

End If

End With

End If

Next hoja

copiaavialitat

End Sub

Application.ScreenUpdating = False

Sheets("Registrecomandes").Select

Range("C7").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Vialitat hivernal").Visible = True

Sheets("Vialitat hivernal").Select

Range("C7").Select

ActiveSheet.Paste

ActiveCell.FormulaR1C1 = ""

Range("C7").Select

Sheets("Vialitat hivernal").Select

Range("C15").Select

Application.ScreenUpdating = True

End Sub

2. También he conseguido copiar los datos de los userform/combobox a la hoja “Basededades”, ordenados en filas, pero no logro que los datos de la hoja de carguen otra vez en los combobox del userform , me interesa que mantenga el rowsourde para volver a permitir la seleción posterior de selección.

He probado con:

Private Sub UserForm_Activate()

'ocultamos el procedimiento

Application.ScreenUpdating = False

Sheets("Basededades").Visible = True

Sheets("Basededades").Select

ActiveSheet.Unprotect

C7.AddItem Worksheets("Basededades").Range("a1")

'mostramos el procedimiento

Application.ScreenUpdating = True

End Sub

Pero no lo consigo.

Adjunto como lo consegui en el formulario sin los userforms.

Dim n As Range

palabra_a_buscar = Range("C7")

If palabra_a_buscar = "" Then Exit Sub

Sheets("Basededades").Visible = True

Sheets("Basededades").Select

ActiveSheet.Unprotect

Set n = [b:B].Find(What:=palabra_a_buscar)

If n Is Nothing Then

MsgBox "No existeix la comanda " & UCase(palabra_a_buscar) & "."

Application.ScreenUpdating = False

Sheets("Basededades").Visible = False

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

Application.ScreenUpdating = True

sortir_de_buscador

Else

Range(n.Address).Select

MsgBox "Comanda " & UCase(palabra_a_buscar) & " Existent."

Application.ScreenUpdating = False

Application.CutCopyMode = False

Sheets("Buscadorcomanda").Visible = True

Sheets("Buscadorcomanda").Select

ActiveSheet.Unprotect

Sheets("Basededades").Select

n.Offset(0, 1).Select

Selection.Copy

Sheets("Buscadorcomanda").Select

Range("E7").Select

ActiveSheet.Paste

Sheets("Basededades").Select

n.Offset(0, 2).Select

Selection.Copy

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

Sheets("Basededades").Select

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

Sheets("Basededades").Visible = False

Sheets("Buscadorcomanda").Select

Application.ScreenUpdating = True

End If

Set n = Nothing

End Sub

Saludos a todos.

  • 2 weeks later...

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.