Apoyo para una macro que debe retornar el contenido de sus celdas en TxBx…

Dante

… Que ya es de las últimas, se trata de un control de pagos; estando en la Hoja1 en blanco, se llama al USERFORM1. 1°. Se selecciona la obra en un CbBx; 2°; en otro CbBx, el concepto de gasto. Con el botón “buscar” debe encontrar el concepto seleccionado y regresar en los TxBx 7 y 8 sus contenidos. Traté de componer varios códigos de otras macros pero algo falta para complementarlas. (El uso es Una hoja para cada “Obra”). Traté de hacer una descripción de cada paso en la macro como ya he visto en tus creaciones. Anexo la macro para mayor comprensión. De antemano agradezco sus atenciones.

Private Sub CommandButton4_Click() 'ESTE COMANDO ES SOLO PARA "BUSCAR" EN 2 FUENTES:

‘----

' LA 1°: BUSCA DATOS GENERALES DE LA OPCION SELECCIONADA (EN CbBx1; "Obra1") EN

‘ CELDAS FIJAS y los repone en los siguientes TxBx1, 2 y 3, (SOLO PARA IDENTIFICACION.)

Application.ScreenUpdating = False

Dim Rango

On Error Resume Next

   TextBox1 = Sheets(ComboBox1.Value).Range("D3") ' OBRA

   TextBox2 = Sheets(ComboBox1.Value).Range("D4") ' UBICACIÓN, LOCALIZACION

   TextBox3 = Sheets(ComboBox1.Value).Range("D5") ' MUNICIPIO

‘ ESTA CORRE BIEN

'-----

' LA 2°: está en FRAME2: AL MISMO CLICK DE LA 1°, BUSCA EL "CONCEPTO DE GASTO" (SELECCIONADO EN CbBx3) Y REPONE SU CONTENIDO EN LOS TXBX 7 Y 8)

Worksheets("obra").Select

       'Ya seleccionado la opción en "Concepto de gasto" en el combobox3, lo busca en el Rango ("B:C")

Set Rango = Range("B:C").Find(What:=ComboBox3, _

LookAt:=xlWhole, LookIn:=xlValues)

Range(Rango.Address).Select

' Si lo encuentra, Recorre la línea hasta las columnas 6 y 7 Y retorna su contenido.

ActiveCell.Offset(0, 6).Value = TextBox7.Value   'Col. G Pyto. De gasto

ActiveCell.Offset(0, 7).Value = TextBox8.Value   'Col. H Gasto acumulado

‘Realiza la operación de restar el TxBx7 menos el TxBx8 y el resultado lo repone al TxBx9

TextBox9 = TextBox7 - TextBox8

   'ActiveCell.Offset(0, 8).Value = TextBox9 'Saldo

  If Not (KeyAscii >= 48 And KeyAscii <= 57) Then 'para que ponga números y no texto

       KeyAscii = 0

'----

Application.ScreenUpdating = True

Sheets("hoja1").Select

End Sub

1 respuesta

Respuesta
1

Podrías enviarme tu archivo con tu formulario y me explicas con un ejemplo qué quieres lograr.

Hola Dam... hace unas cuantas horas te envié el Archivo... Muchas gracias...

Así quedaría tu macro

Private Sub CommandButton4_Click() 'ESTE COMANDO ES SOLO PARA "BUSCAR" 2 FUENTES:
'Act.Por.Dante Amor
    'la 1°: busca datos generales de la opcion seleccionada(en cbbx1; "obra1")) en celdas fijas
    '            y los repone en los siguientes TxBx1, 2 y 3, (SOLO PARA IDENTIFICACION.)
    Application.ScreenUpdating = False
    For Each h In Sheets
        n = h.Name
        If UCase(h.Name) = UCase(ComboBox1) Then
            existe = True
            Exit For
        End If
    Next
    If existe = False Then
        MsgBox "La hoja seleccionada no existe", vbCritical, "SELCCIONAR OBRA"
        Exit Sub
        ComboBox1.SetFocus
    End If
    Set h1 = Sheets(ComboBox1.Value)
    TextBox1 = h1.Range("D3") ' OBRA
    TextBox2 = h1.Range("D4") ' UBICACIÓN, LOCALIZACION
    TextBox3 = h1.Range("D5") ' MUNICIPIO
    '-----
    'la 2°: está en frame2: al mismo click de la 1°, busca "concepto de gasto" en celda opcional, (seleccionado en cbbx3)
                            'Y REPONE SU CONTENIDO EN LOS TXBX 7 Y 8)
    'Ya seleccionado la opción en "Concepto de gasto" en el combobox3,lo busca en el Rango ("B:C")
    Set b = h1.Range("B:C").Find(What:=ComboBox3, LookAt:=xlWhole, LookIn:=xlValues)
    If b Is Nothing Then
        MsgBox "El dato no fue encontrado.", vbOKOnly + vbInformation, "AVISO"
        ComboBox1 = ""
        ComboBox1.SetFocus
        Exit Sub
    Else
        'TextBox2 = Range("B" & Rango.Row)  'Contrato
        TextBox7 = h1.Range("G" & b.Row)  'Col. G Pyo. de gasto
        TextBox8 = h1.Range("H" & b.Row)  'Col. H GAsto acumulado
        'Selection.NumberFormat = "#,##0.00" 'Las divisiones las aplica en la columna"B"
        TextBox9 = Val(TextBox7) - Val(TextBox8)
        TextBox10 = h1.Range("C" & b.Row)  'Contrato
        'TextBox1 = Empty
        'TextBox2 = Empty
        'TextBox3 = Empty
        '----
    End If
    Application.ScreenUpdating = True
    'Sheets("hoja1").Select
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Hola Dante, excelente tu respuesta, logrado el paso de fijar la pantalla en una sola posición para que no se vean las otras hojas activas… Muchas Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas