This article was previously published under Q264707
This article has been archived. It is offered "as is" and will no longer be updated.
When a document contains a right-to-left table with form fields, the form fields are tabbed through from left-to-right when the document is protected as a form.
To work around this problem, use one of the following methods to move between form fields.
Method 1: Use SHIFT+TAB
Press SHIFT+TAB to move to the next form field, or press TAB to move to the previous form field.
Method 2: Use the Mouse
Click the mouse on the next form field that you want to move to.
Method 3: Use a Macro to Control the Tab Order
Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements. For more information about how to use the sample code in this article, clickthe article number below to view the article in the Microsoft Knowledge Base:
212536 OFF2000: How to Run Sample Code from Knowledge Base Articles
Use an exit macro that is assigned to a specific form field to specify which form field to go to next. To do this, follow these steps:
Open your Word form.
On the Forms toolbar, click Protect Form to unprotect the form.
On the Tools menu, point to Macro, and then click Visual Basic Editor (or press ALT+F11).
In the project for your forms document, insert a new code module. To insert a new module, click Module on the Insert menu.
At the top of the new module code sheet, create the following macro code:
Public Declare Function GetKeyboardState Lib "user32" _ (pbKeyState As Byte) As LongPublic Declare Function GetAsyncKeyState Lib "user32" _ (ByVal vKey As Long) As LongPublic Const VK_Tab = &H9Public Const VK_Shift = &H10
Create an exit macro for each of your form fields, similar to the following sample macro:
Sub ThisFieldName_Exit() Dim RealNext As Variable Dim RealPrev As Variable Dim TabState As Variable Dim ShiftState As Variable RealNext = ActiveDocument.FormFields("NextFieldName").Name RealPrev = ActiveDocument.FormFields("PreviousFieldName").Name TabState = GetAsyncKeyState(VK_Tab) ShiftState = GetAsyncKeyState(VK_Shift) If TabState Then If ShiftState Then Selection.GoTo What:=wdGoToBookmark, Name:=RealPrev Else Selection.GoTo What:=wdGoToBookmark, Name:=RealNext End If End IfEnd Sub
NOTE: In the individual macros, replace "ThisFieldName", "NextFieldName", and "PreviousFieldName" with the correct names of the current, the next, and the previous form field in logical (right-to-left) order. Create a macro for every form field that is located in a right-to-left table.
Assign the exit macros to each of your form fields. To do this, double-click a form field to display the Text Form Field Options dialog box. In the Exit list box (under Run macro on), select the corresponding macro, and then click OK.
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.
For more information about the right-to-left features in Word, click Microsoft Word Help on the Help menu, type right-to-left in the Office Assistant or the Answer Wizard, and then click Search to view the topics returned.