ayuda con funcion publica

30/12/2003 - 16:38 por Osejol | Informe spam
hola

me gustaria que alguien me ayudara con una funcion publica que necesito

en la columna A de una hoja voy pegando, mediante una macro, datos de otra
hoja

en cada celda de la columna B mido el largo de la celda contigua a ella en
la columna A

quiero que cada vez que el valor de una celda de la columna B sea 7 en la
celda de la misma fila y columna E se copie la formula que tengo en C1

para ello quiero usar la formula =si(BXX=7;funcionpublica;"") pero no
encuentro la forma de crear la funcion publica que necesito


gracias

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
31/12/2003 - 11:06 | Informe spam
hola, Osejol !

... una funcion publica que necesito [...]
... cada ... que ... valor ... celda ... columna B sea 7 en ... misma fila ... columna E ... copie la formula ... en C1
... quiero usar la formula =si(BXX=7;funcionpublica;"") pero no encuentro la forma de crear la funcion [...]



[si 'entiendo bien' y quieres 'usar' una funcion de vba EN funciones de hoja de calculo]...
los prodecimientos [sub o function] 'creados' en vba...
NO pueden ser 'ejecutados desde' o 'llamados por' [ni 'usados' como argumentos de] funciones de hoja de calculo :((

[creo que] 'lo mejor' seria utilizar los eventos [del modulo de codigo] de 'la hoja en cuestion'
para usar el evento 'mas apropiado', faltaria 'saber' si...
- el valor [de 7 u 'otro'] de la celda... ¿es un 'valor directo'? -o- ¿pudiera ser el 'resultado' de alguna formula?
- 'ese' valor... ¿podria 'darse' en varias celdas? -o- ¿es 'una por vez'?
- si 'habia' una formula en columna 'E' y el valor de 'B' 'dejo' de ser 7... ¿se debe 'borrar' la formula de columna 'E'?

¿comentas?

saludos,
hector.
Respuesta Responder a este mensaje
#2 Osejol
31/12/2003 - 11:40 | Informe spam
"Héctor Miguel" escribió en el mensaje
news:
hola, Osejol !

> ... una funcion publica que necesito [...]
> ... cada ... que ... valor ... celda ... columna B sea 7 en ... misma


fila ... columna E ... copie la formula ... en C1
> ... quiero usar la formula =si(BXX=7;funcionpublica;"") pero no


encuentro la forma de crear la funcion [...]

[si 'entiendo bien' y quieres 'usar' una funcion de vba EN funciones de


hoja de calculo]...
los prodecimientos [sub o function] 'creados' en vba...
NO pueden ser 'ejecutados desde' o 'llamados por' [ni 'usados' como


argumentos de] funciones de hoja de calculo :((

- bueno, creí entender, en algún post anterior, que podían usarse; pensaba
usarlo como módulo, pero si no se puede...

[creo que] 'lo mejor' seria utilizar los eventos [del modulo de codigo] de


'la hoja en cuestion'
para usar el evento 'mas apropiado', faltaria 'saber' si...
- el valor [de 7 u 'otro'] de la celda... ¿es un 'valor directo'? -o-


¿pudiera ser el 'resultado' de alguna formula?
- 'ese' valor... ¿podria 'darse' en varias celdas? -o- ¿es 'una por vez'?



- ese valor es el resultado de una fórmula: en B3 tenemos =LARGO(A3)

- sí, se puede dar en varias celdas de la columna B al mismo tiempo


- si 'habia' una formula en columna 'E' y el valor de 'B' 'dejo' de ser


7... ¿se debe 'borrar' la formula de columna 'E'?

- sí, se debe borrar, pero en principio el valor de B no va a dejar de ser 7
mientras no se cierre el archivo.

- gracias por tu atención Hector Miguel

- saludos

- osejol
Respuesta Responder a este mensaje
#3 Héctor Miguel
01/01/2004 - 03:02 | Informe spam
hola, Osejol !
[O] ... una funcion publica que necesito [...]
... cada ... que ... valor ... celda ... columna B sea 7 en ... misma fila ... columna E ... copie la formula ... en C1
... quiero usar la formula =si(BXX=7;funcionpublica;"") pero no encuentro la forma de crear la funcion [...]

[hm] [si 'entiendo bien' y quieres 'usar' una funcion de vba EN funciones de hoja de calculo]...
los prodecimientos [sub o function] 'creados' en vba...
NO pueden ser 'ejecutados desde' o 'llamados por' [ni 'usados' como argumentos de] funciones de hoja de calculo

[O] - ... crei entender, en algun post anterior, que podian usarse ... como modulo, pero si no se puede...

[hm] ==> para este primer punto, al final 'te paso' lo que [generalmente] se comenta 'al respecto'
[hm] [creo que] 'lo mejor' seria utilizar los eventos [del modulo de codigo] de 'la hoja en cuestion'
para usar el evento 'mas apropiado', faltaria 'saber' si...
- el valor [de 7 u 'otro'] de la celda... ¿es un 'valor directo'? -o- ¿pudiera ser el 'resultado' de alguna formula?
- 'ese' valor... ¿podria 'darse' en varias celdas? -o- ¿es 'una por vez'?
- si 'habia' una formula en columna 'E' y el valor de 'B' 'dejo' de ser 7... ¿se debe 'borrar' la formula de columna 'E'?

[O] - ese valor es el resultado de una formula: en B3 tenemos =LARGO(A3)
- si, se puede dar en varias celdas de la columna B al mismo tiempo
- si, se debe borrar, pero en principio el valor de B no va a dejar de ser 7 mientras no se cierre el archivo.

[hm] ==> las siguientes son 'propuestas' [segun 'la forma' en que se hagan las modificaciones en la columna 'A']
==> no se que 'implicaciones' pudiera tener 'copiar' EN la columna 'E' una formula DE la columna 'C' <= [por lo de las referencias 'relativas' y/o 'absolutas'] =>revisa como pudiera 'verse afectado' lo siguiente<
saludos,
hector.

en el modulo de codigo de 'la hoja' ==' 1.- si las celdas [columna 'A'] van cambiando 'una por una' '
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Target.Column = 1 Then Exit Sub
If Target.Offset(, 1) = 7 Then
Range("c1").Copy Target.Offset(, 4)
Else
Target.Offset(, 4).ClearContents
End If
End Sub
' 2.- si las celdas se modifican 'en masa' [varias al mismo tiempo] '
Private Sub Worksheet_Calculate()
Dim Celda As Range
On Error GoTo Terminar
Application.EnableEvents = False
For Each Celda In Range(Range("a3"), Range("a65536").End(xlUp))
If Celda.Offset(, 1) = 7 Then
Range("c1").Copy Celda.Offset(, 4)
Else
Celda.Offset(, 4).ClearContents
End If
Next
Terminar:
Application.EnableEvents = True
End Sub

==> con relacion a 'llamar' codigos vba 'desde' formulas en celdas... 'el porque' NO 'se puede' :((
- un procedimiento [sub o funcion] NO PUEDE 'alterar' ninguna parte del entorno de excel
[incluyendo valores en 'otras' celdas] cuando es 'llamado' [aun 'indirectamente'] desde una celda.
- la razon es probablemente que la base fundamental de lo que hace excel [el 'corazon mismo' del programa] es:
'guardar' la pista de cuales celdas 'dependen' de cuales otras, para calcular las celdas en el orden 'apropiado'.
- consecuentemente, dado que excel no puede 'determinar' lo que 'podria hacer' un codigo vba...
'prohibe' a los codigos vba ['llamados' desde celdas] 'poder hacer' cualquier cosa en las hojas de calculo.
de otra manera, el sistema entero de calculo podria 'recibir' un 'infortunado' [y fuerte] 'golpe'
[no 'importa' si el codigo se encuentra en un procedimiento sub o funcion].
- obtendras un valor de error #VALOR! si 'tratas' de modificar un libro 'ejecutando' codigo vba 'llamado' desde una celda.
- la manera de 'tratar' esto [a partir de excel-'97] es usando los eventos de los objetos 'workbook' o 'worksheet' o 'chart'.
estos son ejecutados [automaticamente] cuando 'suceden'
- la unica 'diferencia' entre procedimientos 'sub' o 'funcion' es que las funciones pueden 'devolver' un valor.
Respuesta Responder a este mensaje
#4 Osejol
01/01/2004 - 11:19 | Informe spam
Gracias Héctor Miguel.

Funciona perfectamente.

Feliz año nuevo.

Osejol


"Héctor Miguel" escribió en el mensaje
news:Om21$
hola, Osejol !
[O] ... una funcion publica que necesito [...]
... cada ... que ... valor ... celda ... columna B sea 7 en ...


misma fila ... columna E ... copie la formula ... en C1
... quiero usar la formula =si(BXX=7;funcionpublica;"") pero no


encuentro la forma de crear la funcion [...]

[hm] [si 'entiendo bien' y quieres 'usar' una funcion de vba EN funciones


de hoja de calculo]...
los prodecimientos [sub o function] 'creados' en vba...
NO pueden ser 'ejecutados desde' o 'llamados por' [ni 'usados'


como argumentos de] funciones de hoja de calculo

[O] - ... crei entender, en algun post anterior, que podian usarse ...


como modulo, pero si no se puede...

[hm] ==> para este primer punto, al final 'te paso' lo que [generalmente]


se comenta 'al respecto'
[hm] [creo que] 'lo mejor' seria utilizar los eventos [del modulo de


codigo] de 'la hoja en cuestion'
para usar el evento 'mas apropiado', faltaria 'saber' si...
- el valor [de 7 u 'otro'] de la celda... ¿es un 'valor


directo'? -o- ¿pudiera ser el 'resultado' de alguna formula?
- 'ese' valor... ¿podria 'darse' en varias celdas? -o- ¿es 'una


por vez'?
- si 'habia' una formula en columna 'E' y el valor de 'B' 'dejo'


de ser 7... ¿se debe 'borrar' la formula de columna 'E'?

[O] - ese valor es el resultado de una formula: en B3 tenemos =LARGO(A3)
- si, se puede dar en varias celdas de la columna B al mismo tiempo
- si, se debe borrar, pero en principio el valor de B no va a dejar


de ser 7 mientras no se cierre el archivo.

[hm] ==> las siguientes son 'propuestas' [segun 'la forma' en que se hagan


las modificaciones en la columna 'A']
==> no se que 'implicaciones' pudiera tener 'copiar' EN la columna


'E' una formula DE la columna 'C' <=> [por lo de las referencias 'relativas' y/o 'absolutas']
=>revisa como pudiera 'verse afectado' lo siguiente<>
saludos,
hector.

en el modulo de codigo de 'la hoja' ==> ' 1.- si las celdas [columna 'A'] van cambiando 'una por una' '
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Target.Column = 1 Then Exit Sub
If Target.Offset(, 1) = 7 Then
Range("c1").Copy Target.Offset(, 4)
Else
Target.Offset(, 4).ClearContents
End If
End Sub
' 2.- si las celdas se modifican 'en masa' [varias al mismo tiempo] '
Private Sub Worksheet_Calculate()
Dim Celda As Range
On Error GoTo Terminar
Application.EnableEvents = False
For Each Celda In Range(Range("a3"), Range("a65536").End(xlUp))
If Celda.Offset(, 1) = 7 Then
Range("c1").Copy Celda.Offset(, 4)
Else
Celda.Offset(, 4).ClearContents
End If
Next
Terminar:
Application.EnableEvents = True
End Sub

==> con relacion a 'llamar' codigos vba 'desde' formulas en celdas... 'el


porque' NO 'se puede' :((
- un procedimiento [sub o funcion] NO PUEDE 'alterar' ninguna parte del


entorno de excel
[incluyendo valores en 'otras' celdas] cuando es 'llamado' [aun


'indirectamente'] desde una celda.
- la razon es probablemente que la base fundamental de lo que hace excel


[el 'corazon mismo' del programa] es:
'guardar' la pista de cuales celdas 'dependen' de cuales otras, para


calcular las celdas en el orden 'apropiado'.
- consecuentemente, dado que excel no puede 'determinar' lo que 'podria


hacer' un codigo vba...
'prohibe' a los codigos vba ['llamados' desde celdas] 'poder hacer'


cualquier cosa en las hojas de calculo.
de otra manera, el sistema entero de calculo podria 'recibir' un


'infortunado' [y fuerte] 'golpe'
[no 'importa' si el codigo se encuentra en un procedimiento sub o


funcion].
- obtendras un valor de error #VALOR! si 'tratas' de modificar un libro


'ejecutando' codigo vba 'llamado' desde una celda.
- la manera de 'tratar' esto [a partir de excel-'97] es usando los eventos


de los objetos 'workbook' o 'worksheet' o 'chart'.
estos son ejecutados [automaticamente] cuando 'suceden'
- la unica 'diferencia' entre procedimientos 'sub' o 'funcion' es que las


funciones pueden 'devolver' un valor.


Respuesta Responder a este mensaje
#5 Héctor Miguel
01/01/2004 - 11:40 | Informe spam
hola, Osejol !

Gracias ... Funciona perfectamente.



gracias a ti [por el 'feed-back'] :)

Feliz año nuevo.



gracias [de nuevo] y... comparto tambien para ti y para todos ...
mis mejores deseos para un nuevo año pleno de realizaciones.

hector ;)
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida