Que tal
mrocf, primero que todo gracias por la ayuda, pero este es el ejemplo del que te comento que ya lo probé hacer una consulta no es el incoveniente que tengo, la idea es que en determinadas celdas de mi hoja poder ejecutar una macro que consulte unos datos de mi BD y mostrar esos datos en las dos celdas anteriores a lacelda que se esta editando. como lo comentaba en el primer post, tengo 6 columnas en mi excel dos de ellas son las columnas que al editarlas se debería ejecutar la macro. lo que llevo hasta ahora es lo siguiente:
en un módulo programa la macro:
Código vb:
Ver originalSub Consulta_Condicional(ByVal Dato As String)
'Create a connection object.
Dim cnMax As ADODB.Connection
Set cnMax = New ADODB.Connection
Dim RMServer As String
RMServer = "SERVIDOR\INSTANCIA"
Dim sUID As String
sUID = "xxxx"
Dim sPassword As String
sPassword = "xxxx"
' Provide the connection string.
Dim strConn As String
'Use the SQL Server OLE DB Provider.
strConn = "Provider=sqloledb;Data Source=" & RMServer & ";database=BD;UID=" & sUID & ";Pwd=" & sPassword & ";"
'Now open the connection.
cnMax.Open strConn
' Create a recordset object.
Dim rsMax As ADODB.Recordset
Set rsMax = New ADODB.Recordset
'Dim Dato As String
'Dato = Hoja1.Range("F6")
If Dato <> vbNullString Then
With rsMax
' Assign the Connection object.
.ActiveConnection = cnMax
' Extract the required records.
.Open "SELECT CAST(CURQTY_10 AS INT) AS CURQTY_10, RTRIM(PRTNUM_10) AS PRTNUM_10 FROM Order_Master WHERE ORDNUM_10 = '" & Dato & "'"
' Copy the records into cell A1 on Sheet1.
If Not rsMax.EOF Then
Hoja1.Range("B2").CopyFromRecordset rsMax
Else
MsgBox "No Existen Criterios Relacionados Con El Número De Orden Que ha Digitado", vbInformation, "Consulta De Ordenes"
Exit Sub
End If
.Close
End With
cnMax.Close
Set rsMax = Nothing
Else
MsgBox "La Condición De Busqueda No Puede Estar Vacia", vbExclamation, "Consulta Condicional"
End If
End Sub
y en el evento change de la hora hice esto:
Código vb:
Ver originaldatos = "D2:D24"
If Not Application.Intersect(Target, Range(datos)) Is Nothing Then
'MsgBox "Se esta cambiando alguna celda del rango " & datos & ".", vbInformation, "Ejecutar Macro"
Consulta_Condicional (Hoja1.Range("D2"))
End If
Como se puede observar la macro recibe un parametro en este caso del ejemplo le puse un parametro estatico lo que deseo hacer es programar para que recibe cualquier datos del rango de celdas
datos = "D2:D24" la consulta me traería dos datos por ejemplo si la celda editada es la D2, entonces esos dos datos deben ir en las celdas B2 y C2, o la menos esa es la idea.
Saludos y Gracias.