Macro al escribir un solo caracter

20/07/2007 - 15:46 por srtaele | Informe spam
Buenas tardes,

Observo que en este grupo hay gente tremendamente válida. Alucino con
muchas de las respuestas.

Necesito crear una macro que me permitiese desplazar el cursor una
celda a la derecha cuando escribo un solo caracter. Por ejemplo, si
escribo 3 en la celda A1, la siguiente celda seleccionada fuese la B1
pero sintener que darle a la tecla tabulador.

He intentado buscar respuestas similares, pero no las termino de
entender.

Muchas gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Ivan
20/07/2007 - 17:09 | Informe spam
On 20 jul, 15:46, srtaele wrote:
Buenas tardes,

Observo que en este grupo hay gente tremendamente válida. Alucino con
muchas de las respuestas.

Necesito crear una macro que me permitiese desplazar el cursor una
celda a la derecha cuando escribo un solo caracter. Por ejemplo, si
escribo 3 en la celda A1, la siguiente celda seleccionada fuese la B1
pero sintener que darle a la tecla tabulador.

He intentado buscar respuestas similares, pero no las termino de
entender.

Muchas gracias de antemano.



hola,

esto haria lo que pides (al darle a enter/intro o al salir de la celda
de otra forma)

en el modulo de la hoja (click derecho en la pestaña del nombre de la
hoja -> Ver codigo -> y en el modulo que se te abre, copias/pegas
esto )


Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target) > 0 Then Target.Offset(, 1).Select
End Sub

de todas formas, supongo que no querras que se aplique a toda la hoja.
Si es asi convendria que comentaras mas detalles

espero te ayude

un saludo
Ivan
Respuesta Responder a este mensaje
#2 infinitogool
20/07/2007 - 17:34 | Informe spam
Éste es un mensaje de varias partes en formato MIME.
=_NextPart_000_0400_01C7CAF4.4124A4E0



"Ivan" escribió en el mensaje de noticias:
On 20 jul, 15:46, srtaele wrote:
Buenas tardes,

Observo que en este grupo hay gente tremendamente válida. Alucino con
muchas de las respuestas.

Necesito crear una macro que me permitiese desplazar el cursor una
celda a la derecha cuando escribo un solo caracter. Por ejemplo, si
escribo 3 en la celda A1, la siguiente celda seleccionada fuese la B1
pero sintener que darle a la tecla tabulador.

He intentado buscar respuestas similares, pero no las termino de
entender.

Muchas gracias de antemano.



hola,

esto haria lo que pides (al darle a enter/intro o al salir de la celda
de otra forma)

en el modulo de la hoja (click derecho en la pestaña del nombre de la
hoja -> Ver codigo -> y en el modulo que se te abre, copias/pegas
esto )


Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target) > 0 Then Target.Offset(, 1).Select
End Sub

de todas formas, supongo que no querras que se aplique a toda la hoja.
Si es asi convendria que comentaras mas detalles

espero te ayude

un saludo
Ivan
hola
creo que solo queria pasar a la derecha cuando escribe un caracter, luego tendría que cambiar el >0 por =1, es decir:

Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target) =1 Then Target.Offset(, 1).Select
End Sub

un saludo a todos
infinitogool


=_NextPart_000_0400_01C7CAF4.4124A4E0

ÿþ<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=unicode">
<META content="MSHTML 6.00.5730.11" name=GENERATOR></HEAD>
<BODY id=MailContainerBody
style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-SIZE: 10pt; COLOR: #000000; PADDING-TOP: 15px; FONT-FAMILY: Arial"
bgColor=#ffffff leftMargin=0 topMargin=0 CanvasTabStop="true"
name="Compose message area" acc_role="text">
<DIV><BR><BR>"Ivan" &lt;lomboc@teleline.es&gt; escribió en el mensaje de
noticias:1184944173.642838.122470@o61g2000hsh.googlegroups.com...<BR>On 20 jul,
15:46, srtaele &lt;srta...@gmail.com&gt; wrote:<BR>&gt; Buenas
tardes,<BR>&gt;<BR>&gt; Observo que en este grupo hay gente tremendamente
válida. Alucino con<BR>&gt; muchas de las respuestas.<BR>&gt;<BR>&gt; Necesito
crear una macro que me permitiese desplazar el cursor una<BR>&gt; celda a la
derecha cuando escribo un solo caracter. Por ejemplo, si<BR>&gt; escribo 3 en la
celda A1, la siguiente celda seleccionada fuese la B1<BR>&gt; pero sintener que
darle a la tecla tabulador.<BR>&gt;<BR>&gt; He intentado buscar respuestas
similares, pero no las termino de<BR>&gt; entender.<BR>&gt;<BR>&gt; Muchas
gracias de antemano.<BR><BR>hola,<BR><BR>esto haria lo que pides (al darle a
enter/intro o al salir de la celda<BR>de otra forma)<BR><BR>en el modulo de la
hoja (click derecho en la pestaña del nombre de la<BR>hoja -&gt; Ver codigo
-&gt; y en el modulo que se te abre, copias/pegas<BR>esto )<BR><BR><BR>Private
Sub Worksheet_Change(ByVal Target As Range)<BR>&nbsp; If Len(Target) &gt; 0 Then
Target.Offset(, 1).Select<BR>End Sub<BR><BR>de todas formas, supongo que no
querras que se aplique a toda la hoja.<BR>Si es asi convendria que comentaras
mas detalles<BR><BR>espero te ayude<BR><BR>un
saludo<BR>Ivan<BR>-----------------<BR>hola</DIV>
<DIV>creo que solo queria pasar a la derecha cuando&nbsp; escribe un caracter,
luego tendría que cambiar el &gt;0 por =1, es decir:</DIV>
<DIV><BR>Private Sub Worksheet_Change(ByVal Target As Range)<BR>&nbsp; If
Len(Target) <FONT face="Arial Black" color=#ff0000><STRONG>=1</STRONG></FONT>
Then Target.Offset(, 1).Select<BR>End Sub</DIV>
<DIV>&nbsp;</DIV>
<DIV>un saludo a todos</DIV>
<DIV>infinitogool</DIV>
<DIV><BR>&nbsp;</DIV></BODY></HTML>

