Dirigir la posición del formato a la hoja seleccionada

Hola distinguidos expertos…he tratado de encontrar un complemento de código entre sus infinitas asistencias, … Apelo a su buena voluntad…Tengo un USERFORM que  al clikear un CmdButon1, inserto un formato a través de varios TxBx en una hoja. Ahora lo que necesito es el correctivo a esta macro para que al seleccionar el número de hoja en el CmbBx1 (tiene 10 opciones, una hoja para cada una) me permita insertar este formato en esa opción seleccionada. Es solo un control para gastos directos de construcción. Mi macro es la siguiente:

Private Sub ComboBox1_enter()

'LISTADO DE OBRAS

ComboBox1.AddItem "obra1" ‘A LA HOJA2

ComboBox1.AddItem "obra2"  ‘A LA HOJA3 …la obra3,  A LA HOJA4… ETC.

End Sub

Private Sub CommandButton1_Click()   'insertar el registro de Obra

Application.ScreenUpdating = False

   'Dim OBRA As String

   'OBRA = ComboBox1.Value

   'If OBRA <> "" Then

       'Sheets(OBRA).Activate

   'End If

Range("A1").Select

‘Range("b" & Cells.Rows.Count).End(xlUp).Offset(1).Select

              ‘DATOS GENERALES

ActiveCell.Offset(1, 2) = "OBRA"

ActiveCell.Offset(1, 3) = TextBox1.Value  ' Obra

ActiveCell.Offset(2, 2) = "LOCALIZACION"

ActiveCell.Offset(2, 3) = TextBox2 '.Value  ' Localización … ubicación

ActiveCell.Offset(3, 2) = "Num. De CONTRATO"  ‘ “periodo de tiempo” ………etc.

             ‘EL CATALOGO DE ETAPAS O PARTIDAS

ActiveCell.Offset(12, 0) = "100"

ActiveCell.Offset(12, 1) = "GASTOS DE ADMINISTRACION"

ActiveCell.Offset(13, 0) = "110"

ActiveCell.Offset(13, 1) = "SUPERVISION DE OBRA"

ActiveCell.Offset(13, 0) = "310"

ActiveCell.Offset(13, 1) = "MEDICION Y TRAZO", “FLETES”, “EXCABACIONES” ‘……etc.

     ComboBox1 = Empty

     TextBox1 = ""

     TextBox2 = ""

     TextBox3 = ""   ‘……… etc.

TextBox1.SetFocus

Application.ScreenUpdating = True

End Sub

 

1 respuesta

Respuesta
1

Debes cambiar la macro donde rellenas el combo para que no se ejecute cada vez que entres a seleccionar un elemento. Colocala en el evento Initialize del UF:

Private Sub UserForm_Initialize()
'LISTADO DE OBRAS
ComboBox1.AddItem "obra1" 'A LA HOJA2
ComboBox1.AddItem "obra2"  'A LA HOJA3 …la obra3,  A LA HOJA4… ETC.
'…
End Sub

Luego la macro del botón quedaría con estos cambios, donde se evalua que no se deje el combo sin seleccionar y que exista hoja con nombre = al valor seleccionado. Debes utilizar la expresión ActiveSheet.... en algunas situaciones es obligatorio y en otras te aseguras de estar mencionando la hoja seleccionada.

Private Sub CommandButton1_Click()   'insertar el registro de Obra
'ajustada x Elsamatilde
Application.ScreenUpdating = False
Dim OBRA As String
OBRA = ComboBox1.Value
'controla que haya obra seleccionada
If OBRA = "" Then
    MsgBox "Falta seleccionar la Obra.", , "ERROR"
    ComboBox1.SetFocus
    Exit Sub
End If
'activa la hoja de Obra, controla posible error de que no exista
On Error GoTo sinhoja
Sheets(OBRA).Select
On Error GoTo 0
ActiveSheet.Range("A1").Select
'sigue tu macro
'------------
Exit Sub
sinhoja:
MsgBox "No se encuentra la hoja llamada " & OBRA, , "ERROR"
End Sub

Luego de tus instrucciones no olvides colocar Exit Sub y el resto de líneas hasta End sub.

Sdos. Si esto resuelve tu consulta no olvides valorar y finalizar.

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas