![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
07/01/2010, 15:56
|
![Avatar de Carlojas](http://static.forosdelweb.com/customavatars/avatar185210_1.gif) | | | Fecha de Ingreso: junio-2007 Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 17 años, 8 meses Puntos: 49 | |
Respuesta: Ejecutar Macro Al Cambiar Valor De Una Celda Que tal compañeros buenas tardes para todos, al fin pude solucionar el problema que tenía de la siguiente forma, no se si será las mas adecuada pero por ahora es la que me ha funcionado:
El Macro quedo así:
Código vb:
Ver originalSub Consulta_Condicional(ByVal Dato As String) 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" Dim strConn As String strConn = "Provider=sqloledb;Data Source=" & RMServer & ";database=BD;UID=" & sUID & ";Pwd=" & sPassword & ";" cnMax.Open strConn Dim rsMax As ADODB.Recordset Set rsMax = New ADODB.Recordset Dim cOrden As String cOrden = Trim(Mid(Dato, 1, 8)) Dim Posicion As String Posicion = Trim(Mid(Dato, 10, 10)) If cOrden <> vbNullString Then With rsMax .ActiveConnection = cnMax .Open "SELECT CAST(CURQTY_10 AS INT) AS CURQTY_10, RTRIM(PRTNUM_10) AS PRTNUM_10, RTRIM(PLANID_01) AS PLANID_01, RTRIM(PMDES1_01) AS PMDES1_01 " & _ " FROM Order_Master INNER JOIN Part_Master ON PRTNUM_10 = PRTNUM_01 WHERE ORDNUM_10 = '" & cOrden & "'" If Not rsMax.EOF Then Range(Posicion).Offset(0, -2) = rsMax.Fields(0).Value Range(Posicion).Offset(0, -1) = rsMax.Fields(1).Value 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", vbInformation, "Consulta De Ordenes" End If End Sub
Y lo ejecuto en el evento Change de la hoja:
Código vb:
Ver originalPrivate Sub Worksheet_Change(ByVal Target As Range) Celdas = "D2:D70,G2:G70" If Not Application.Intersect(Target, Range(Celdas)) Is Nothing Then If Target.Value <> vbNullString Then Consulta_Condicional (Target & "-" & Target.Address) End If End If End Sub
Muchas Gracias a todos.
Saludos.
__________________ "SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'" |