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) & "."
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.