★★★★★★Access2000VBA・Excel2000VBA独学~★「TABで」じゃなくて「全部Enterで」右の列へ移動し、(列の最右端を自動判別して)「一番右端の列にきたら、Enterキーを押したときに、自動的に次行に移り、アクティブセルを先頭へ移動させるVBAプログラム(テンキー用?かも)~
  
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
  
★ Enterキーを押したときに、アクティブセルを下へ移動させるボタンのマクロ内容
以下のコードを、クイックアクセスツールバーやリボンにボタンとして登録します。
※Worksheet_DeactivateやWorksheet_Activateイベントに書いてもOKです。
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						' ' Private Sub EnterToDown()   Application.MoveAfterReturn = True   Application.MoveAfterReturnDirection = xlDown End Sub ' '  | 
					
★ Enterキーを押したときに、アクティブセルを右へ移動させるボタンのマクロ内容
こちらも以下のコードを、クイックアクセスツールバーやリボンにボタンとして登録します。
※こちらもWorksheet_DeactivateやWorksheet_Activateイベントに書いてもOKです。
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						' ' Private Sub EnterToRight()   Application.MoveAfterReturn = True   Application.MoveAfterReturnDirection = xlToRight End Sub ' '  | 
					
★ 表の、列名の終端を自動判別して、一番右端の列にきたら、Enterキーを押したときに、自動的に次行に移り、アクティブセルを先頭へ移動させるVBA内容
入力中の各シートのWorksheet_SelectionChangeイベントに書くなどします。
あるいは標準モジュールに関数化して呼び出してもいいかもしれません。
全部Enterキーで右に移動して・かつ・右端にきたらEnterで自動で折り返すには、事前に「EnterToRight()」を実行しておく必要があります。
逆に、全部TABキーで右に移動し、次行の折り返しもTABキーでいいなら、何もする必要はありません。
使いたくない時はコメントアウトするか、ON・OFFできるように作り変えてみてください。
例えばON・OFFできるようにしたいなら、グローバル変数を1つ用意して、ボタンを押したらそれに「1」が入るようにし、以下のコードを、「1」の時しか動かないようにする・・・・みたいな感じで、できるかもしれません。
なお、表の最右端の判別には、「Worksheet.UsedRangeプロパティ」をベースにして判別しているので、もし意図しない動きだったら、「Worksheet.UsedRangeプロパティ」ベースでの判別のかわりに、ご自分の望む判別方法に書き換えてください。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60  | 
						' ' '###################################################################### '表の右端まで行ったら改行するコード。 ' '※シート内に表が1つだけの場合にしか使えません。 ' シートに最低限、1つの列名を作ってからこのコードを貼り付けてください。 ' 列の増加については、オートフィルで列名の入った領域を ' 右に伸ばしてから、列名を調整してください。 ' あるいは、表の2、3列外側で列名を入力したのち ' その列をShiftキーを押しながら目的の位置に移動してください。 ' (表の右端の列にセルが移動すると先頭の列に戻ってしまうため) '###################################################################### Private Sub Worksheet_SelectionChange(ByVal Target As Range)     Dim i_RgtEndClmn01 As Integer '表の右端の列の位置を格納するための変数     'イベントの発生を一時中断する。     'これしておかないと一気に100行移動してしまうので。     Application.EnableEvents = False     '表の右端の列の番号(つまり表の右端の列の位置)を取得する。     i_RgtEndClmn01 = ActiveSheet.UsedRange.Columns.Count     '●メイン処理     '表の右端まで行ったら改行する。     If TypeName(Selection) = "Range" Then         'もし選択されているものがRangeオブジェクトなら         '以下の処理         If Selection.Column = i_RgtEndClmn01 + 1 Then             'もしセルが、             '表の右端の次の列に移動したら次の処理             '一行下がって、先頭の列へ選択を移動。             ActiveCell.Offset(1, 0 - i_RgtEndClmn01).Select         Else             'それ以外は何もしないで次へ。         End If     Else         '選択されたものがRangeオブジェクトじゃなかったら         '何もしないで次へ。     End If     'イベントの発生を再開させる。     Application.EnableEvents = True End Sub ' '  | 
					
  
  
  
  
  
  
- 投稿タグ
 - 「ニセモノ」への道, 「本物」に近づくために, AccessVBA, Accessの独学, Access操作の基礎, Accesの独学, ADO/DAO, ExcelSQL, ExcelVBA, Excelの独学, Excel操作の基礎, Excel連携VBA, MicrosoftQuery, ODBC, SQL, パソコンでの自動化, マクロ, 独学, 自動化