=_NextPart_000_0400_01C7CAF4.4124A4E0--
Respuesta Responder a este mensaje
#3 Ivan
20/07/2007 - 21:11 | Informe spam
On 20 jul, 17:34, "infinitogool" wrote:
"Ivan" escribió en el mensaje de noticias:
On 20 jul, 15:46, srtaele wrote:

> Buenas tardes,

> Observo que en este grupo hay gente tremendamente válida. Alucino con
> muchas de las respuestas.

> Necesito crear una macro que me permitiese desplazar el cursor una
> celda a la derecha cuando escribo un solo caracter. Por ejemplo, si
> escribo 3 en la celda A1, la siguiente celda seleccionada fuese la B1
> pero sintener que darle a la tecla tabulador.

> He intentado buscar respuestas similares, pero no las termino de
> entender.

> Muchas gracias de antemano.

hola,

esto haria lo que pides (al darle a enter/intro o al salir de la celda
de otra forma)

en el modulo de la hoja (click derecho en la pestaña del nombre de la
hoja -> Ver codigo -> y en el modulo que se te abre, copias/pegas
esto )

Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target) > 0 Then Target.Offset(, 1).Select
End Sub

de todas formas, supongo que no querras que se aplique a toda la hoja.
Si es asi convendria que comentaras mas detalles

espero te ayude

un saludo
Ivan
hola
creo que solo queria pasar a la derecha cuando escribe un caracter, luego tendría que cambiar el >0 por =1, es decir:

Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target) =1 Then Target.Offset(, 1).Select
End Sub

un saludo a todos
infinitogool



hola chicos/as ??

creo que solo queria pasar a la derecha cuando escribe un caracter







tienes razon,

aunque realmente y en cualquier caso, (creo que) no pasara a la
siguiente celda hasta salir (via intro o como sea<casi>) de la
editada,

aunque me da la impresion, lo que quiere OP, es que 'solo' se pueda
escribir un caracter en la celda y que al hacerlo automaticamente se
seleccione la siguiente celda

esto tal cual creo que no es tarea facil, pues impedir la edicion de
la celda sobre la marcha, como se puede hacer en un textbox de
userform, pej., creo que no es posible, al menos sin recurrir a
tecnicas mas complejas tipo eventos de aplicacion, APIs o no se muy
bien que (y, a lo mejor estoy diciendo una burrada. Si es asi me
encantaria que me sacarais de mi error)

pero si puede hacer que solo quede el 1er caracter escrito en la celda
al salir de ella y pasar a la siguiente al salir., se salga como se
salga,

para este caso,tambien podria valer algo asi:

Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target) > 0 Then _
Target = Left(Target, 1): _
Target.Offset(, 1).Select
End Sub

a ver que opina/comenta OP

un saludo
Ivan

PD: si alguien sabe (si es que es posible) como capturar los eventos
del teclado al escribir en una celda, o el cambio sobre la marcha (sin
tener que esperar a salir) seria de agradecer si nos lo comentara.
Gracias por anticipado.
Respuesta Responder a este mensaje
#4 srtaele
20/07/2007 - 22:35 | Informe spam
On 20 jul, 21:11, Ivan wrote:
On 20 jul, 17:34, "infinitogool" wrote:



> "Ivan" escribió en el mensaje de noticias:
> On 20 jul, 15:46, srtaele wrote:

> > Buenas tardes,

> > Observo que en este grupo hay gente tremendamente válida. Alucino con
> > muchas de las respuestas.

> > Necesito crear una macro que me permitiese desplazar el cursor una
> > celda a la derecha cuando escribo un solo caracter. Por ejemplo, si
> > escribo 3 en la celda A1, la siguiente celda seleccionada fuese la B1
> > pero sintener que darle a la tecla tabulador.

> > He intentado buscar respuestas similares, pero no las termino de
> > entender.

> > Muchas gracias de antemano.

> hola,

> esto haria lo que pides (al darle a enter/intro o al salir de la celda
> de otra forma)

