Valor actual de una celda.

12/08/2008 - 20:22 por Julián | Informe spam
Tengo un libro de Excel con dos hojas denominadas Inventario y Compras.
En la hoja Inventario está el inventario de mi almacén con los siguientes
campos:
Código Línea Denominación UniVenta IM OfiSSCC Entradas Salidas Existencias PrecioUniCoste PrecioVenta ValorExistencias

En la hoja Compras están los cálculos de los artículos que compro; los
campos son:
Fecha ClProv Documento Código Cantidad PrecioCompra Descuento IVA Importe Prorrata CosteNeto NomProveedor NomArtículo
Por medio de un filtro avanzado determino el importe del coste de compra en
la celda Compras!M9999.

Por medio de una macro quiero llevar el importe del coste de compra a la
celda que corresponda de la hoja de Inventario. La columna es siempre la J
(PrecioUniCoste).
Hago la macro que indico a continuación:
Sub PegarCoste()
' PegarCoste Macro
Sheets("Inventario").Select
Range("M1").Select
Application.CutCopyMode = False
Selection.Copy
Application.Goto Reference:="R112C10"
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=Compras!R[9887]C[3]"
Range("J112").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
End Sub

Como paso previo localizo la celda de la hoja Inventario en la que la macro
tiene que escribir el valor de la celda Compras!9999 por medio de la función:
=DIRECCION(BUSCARV(Compras!D3;Inventario!A:B;2;FALSO);10)
En la celda Compras!D3 está el código de producto utilizado.
El resultado del cálculo lo introduzco en el cuadro de nombres para que
sitúe el cursor en la celda correspondiente.
La primera vez que ejecuto la macro funciona bien; la segunda y sucesivas
veces que ejecuto la macro funciona mal porque toma siempre el primer valor
de la celda que introduje en el cuadro de nombres.
¿Cómo tengo que hacer para que tome cada vez que necesite ejecutar la macro
el valor que tenga la celda?

Saludos,
Julián.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
13/08/2008 - 00:29 | Informe spam
hola, Julián !

1) el procedimiento lo puedes simplificar/adelgazar/agilizar/... +/- como sigue:

Sub PegarCoste()
Worksheets("inventario").Range("j112").Value = _
Worksheets("compras").Range("m9999").Value
End Sub

2)
si primero necesitas conocer la fila para saber si pegar en J112 o en J245, o n J1029...
(no tiene prevencion/correccion de errores pero) prueba con algo +/- como lo siguiente

Sub PegarCoste()
Dim nFila As Long
nFila = Application.Vlookup(Worksheets("compras").Range("d3"), _
Worksheets("inventario").Range("a:b"), 2, False)
Worksheets("inventario").Range("j" & nFila).Value = _
Worksheets("compras").Range("m9999").Value
End Sub

saludos,
hector.

__ OP __
Tengo un libro de Excel con dos hojas denominadas Inventario y Compras.
En la hoja Inventario esta el inventario de mi almacen con los siguientes campos: (...)
Por medio de un filtro avanzado determino el importe del coste de compra en la celda Compras!M9999.
Por... una macro quiero llevar el importe del coste de compra a la celda que corresponda de la hoja de Inventario.
La columna es siempre la J (PrecioUniCoste). Hago la macro que indico a continuacion:
Sub PegarCoste()
' PegarCoste Macro
Sheets("Inventario").Select
Range("M1").Select
Application.CutCopyMode = False
Selection.Copy
Application.Goto Reference:="R112C10"
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=Compras!R[9887]C[3]"
Range("J112").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

Como paso previo localizo la celda de la hoja Inventario
en la que la macro tiene que escribir el valor de la celda Compras!9999 por medio de la funcion:
=DIRECCION(BUSCARV(Compras!D3;Inventario!A:B;2;FALSO);10)
En la celda Compras!D3 esta el codigo de producto utilizado.
El resultado del calculo lo introduzco en el cuadro de nombres para que situe el cursor en la celda correspondiente.
La primera vez que ejecuto la macro funciona bien; la segunda y sucesivas veces que ejecuto la macro funciona mal
porque toma siempre el primer valor de la celda que introduje en el cuadro de nombres.
Como tengo que hacer para que tome cada vez que necesite ejecutar la macro el valor que tenga la celda?
Respuesta Responder a este mensaje
#2 Julián
13/08/2008 - 21:27 | Informe spam
Muchas gracias. Funciona perfectamente; es lo que necesitaba.
Saludos,
Julián.


"Héctor Miguel" escribió:

hola, Julián !

1) el procedimiento lo puedes simplificar/adelgazar/agilizar/... +/- como sigue:

Sub PegarCoste()
Worksheets("inventario").Range("j112").Value = _
Worksheets("compras").Range("m9999").Value
End Sub

2)
si primero necesitas conocer la fila para saber si pegar en J112 o en J245, o n J1029...
(no tiene prevencion/correccion de errores pero) prueba con algo +/- como lo siguiente

Sub PegarCoste()
Dim nFila As Long
nFila = Application.Vlookup(Worksheets("compras").Range("d3"), _
Worksheets("inventario").Range("a:b"), 2, False)
Worksheets("inventario").Range("j" & nFila).Value = _
Worksheets("compras").Range("m9999").Value
End Sub

saludos,
hector.

__ OP __
> Tengo un libro de Excel con dos hojas denominadas Inventario y Compras.
> En la hoja Inventario esta el inventario de mi almacen con los siguientes campos: (...)
> Por medio de un filtro avanzado determino el importe del coste de compra en la celda Compras!M9999.
> Por... una macro quiero llevar el importe del coste de compra a la celda que corresponda de la hoja de Inventario.
> La columna es siempre la J (PrecioUniCoste). Hago la macro que indico a continuacion:
> Sub PegarCoste()
> ' PegarCoste Macro
> Sheets("Inventario").Select
> Range("M1").Select
> Application.CutCopyMode = False
> Selection.Copy
> Application.Goto Reference:="R112C10"
> Application.CutCopyMode = False
> ActiveCell.FormulaR1C1 = "=Compras!R[9887]C[3]"
> Range("J112").Select
> Selection.Copy
> Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
> :=False, Transpose:=False
> End Sub
>
> Como paso previo localizo la celda de la hoja Inventario
> en la que la macro tiene que escribir el valor de la celda Compras!9999 por medio de la funcion:
> =DIRECCION(BUSCARV(Compras!D3;Inventario!A:B;2;FALSO);10)
> En la celda Compras!D3 esta el codigo de producto utilizado.
> El resultado del calculo lo introduzco en el cuadro de nombres para que situe el cursor en la celda correspondiente.
> La primera vez que ejecuto la macro funciona bien; la segunda y sucesivas veces que ejecuto la macro funciona mal
> porque toma siempre el primer valor de la celda que introduje en el cuadro de nombres.
> Como tengo que hacer para que tome cada vez que necesite ejecutar la macro el valor que tenga la celda?



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida