Jose,
Gracias por la respuesta.

Encontre que si se declara una función en vba, luego se puede asignar a una celda la función, tal cual como si fuera una funcion de excel.

El problema que se me presenta ahora es el siguiente....

Dentro del Excel tengo un formulario con 3 datos que carga el usuario.
Cuando el valor de una celda cambia (con un valor determinado, ej: < 15), se dispara el formulario y el usuario debe completar los datos .
Una vez que el usuario completo los datos y presiona el boton guardar (del formulario), debería escribir  al lado de la celda actual los valores que captura del formulario.

Ahora el problema es que cuando intento escribir el valor de la celda me da el siguiente error:

Error: 1004
Description: Application-defined or object-defined error

Aparentemente el error se debe a que excel pierde la referencia sobre que celda estoy trabajando.

Intente de distintas formas y no pude lograr superar este punto !!!!

Te transcribo una porción del código.


Public Sub writeDatos()
Dim xCelda As Range
Dim shtSheetToWork As Worksheet


On Error GoTo errH

  '' ESTA FORMA TAMPOCO FUNCIONA
  '' Set shtSheetToWork = ActiveWorkbook.Sheets("Data")
  '' shtSheetToWork.Cells(19, 19).Value = "some value"
  '' Set shtSheetToWork = Nothing


  ''Set xCelda = Range(ActiveCell.Address)
  Set xCelda = Range("R19")
 
  Debug.Print "Celda Actual: " & xCelda.Address
 
  If bGrabarDatos Then
    Debug.Print "Celda Grupo: " & xCelda.Offset(0, 1).Address
    xCelda.Offset(0, 1).Value = "Mi Valor 1"
   
    Debug.Print "Celda Precio: " & xCelda.Offset(0, 2).Address
    xCelda.Offset(0, 2).Value = "Mi Valor 2"
   
    Debug.Print "Celda Comentario: " & xCelda.Offset(0, 3).Address
    xCelda.Offset(0, 3).Value = "Mi Valor 3"
   
  End If
 
  bGrabarDatos = False

Exit Sub
errH:
Debug.Print "Error: " & Err.Number & vbCrLf & Err.Description
 
End Sub


Saludos,
Diego.-






Jose Moreno wrote:
Diego,
te recomiendo utilizar el evento change de la hoja para ejecutar una macro en base a
ciertas condiciones. En el ejemplo se llama a la macro1 si el valor de A1 es menor que
15.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A1]) Is Nothing And Target < 15 Then
    ThisWorkbook.Macro1
End If
End Sub

Espero que te sirva.
Jose Moreno

--- Diego Campos <[EMAIL PROTECTED]> wrote:

  
Buenas,
Estoy trabajando en unas Macros de Excel y VBA.

Quería saber si es posible asignar una función a una celda de Excel y 
que dada una condición ejecute una macro grabada en el mismo excel.

Ej:

Valor de Celda A1: 15%

Valor de la Celda B1: if (A1 >= 15, <algo que ejecuta la Macro1>,"")

Luego la Macro1 hace una serie de procesos sobre la hoja.


Muchas gracias.

Saludos,
Diego.-

P.D: Si alguién posee documentación o links sobre Macros de VBA para 
Excel y me la pudiese enviar, se lo agradecería.

    



       
____________________________________________________________________________________Get the free Yahoo! toolbar and rest assured with the added security of spyware protection.
http://new.toolbar.yahoo.com/toolbar/features/norton/index.php



  

--

SISTEMATICA ingenieria de software srl
Diego Campos
Pasco 1675 (2000) Rosario, Santa Fe, Argentina.
Tel./Fax: +54 (341) 485-1432 / 568-0183

Responder a