ACTUALIZAR O MODIFICAR datos en una tabla de excel mediante macros

Quisiera que alguien me pueda ayudar a saber cual es el problema.

Respuesta
1

.23.05.17

Buenas noches, Mirma

Obtienes ese error cuando la función coincidir NO encuentra lo que está buscando, es decir el equivalente al mensaje de error #N/A si tuvieras esa función en la fórmula

Para evitar ese error de ejecución deberías capturar los casos que no existen y asignarle un tratamiento.

Para ello modifica esa parte de la rutina con estas instrucciones:

On Error Resume Next
Bus_id = Application.WorksheetFunction.Match(Val(ComboboxBuscar), Hoja1.Range("B3:C20"), 0) + 2
If Err.Number <> 0 Then
    Bus_id = "NO EXISTE"
    '...
    'instrucciones para cuando no lo encuentra
    '...
'  
Else
    'aquí va qué hacer cuando si encuentra el valor del ComboBox
'  
End If
Err. Clear
On Error GoTo 0

Como verás, un condicional abre la rutina para que coloques qué hacer cuando no lo encuentra y, luego del "Else", las rutinas de volcado que actualmente tienes para cuando sí lo encuentre.

.

1 respuesta más de otro experto

Respuesta
2

El problema es porque el dato a buscar no se encuentra.

Para controlar el error al buscar un dato, podrías utilizar el método Find, te anexo el ejemplo, en el objeto b estoy estableciendo el resultado de la búsqueda, si es encontrado, entonces en el objeto b, tengo todas las propiedades de la celda: la fila, la columna, el color, el valor, etc

Private Sub CommandButtonModificar_Click()
'Act.Por.Dante Amor
    'buscar el dato con el método Find
    'establece en el objeto b el resultado de la búsqueda
    Set b = Sheets(1).Range("B3:C20").Find(ComboBoxBuscar, lookat:=xlWhole)
    If Not b Is Nothing Then
        'si el dato es encontrado, se incrementa la fila + 2
        bus_id = b.Row + 2
        With Sheets("Stock productos")
            .Range("C" & bus_id).Value = TextBox2
            .Range("D" & bus_id).Value = TextBoxDescripcion
            .Range("E" & bus_id).Value = TextBoxPreventista
            .Range("F" & bus_id).Value = TextBoxCosto.Value
            .Range("G" & bus_id).Value = TextBoxUnitario.Value
            .Range("H" & bus_id).Value = TextBoxCategoria
        End With
    Else
        'si no se encontró
        MsgBox "Dato no encontrado"
    End If
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas