Orden de tabulación en una hoja (como si fuera un formulario)

17/02/2006 - 22:26 por ~ jose ~ | Informe spam
Hola, tengo una curiosidad,

Expongo el asunto:
Hay una hoja protegida y existen celdas "desbloqueadas" para poder
escribir en ellas.
Las celdas desprotegidas son:
B1,B2, D1,D2, F1,F2,
B4,B5, D4,D5, F4,F5,
Si nos situamos en B1 al pulsar el "tabulador" nos manda a D1
y si nos situamos en B1 y le damos al "enter" nos mandaria a B2

Se podria dar un orden a las celdas que quiero ir pulse el "enter" o el
"tabulador" indistintamente?
El orden por ejmeplo seria:
B1, B2, D1, D2, F1, F2, B4, B5, D4, D5, F4, F5

Esto que expongo sé que se puede hacer si fuera esto un formulario
pero en una hoja no se si se puede.

Venga un saludo
 

Leer las respuestas

#1 Héctor Miguel
18/02/2006 - 09:55 | Informe spam
hola, jose !

Hay una hoja protegida y existen celdas "desbloqueadas" para poder escribir en ellas.
Las celdas desprotegidas son: B1,B2, D1,D2, F1,F2, B4,B5, D4,D5, F4,F5,
Si nos situamos en B1 al pulsar el "tabulador" nos manda a D1 y... "enter" nos mandaria a B2
Se podria dar un orden a las celdas que quiero ir pulse el "enter" o el "tabulador" indistintamente?
El orden por ejmeplo seria: B1, B2, D1, D2, F1, F2, B4, B5, D4, D5, F4, F5 [...]



el siguiente ejemplo 'hace' los saltos de celda en el orden que indicas indistintamente del 'enter' o el 'tab' :))
es un codigo +/- 'largo' [pero estoy tratando de evitar la 'des-re-habilitacion' de los eventos] ;)
haria falta saber si -tambien- necesitas 'moitorear' los 'regresos' [cuando se pulsa mayus+enter o mayus+tab] -?-
[creo que] no seria dificil adaptarlo/recortarlo/... para otras necesidades 'similares' ;)
[probablemente] sera necesario 'mover' los codigos de re-asignacion de las teclas...
de -> los eventos '_open' y '_beforeclose' -> del libro ...
a -> los eventos '_activate' y '_deactivate' -> de 'esa' hoja -?-

si cualquier duda [o informacion adiiconal]... comentas ?
saludos,
hector.
=
1) en un modulo de codigo 'normal'
Option Private Module
Public misCeldas, dCelda As String, Actual As Byte, Saltar As Byte, Sig As Byte, nCelda As String
Sub SaltarCeldas()
Range(nCelda).Select
End Sub

2) en el modulo de codigo del libro [ThisWorkbook]
Private Sub Workbook_Open()
misCeldas = Array("b1", "b2", "d1", "d2", "f1", "f2", "b4", "b5", "d4", "d5", "f4", "f5")
With Application
misCeldas = .Transpose(.Transpose(misCeldas))
.OnKey "~", "SaltarCeldas": .OnKey "{enter}", "SaltarCeldas": .OnKey "{tab}", "SaltarCeldas"
End With
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application: .OnKey "~": .OnKey "{enter}": .OnKey "{tab}": End With
End Sub

3) en el modulo de eventos de 'esa' hoja
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
dCelda = LCase(Target.Cells(1).Address(0, 0))
For Sig = 1 To UBound(misCeldas)
If dCelda = misCeldas(Sig) Then Actual = Sig: Exit For
Next: If Actual = UBound(misCeldas) Then Saltar = 1 Else Saltar = Actual + 1
nCelda = misCeldas(Saltar)
End Sub

Preguntas similares