> en el modulo de la hoja (click derecho en la pestaña del nombre de la
> hoja -> Ver codigo -> y en el modulo que se te abre, copias/pegas
> esto )

> Private Sub Worksheet_Change(ByVal Target As Range)
> If Len(Target) > 0 Then Target.Offset(, 1).Select
> End Sub

> de todas formas, supongo que no querras que se aplique a toda la hoja.
> Si es asi convendria que comentaras mas detalles

> espero te ayude

> un saludo
> Ivan
> hola
> creo que solo queria pasar a la derecha cuando escribe un caracter, luego tendría que cambiar el >0 por =1, es decir:

> Private Sub Worksheet_Change(ByVal Target As Range)
> If Len(Target) =1 Then Target.Offset(, 1).Select
> End Sub

> un saludo a todos
> infinitogool

hola chicos/as ??

>>> creo que solo queria pasar a la derecha cuando escribe un caracter

tienes razon,

aunque realmente y en cualquier caso, (creo que) no pasara a la
siguiente celda hasta salir (via intro o como sea<casi>) de la
editada,

aunque me da la impresion, lo que quiere OP, es que 'solo' se pueda
escribir un caracter en la celda y que al hacerlo automaticamente se
seleccione la siguiente celda

esto tal cual creo que no es tarea facil, pues impedir la edicion de
la celda sobre la marcha, como se puede hacer en un textbox de
userform, pej., creo que no es posible, al menos sin recurrir a
tecnicas mas complejas tipo eventos de aplicacion, APIs o no se muy
bien que (y, a lo mejor estoy diciendo una burrada. Si es asi me
encantaria que me sacarais de mi error)

pero si puede hacer que solo quede el 1er caracter escrito en la celda
al salir de ella y pasar a la siguiente al salir., se salga como se
salga,

para este caso,tambien podria valer algo asi:

Private Sub Worksheet_Change(ByVal Target As Range)
If Len(Target) > 0 Then _
Target = Left(Target, 1): _
Target.Offset(, 1).Select
End Sub

a ver que opina/comenta OP

un saludo
Ivan

PD: si alguien sabe (si es que es posible) como capturar los eventos
del teclado al escribir en una celda, o el cambio sobre la marcha (sin
tener que esperar a salir) seria de agradecer si nos lo comentara.
Gracias por anticipado.



Muchas gracias por vuestra respuesta. Lo que quiero en realidad es que
al escribir un caracter sin tener que presionar una tecla que marque
la salida se desplace una celda a la derecha, pues si quisiese que se
desplazase a la derecha al presionar la tecla intro, podría hacerlo
desde el menú Herramientas - Opciones - Modificar.

Alguien me ha comentado que lo que puedo hacer es que al escribir un
caracter en la celda, se active una macro que desplace el cursor de
celda a la derecha. Sabriais orientarme al respecto?

Un saludo
Respuesta Responder a este mensaje
#5 Ivan
21/07/2007 - 16:21 | Informe spam
hola,

Alguien me ha comentado que .. al escribir un caracter en la celda, se active una macro







te comento lo que yo creo, aunque cogelo con pinzas, y si alguien
puede confirmarlo o decirnos si estoy equivocado y como hacer lo que
pides, me uno a tu consulta. A ver si alguien se anima.

por lo que yo se (que en cualquier caso no es mucho y puedo estar
equivocado) lo que pides no es posible realizarlo, al menos con lo que
'podriamos considerar' macros de excel.

(creo que) excel no reconoce los cambios introducidos en una celda
hasta que se sale de ella (si te fijas,es lo mismo que cuando desde la
interfaz estas editando una celda, si le das a escape, la celda vuelve
a su estado original, como si en ningun momento se hubiera cambiado
nada, no dando por validos los cambios hasta salir de ella). En cierta
manera, creo que es una manera de prevenir errores.

por otro lado, tras buscar por el foro, me ha dado la impresion de que
quizas con algun metodo del objeto Application (OnKey, pej..) quizas
pudiera hacerse algo, pero si es asi, yo desde luego no lo he
conseguido en mis pruebas, aunque como soy un poco cabezon, seguire
probando y si veo algo te comento.

tambien es posible que se pueda realizar recurriendo a niveles de
programacion llamemosle 'superiores', lease llamadas a alguna API de
windows, quizas creando una clase y asignandole alguna propiedad o
creando algun evento (lo cual de poder hacerse, supongo que habria que
combinar con las APIs) que capturara las pulsaciones del teclado
mientras estas en la celda, para poder 'saber' que se ha realizado
algun cambio antes de salir de la celda.

en fin, como te digo, y salvo que este equivocado, formas todas ellas
que se salen de lo que solemos llamar 'simple' macro de Excel, aunque
en definitiva, probablemente no dejarian de serlo.

bueno, lo dicho, (con tu permiso) me sumo a tu consulta, y si alguien
puede sacarnos de dudas esperemos que se anime a hacerlo.

de todas formas te recomiendo que hagas unas busquedas con el buscador
del foro en google, cambiando los enunciados y eches un ojo a ver si
ves algo que te pueda servir.

un saludo y hasta pronto (y disculpa si te estoy liando mas que
ayudando)
Ivan
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida