>>>.....si la columna d es igual a SI, en la columna c me pone =hoy(). El problema es que necesito que esas fechas una vez guardado el archivo y al abrirlo otro día no se actualicen. Imagino que habrá una función que pueda pasarlas a texto o algo así....<<<<
¿has probado con la propia funcion 'Texto'?. Este seria un ejmplo de
uso =>
=SI(A1="";"";TEXTO(HOY();"dd mmmm aa"))
espero te ayude
un saludo
Ivan
Supongo que habra formas sin VBA (entre ellas copiar y pegar solo
formatos y valores) pero no sabria decirte
siento no ser de gran ayuda
un saludo
Ivan
> ... si la columna d es igual a SI, en la columna c me pone =hoy().
> El problema es que necesito que esas fechas una vez guardado el archivo y al abrirlo otro dia no se actualicen.
> Imagino que habra una funcion que pueda pasarlas a texto o algo asi.
> En fin, se que me he explicado fatal, haber si me podeis echar un cable.
=hoy() es de las funciones volatiles que se actualizan en cada re/calculo de la aplicacion (aunque esto ya lo notaste) :))
mientras necesites condicionar la fecha por funciones como =si(...) me temo que no podras escapar a su volatilidad :(
una alternativa es usar codigo para dejar/modificar/eliminar/... la fecha segun cambios en determinadas celdas...
otra es que en lugar de condicionar por =si(...) uses los atajos de teclado para dejar fecha/hora "estaticas" (no volatiles)
solo que "esto" deberas hacerlo a mano en la celda donde necesites la fecha -???-
la fecha -> ctrl + punto_y_coma
la hora -> ctrl + dos_puntos
(probablemente deberas pulsar la tecla shift/mayusc en conjunto) -?-
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Saludos
"Héctor Miguel" <NOhemio...@PLShotmail.com> escribió en el mensaje de
noticias news:OO0sUEJZ...@TK2MSFTNGP03.phx.gbl...
¿quiza algo asi?
Public Function FechaSi( _
Optional Condicion As Variant = "", _
Optional SiCumple As Variant = "", _
Optional SiNoCumple As Variant = "", _
Optional Formato As String = "dd/mmm/yy hh:mm:ss" _
) As Variant
If SiCumple = "" Then SiCumple = Format(Now, Formato)
If Condicion = "" Or Condicion = True Then _
FechaSi = SiCumple Else FechaSi = SiNoCumple
End Function
un saludo
Ivan
Public Function FechaSi( _
Optional Condicion As Variant = "", _
Optional SiCumple As Variant = "", _
Optional SiNoCumple As Variant = "", _
Optional Formato As String = "dd/mmm/yy" _
) As Variant
If SiCumple = "" Then
SiCumple = Format(Now, Formato)
ElseIf IsDate(SiCumple) Then
SiCumple = Format(CLng(CDate(SiCumple)), Formato)
End If
Public Function FechaSi( _
Optional Condicion As Variant = "", _
Optional SiCumple As Variant = "", _
Optional SiNoCumple As Variant = "", _
Optional Formato As String = "dd/mmm/yy hh:mm:ss" _
) As Variant
If SiCumple = "" Then
SiCumple = Format(Now, Formato)
ElseIf IsDate(SiCumple) Then
SiCumple = Format(CLng(CDate(SiCumple)), Formato)
End If
If IsDate(SiNoCumple) Then SiNoCumple = _
Format(CLng(CDate(SiNoCumple)), Formato)
Gracias.
"Ivan" <lom...@teleline.es> escribió en el mensaje de noticias
news:d0be216a-74ea-441c...@e23g2000prf.googlegroups.com...
>>>si hay que meterlo en modulo o en hoja1, etc. <<<
pegalo en un modulo 'normal' (estando en el editor de VBa ve al menu
Insertar => elige 'Modulo' a secas (o Standard, Normal, etc, pero NO
de clase) => en la vntana que se te abre pega el codigo.
pero mejor pega este otro, que evita acciones inncesarias
'----- en un modulo normal pega desde aqui-----------------
'
Public Function FechaSi( _
Optional Condicion As Variant = "", _
Optional SiCumple As Variant = "", _
Optional SiNoCumple As Variant = "", _
Optional Formato As String = "dd/mmm/yy" _
) As Variant
If Condicion = "" Or Condicion = True Then
If SiCumple = "" Then
SiCumple = Format(Now, Formato)
ElseIf IsDate(SiCumple) Then
SiCumple = Format(CLng(CDate(SiCumple)), Formato)
End If
FechaSi = SiCumple
Else
If IsDate(SiNoCumple) Then SiNoCumple = _
Format(CLng(CDate(SiNoCumple)), Formato)
FechaSi = SiNoCumple
End If
End Function
'----------------------pega hasta aqui --------------------------
pudes usarla tanto en la hoja omo en codigo. Algunos ejs. de uso en
hoja podrian ser (los ej. irian en una celda que no sea la que se
incluya en la formula, en caso de haberla)=>
1) para poner la fecha actual (no se actualiza) a secas con el formato
predeterminado en la funcion (dd/mmm/yy) el cual podrias cambiar n el
mismo codigo por l que utilices habitualmnte =>
=FechaSi()
2) lo mismo pero con el formato '1 de enero del 2000'
=FechaSi(;;;"d "&"""de"""&" mmmm "&"""del"""&" yyyy")
3) poner la fecha actual si en la celda A1 pone 'Hola'
=FechaSi(A1="Hola")
4) poner la fecha actual si en la celda A1 pone 'Hola' y si no poner
la del 1/01/2000
=FechaSi(A1="Hola";:"1/1/2000")
5) poner "Adios" si en la celda A1 pone 'Hola' y si no poner la fecha
actual
=fechasi(B1="Hola";"Adios";TEXTO(AHORA();"dd/mm/aa");"d "&"""de"""&"
mmmm "&"""del"""&" yyyy")
....son solo algunos ejemplos. Todas debn ir en una sola linea. y no
se atualizan salvo si cambias la condicion, n su caso
Ahora lo único que ando (teniendo el original a buen recaudo) es para que
cumpla el poner la fecha cuando la columna tenga el texto "si". Espero
aprender de tu ayuda. Repito, gracias.
Saludos
"Ivan" <lom...@teleline.es> escribió en el mensaje de noticias
news:300cd90b-ed30-4fa8...@p69g2000hsa.googlegroups.com...
> >>>> Ahora lo único que ando ...es para que
> > cumpla el poner la fecha cuando la columna tenga el texto "si". <<<<
> Public Function FechaSi( _
> Optional Condicion As Variant = "", _
>.......
> If Condicion = "si" Or Condicion = True Then
>.....
>
>>>> Es correcto así?
la verdad es que, mas que si es correcto (que no tiene porque no
serlo) [creo que] la pregunta deberia ser ¿es practico? o ¿es mejor?
aunque la rspuesta final dependera de lo que realmente busques, en mi
opinion creo que no =>
ten en cuenta que la condicion 'si' se la puedes pasar en el 1er
argumento a la funcion +/- asi=>
=FechaSi(A1="Si")
si esta formula la pusieras en (pj) B1 y la arrastraras hacia abajo
hasta donde te hiciera falta, cada vez que te pusiera 'Si' en la
columna A, te pondria en su vecina de B la fecha actual y si pusiera
cualquier otra cosa (o nada) te la dejaria vacia
para tenerlo mas claro, si quieres olvidate por un momento de que es
una funcion personalizada e imaginate que fuese una funcion integrada
de excel =>
¿como trabajarias con ella?
te describo los argumentos y su uso y razon de ser
Argumentos:
NOTA:
todos son opcionales. El motivo es que si se omiten todos se pude
utilizar como un equivalente de la funcion integrada Hoy() pero sin
actualizarse cada vez que haya un recalculo o se abra el libro. Su
sintaxis seria simplemente =>
FechaSi()
a) Condicion => evidentemente es lo que se tiene que cumplir para que
se obtenga uno u otro resultado.
Es de tipo variant y no boolean, precisamente por lo comentado en la
nota anterior, para poder asignarle una cadena vacia como valor
predetrminado en caso de omision, y dejar los valores verdadero/falso
para aplicarlos igual que en la funcion 'Si'.
.-> en caso de ser el unico argumento explicito, es decir que se
omitan el resto, devolvera la fecha actual solo si se cumple la
condicion. Pej. tu ej. =>
=FechaSi(A1="Si")
.-> si se omite, pero no se omite el siguiente argumento (SiCumple)
devolveria lo que se le pase a este 2º argumento. [aqui la verdad es
que se podria matizar mas para si se omite el 2º pero no el 3º que fus
el valor de este, pero no creo que tenga demasiado sentido)
b) SiCumple => valor devuelto si la condicion es verdadero. Si se
omite devuelve la fecha atual.
se puede pasar cualquir tipo de dato: desde una fecha hasta una celda
.->est ej. devolveria el contenido de la celda 'C1' si la condicion es
verdadero (si A1 s igual a 'SI')
=FechaSi(A1="Si";C1)
c) SiNoCumple => valor devuelto si la condicion es falsa. Si se omite
devuelve la fecha atual.
se puede pasar cualquir tipo de dato: desde una fecha hasta una celda
.->est ej. devolveria el contenido de la celda 'C1' si la condicion es
falsa (si A1 es diferente de 'SI').
=FechaSi(A1="Si";;C1)
fijate en que en la anterior formula, al haber omitido el 2º
argumento, en caso de que fuese verdadero te devolveria la fecha
actual
si quisieses que en caso de ser verdadero te devolviese otra cosa, por
ej. la palabra 'Ok', podrias hacerlo asi =>
=FechaSi(A1="Si";"Ok";C1)
d) Formato => por ultimo este argumento simplemente te pemite
asignarle un formato a la fecha dvuelta.
si se omite te devuelve las fechas con el formato "dd/mmm/yy"
este formato si lo podrias adaptar en el propio codigo, por si sueles
usar uno concreto que ese fuese el predetrminado y poder omitirlo
normalmente. Para ello cambia en esta parte =>
Optional Formato As String = "dd/mmm/yy"
el -> "dd/mmm/yy" por el que mas te interese
puede ir como argumento unico, omitiendo el resto, en cuyo caso te
devolveria la fecha actual pero con el formato espcificado
OJO: aunque en las formulas de hoja normales y en los formatos uses
'a' para especificar el formato de año, en este argumento debes
pasarslo siempre como 'y', pudiendo darse el caso de tener que usar
ambas formas en la misma formula, como en uno de los ej. del mensaje
anterior =>
=FechaSi(B1="Hola";"Adios";TEXTO(AHORA();"dd/mm/aa");"d "&"""de"""&"
mmmm "&"""del"""&" yyyy")
bueno, espo te aclare algo
> c) SiNoCumple => valor devuelto si la condicion es falsa. Si se omite
> devuelve la fecha atual.
se me ha ido la mano. En realidad si se omite devuelve una cadena
vacia("")
y OJO. si, tanto en este argumento, como en el anterior le pasases una
funcion tipo Ahora(), Hoy(), etc [como en el ultimo ej. del mensaje
anterior] esta si se actualizaria
un saludo y disulpas a todos por la ristra de mensajes
Ivan
Esta ristra de mensajes, han conseguido lo primero ayuda y lo segundo
enseñar, así que bien está la ristra.
Mil Gracias.
"Ivan" <lom...@teleline.es> escribió en el mensaje de noticias
news:421bb41a-7654-495c...@u10g2000prn.googlegroups.com...
disculpa si soy un pesado, pero no me acababa de gustar la propuesta
aunque para lo que buscabas posiblemente sea valida, tenia algunas
cosas que no la hacian equivalente a la funcion 'Si' pero devolviendo
la fecha actual por defecto en los casos ya comentados, que era un
poco la intencion
pej. no se le podian pasar cadenas vacias ("") como argumentos de
devolucion, o mejor dicho, si se le podian pasar, pero en el caso de
SiCumple en lugar de dicha cadena te devolveria la fecha actual
otro 'handicap' eran los fomatos de fecha que simpre acababan
dvolviendo una cadena
esta nueva 'version' creo que mas o menos cubre dichos problemas =>
Public Function FechaSi_3( _
Optional Condicion As Variant, _
Optional SiCumple As Variant, _
Optional SiNoCumple As Variant, _
Optional Formato As Variant _
) As Variant
Dim Fecha As Variant, Valor As Variant
Fecha = Now
If IsMissing(Condicion) And IsMissing(SiCumple) And _
IsMissing(SiNoCumple) Then FechaSi_3 = IIf( _
IsMissing(Formato), Fecha, Format(Fecha, _
Formato)): Exit Function
Condicion = IIf(Not IsMissing(Condicion), Condicion, _
Not IsMissing(SiCumple))
If IsMissing(SiCumple) Then SiCumple = Fecha
If IsMissing(SiNoCumple) Then SiNoCumple = Fecha
Valor = IIf(Condicion, SiCumple, SiNoCumple)
If IsMissing(Formato) Then FechaSi_3 = Valor Else _
FechaSi_3 = Format(Valor, Formato)
End Function
En este caso los argumentos son los mismos pero con estas variaciones
en su 'funcionamiento' =>
1.-> si se omiten todos devuelve la fecha y hora actual del sistema
pero como nº de serie. Para verlo con un formato determinado habria
que formatear el rango. Pej. seleccionandolo y con formato celdas =>
Numero => fecha o personalizada y aplicando el formato deseado, o via
codigo con algo tipo =>
Range("talRango").NumberFormat="dd/mm/yy"
esto tiene la ventaja de que el valor devuelto es una fecha y no una
cadena
Ej: '=FechaSi_3()'
2.->si se omiten todos menos el formato devuelve la fecha y hora
actual del sistema pero como cadena formateda segun el formato pasado
Ej: '=FechaSi_3(;;;"dddd d mmmm yy hh:mm")'
NOTA: en cualquier caso, siempre que se omita formato devolvera el
dato tal cual, aunque en el caso de las fechas lo hara como el serial
de la fecha. Y cuando no se omita lo devolvera formateado segun se
indique (si es un formato valido) pero como una cadena
3.-> si se omite 'Condicion' pero no uno de los dos siguients
argumentos (SiCumple y/o SiNoCumple) la verdad es que la formula solo
tendria sentido para dar formato al valor (o celda) pasado. Devuelve
el 1º de los dos que no se haya omitido con l formato pasado [si no se
omite Formato]
Ej: '=FechaSi_3(;A1;;"0000")'
4.-> si 'Condicion' no se omite =>
a) si se omiten los restantes devuelve lo mismo que en el punto 1
(fecha y hora como serial) pero solo si se cumple la condicion (OJO->
si no se cumple [creo que] devuelve 0)
b) si se omiten los 2 segundos pero se espcifica un formato, lo mismo
que en el punto 2 (fecha formateada como cadna) pero tambien solo si
se cumple la condicion
c)si se omite uno de los dos resultados posibles (SiCumple o
SiNoCumple) el argumento omitido toma la fecha y hora del sistema.
Segun se cumpla la condicion devolvera uno u otro (el valor pasado o
la fecha), y formatado o no segun se omita o no Formato
d) si no se omiten ni el 2º ni el 3º (SiCumple o SiNoCumple)
funcionara como la funcion'Si'i, con lo que no tendria sntido salvo
para formatear el resultado especificando 'Formato'
bueno, realmente es para practicar un poco y no se hasta que punto
resultara util o sera mejorable. En cualquier caso ahora si admite una
cadena vacia como argumento a devolver
OJO-> al pasar un formato al argumento idem, al igual que con el
formato de fecha en el que el año hay que pasarlo con ' Y ' el signo
decimal y/o el separador de miles hay que pasarselo estilo VBA, es
decir: punto (.) para el decimal y oma (,) para el sep. de miles
pero solo a este argumento, al resto se l pasarian normal, segun la
configuracion del equipo
bueno, de nuevo disculpas por el 'rollo' pero no me habia qudado muy a
gusto con la anterior funcion
un saludo
Ivan
PD: aunque he intentado corregir la mayoria, es posible que mi teclado
se haya zampado unas cuantas letras (sobre todo la e, s, d y c) pero
mientras no pueda cambiarlo solo espero que no vaya a mas su apetito
De todas formas, me aguardo el último trabajo =FechaSi_3() porque seguro me
hará falta en un futuro.
A todo esto, si supieras de algún ficherito (curso que enseñe VB) te
agradecería me indicaras donde conseguirlo, si es gratis, mejor :-)
Un abrazo y mil gracias.
"Ivan" <lom...@teleline.es> escribió en el mensaje de noticias
news:71f31ca8-31b4-4c3a...@q21g2000hsa.googlegroups.com...
>>>> ..., si supieras de algún ficherito (curso que enseñe VB) te
> agradecería me indicaras donde conseguirlo, si es gratis, mejor :-)..<<<<
aunque posiblemente las opciones son muchas, aun mas si te manejas con
el ingles, al final te pongo un extracto de una respuesta que he dado
algunas veces sobre el tema,
pero antes, sobre todo por si alguien intentara usarla, permiteme de
nuevo corregir mi ultima propuesta, en la que podia no devolver lo que
esperabamos en caso de que las 2 posibilidades a devolver fuesen de
distinto tipo (uno fecha y otro numero, o viceversa) y se hubiese
expecificado un formato de alguno de los dos tipos.
En este caso, posiblemente y si el dato admitiese el formato pasado,
nos lo transformaria en lo que no es (un nº en fecha o una
fecha[serial] en nº aunque aambos como cadena)
pej->
=fechasi_3(A1="";1;;"dd/mm/yy")
en este caso esprariamos que si a1 esta vacio nos devolvira el nº 1 y
sin embargo nos dvolveria => 31/12/99
.esta [creo que ya es la ultima que envio, aunqu si alguien ve algun
problema mas no importaria si lo comenta] (pn)ultima version parece
corregirlo convirtiendo el argumento 'Formato' a uno specifio para
fecha y añadiendo otro formato especifico
para numeros
Public Function FechaSi_4( _
Optional Condicion As Variant, _
Optional SiCumple As Variant, _
Optional SiNoCumple As Variant, _
Optional FormatoFecha As Variant, _
Optional FormatoNro As Variant _
) As Variant
Dim Fecha As Variant, Valor As Variant, EsFecha As Boolean
Fecha = Now
If IsMissing(Condicion) And IsMissing(SiCumple) And _
IsMissing(SiNoCumple) Then FechaSi_4 = IIf( _
IsMissing(FormatoFecha), Fecha, Format(Fecha, _
FormatoFecha)): Exit Function
Condicion = IIf(Not IsMissing(Condicion), Condicion, _
Not IsMissing(SiCumple))
If IsMissing(SiCumple) Then SiCumple = Fecha
If IsMissing(SiNoCumple) Then SiNoCumple = Fecha
EsFecha = IIf(Condicion, IsDate(SiCumple), IsDate(SiNoCumple))
Valor = IIf(Condicion, SiCumple, SiNoCumple)
If EsFecha Then
If IsMissing(FormatoFecha) Then FechaSi_4 = Valor _
Else FechaSi_4 = Format(Valor, FormatoFecha)
Else
If IsMissing(FormatoNro) Then FechaSi_4 = Valor _
Else FechaSi_4 = Format(Valor, FormatoNro)
End If
End Function
bueno, creo que ya si que me paro
a continuacio te pongo el extracto sobre manuales y sitios qu te
mncionaba
un saludo
Ivan
----- extracto de extractos de conversaciones sobre manuals y sitios
sobre VBa y excel
>>> me comentastes que conocías páginas donde
>>>encontrar "Manuales de VBA para torpes que quieren meterse en el ajo"
la verdad es que hay muchas opciones en la web, pero por darte uno en
concreto que creo es bastante completo, y aunque
es para vba access, el ¿90%? es comun a excel, sobre todo lo que se
refiere a la sintaxis y diversos tipos de
estructuras, datos, variables, etc
Euardo Olaz: manual VBA acces, bastante completo y en general
aplicable a excel
http://www.olaz.net/descargas/access/curso_vba/vba_entregas.htm
vinculo a conversaciones sobre eñ tema 'Manuales VBA', en ellas
encontraras muchas propuestas
http://tinyurl.com/2r5jqn
y aqui va una respuesta de HM al repecto.
----------------------hector Miguel --------------------------------
> Hay alguna forma de descargar algun excelente manual.
> Gracias Ante todo y me regalan alguan dire wwww
en cuanto a alguna 'recomendacion' por material de aprendizaje
[generalmente
'mi' respuesta es la que te 'apunto' al final]...
[ademas] acostumbro 'afirmar' que: "cada quien avanza, al 'ritmo' que
quiere/puede/necesita/..." :))
si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
-> me gustaria decirte que leyendo 'tales o cuales' libros ... [pero,
estaria siendo 'excluyente'] ;)
todo material de estudio [manuales, {F1}, libros, revistas,
cursos,
web's, estos foros, etc.] ->es excel...ente<-
ademas considera que [en muchas de las ocasiones]
-> 'buscando una cosa'... 'encuentras otra' [que se te habia
'perdido']
-> o ['te topas' con] 'la hermana que se escapo de su prision'
[sor-presa... NO esta !!!] :))
-> cuando 'se atora la carreta' [que nos sucede a todos] :-(
NO es 'imprescindible' saberlo todo ;) es suficiente con
saber...
el telefono del que sabe... o el e-mail... o la web... o... por
que no
consultas en el foro? :D
aunque [supongo que de algun modo] no 'escaparas' de consultar al
asistente
{F1} de excel/vba...
encontraras [algunos] manuales/instructivos/cursos/etc. en las
siguientes
direcciones:
[aunque... 'calificarlo/s' de sencillos/complicados/completos/
buenos/...
dependera de factores 'personales'] :D
una lista de manuales y tutoriales [ingles]
http://www.virtualhelpdeskcentral.com/sitecategory.asp?SiteID=12&NoGU...
goryID=18
algunas paginas en ingles...
Charles Williams (DecisionModels): http://www.decisionmodels.com/
Tushar Mehta: http://www.tushar-mehta.com/excel/
Laurent Longre: http://xcell05.free.fr/
Rob Bovey: http://www.appspro.com/Tips/Tips_And_Tricks.htm
Stephen Bullen' Excel MVP's page: http://www.bmsltd.ie/MVP/Default.htm
Jurgen Volkerink (KeepItCool):
http://members.chello.nl/keepitcool/addins.html
Matt Evans: http://www.exinfm.com/free_spreadsheets.html
Karl Peterson: http://vb.mvps.org/samples/
Bob Umlas: http://www.emailoffice.com/excel/arrays-bobumlas.html
Carlo Quintero: http://www.mztools.com/
Van Gelder: http://homepages.paradise.net.nz/~robree/excel/
MiStupid (Training Online): http://mistupid.com/tutorials/excel/
ExtremeVBTalk(newsgroup): http://www.visualbasicforum.com/
algunas paginas en castellano...
http://www.franciscopascual.com/Archivos/Excel%202002.zip
http://www.javeriana.edu.co/decisiones/modelos/ejemplos_y_ejercicios....
http://www.javeriana.edu.co/cursad/diplomado/ejemplos_j_sarmiento.html
http://members.fortunecity.es/tonelorc/eexcel.html
http://www.aulaclic.es/excel2000/f_excel2000.htm
http://64.226.188.26/sivnetwork-www/cursos_gratis/excel/Excel.htm
http://www.territoriopc.com/excel/
http://interinfo.iespana.es/interinfo/info_general/manuales/manuales_...
http://www.fullwebs.com.uy/endondeestamos/Downloads/Tutoriales/excel.pdf
http://office.arnulfoperez.com/excel/
http://lacher.com/toc.htm
http://www.sistemaslym.net/vba/excel/excel.html
http://es.geocities.com/lacibelesdepunilla/macros.htm
http://es.geocities.com/lacibelesdepunilla/macros1.htm
http://www.macroheavy.com/excel/excel.asp
http://www.geocities.com/gorita_2000/VBA.htm
http://www.excelavanzado.com/
http://www.xtec.es/~rlloren4/KBEsp2.htm
http://www.exceluciones.com/portal/index.php?article=35
"Ivan" <lom...@teleline.es> escribió en el mensaje de noticias
news:a3cb8324-606b-461d...@q21g2000hsa.googlegroups.com...
"YoMismo" <QuieroSaber> escribió en el mensaje de noticias:608FA120-68B1-495E...@microsoft.com...