2010-08-08 29 views
0

J'ai une colonne comme suit:Personnaliser le flux du curseur/direction sur pression entrer dans la grille feuille de calcul/tableau Excel à l'aide d'Excel VBA

Column A---------------Column B 
100 ----------------- 500 
200 ----------------- 600 
AA ----------------- ABCD 
BB ----------------- DEFG 
CC ----------------- FF 
DD ----------------- GG 
EE -----------------II 
300 ----------------- 700 
400 ----------------- 800 

Je veux que le curseur soit présent à l'emplacement de la cellule de « AA » à tous les moments où la feuille de calcul est ouverte et quand elle atteint "DD", elle devrait aller à "ABCD" au lieu d'aller à la cellule 300.

Ceci est une version simplifiée d'un plus gros problème. J'ai plusieurs colonnes. J'ai besoin d'un code Visual Basic dynamique plutôt que de hardcoing le même.

+0

Quelqu'un peut-il me s'il vous plaît aider? – Rocky

Répondre

0

L'indice est des événements de feuille de calcul d'utilisation:

  • Cliquez sur Ctrl + R (Project Explorer) et cliquez sur la feuille de calcul pour afficher le code de feuille de calcul.
  • Sélectionnez l'événement approprié (Activer ou SELECTION_CHANGE) dans la zone de liste déroulante en haut à droite
  • Placez le code entre Private Sub End Sub .... dans l'événement
  • Mettez seule la déclaration de variable avant que les codes d'événement.

Le code est illustré ci-dessous

Option Explicit 
Const LBeg = 5 ' Line and column top left edit area 
Const CBeg = 1 
Const LEnd = 8 ' Line and column bottom right edit area 
Const CEnd = 2 
Public LCurr As Long 
Public CCurr As Integer 

' In every worksheet activation 
Private Sub Worksheet_Activate() 
Application.EnableEvents = False 
LCurr = LBeg ' goes to top left cell 
CCurr = CBeg 
Cells(LBeg, CBeg).Select 
Application.EnableEvents = True 
End Sub 

' In every change of selection inside this worksheet 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Application.EnableEvents = False 

'***************************************************** 
' When current cell reach last edit line, 
' goes to first line of edit area in the next column. 
' When reach last column edit area resumes to 
' first column in edit area 
'***************************************************** 

If LCurr = LEnd Then 
    If CCurr < CEnd Then 
    LCurr = LBeg 
    CCurr = CCurr + 1 
    Else 
    LCurr = LBeg 
    CCurr = CBeg 
    End If 
    Cells(LCurr, CCurr).Select 
End If 

LCurr = Target.Row 
CCurr = Target.Column 
Application.EnableEvents = True 
End Sub