Excelノート 8-1 移動・ジャンプ

HOME  検索  索引  もくじ  関数目次ージへ        次ページへ

タイトル欄のアドレスは、エクセルファンクラブの該当する頁へのリンク先です。
詳しい事は、こちらの
お願いをご覧になってください。

1  指定したセルが左上の位置にくるようにするには?
2  データを入力した後、同じセル内でカーソルを矢印で左に移動するには
3  Enterを押した時に移動するセルを変えたい
4  A1セルをクリックすると別シートの範囲が表示されるようにしたい
5  一覧から目当てのシートを選択して、簡単にそのシートにジャンプ
6  シート1のセルの内容と同じシート2のセルの場所にジャンプするには
7  Enterを押した時に移動する方向を変えるには
8  シートの並びを移動するには?
9  特定のセルでエンターした時、他のセルにジャンプするには
10 同一シート内の一致するセルにジャンプするには?
11 指定した列数になるよう、下の行にデータを移動するには?
12 ハイパーリンクで別のファイルのシートのセルを指定するには?
13 Enterを押したとき任意のセルに移動させ、シートごとに設定を変えたい。
14 フォルダ内の全てのエクセルファイルを移動するには?
15 OnKeyメソッドのマクロを、他のシート、他のファイルで実行させない為には
16 ボタンで他のシートに移動するには?
17 セル幅を超える文字列を下のセルに移動するには?
18 Enterを押した時、指定の列だけ移動するには?
19 セルを選択したとき、数式にある参照元のセルに移動(ジャンプ)するには?
20 当月・前月・次月のシート、セルに移動するには?

1 指定したセルが左上の位置にくるようにするには?
Sub Test()
 Application.Goto Range("S10"), True
End Sub

Goto メソッドの第2引数に True を指定すると、指定したセルが画面左上にきます。
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
2 データを入力した後、同じセル内でカーソルを矢印で左に移動するには
Excel97、Excel2000 共通
データを入力する時には、下記の2つのモードがあります。
 1.入力モード
 2.編集(修正)モード
最初にデータを入力する時は、「1.入力モード」の状態にあります。
これらを切りかえるには、[F2]キーを押下してください。
キー操作(Function_Key等)に関しては、[ヘルプ]−[トピック検索]−「キーワード」に、
『キー』と入力し表示すると、色んな操作方法が表示されます。
3 Enterを押した時に移動するセルを変えたい
 指定の列(例えばE列)までEnterで移動したら、1行下の指定の列(例えばA列)に移動
http://www.keep-on.com/~excelyou/2000lng1/200005/00050011.txt
  「Enterを押した時に移動するセルを変えたい」 【編集】
Excel97、Excel2000、Excel2002 共通
入力する範囲を選択する方法。(反転させたままにしておく) 
ツール、オプション、編集で入力後にセルを移動する方向を右にしておきます。
A1をアクティブにしておいて、A列からE列まで、ドラッグして選択します。
そのまま入力すると、入力した後Enterを押した時右へ移動しますが、
選択範囲(E列)の右端に来た次は、1行下の左端に移動します。
Excel97、Excel2000、Excel2002 共通
スロールエリアを設定する方法
 
1. 該当するシートのタブを右クリック、【コードの表示】
 2. メニューの、【表示】【プロパティウィンドウ】
   出てきたプロパティの、【ScrollArea】に、たとえば、A:J と入力します。
 3. 右上の×で、Excelに戻ります。
マクロでスロールエリアを設定する方法
 
Sub test()
   ActiveSheet.ScrollArea = "1:20"  
 '1行目から20行目までで折り返します。
 End Sub

 Sub test()
   ActiveSheet.ScrollArea = "A:J"    
'A列からJ列までで折り返します。
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。

上のコードだと、ファイルを閉じると元に戻ってしまいます。
常に設定を維持する場合は、以下のコードで。
 Private Sub Workbook_Open()
  Sheets("Sheet1").ScrollArea = "1:20"
 End Sub

  このコードの使い方は、マクロの使い方(3)This Workbookのモジュールにあります。
元に戻すには以下です。
 
Sub test2()
  ActiveSheet.ScrollArea = ""
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。

マクロでスロールエリアを設定する方法
Sub スクロール範囲限定()
 Dim M As Object
 Set M = Application.InputBox(prompt:="スクロールを限定したい範囲を選択してください", Type:=8)
 ActiveSheet.ScrollArea = M.Address
 M.Interior.ColorIndex = 8
End Sub
Sub スクロール範囲限定解除()
  Dim EREA As String
  EREA = ActiveSheet.ScrollArea
 ActiveSheet.ScrollArea = ""
 Range(EREA).Interior.ColorIndex = xlNone
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
イベントマクロの方法。下記のマクロを該当するシートに貼り付けてください。
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
 If Target.Column <> 6 Then Exit Sub
   Application.EnableEvents = False
   Target.Offset(1, -5).Select
 Application.EnableEvents = True 
End Sub
※ 6を7にすると、Fで移動する。 1を2にすると、2行改行する。
-5を-4にするとBに移動する。

  このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。
OnKeyメソッドを使ったマクロの方法
標準モジュールに登録(全てのシートに適用する場合)
 
Sub 折り返し開始()
  Application.OnKey "~", "折り返し機能設定"
  Application.OnKey "{ENTER}", "折り返し機能設定"
 End Sub
 Sub 折り返し機能設定()
  Dim 折返列 As Integer, 開始列 As Integer
  折返列 = 5
  開始列 = 1
  If ActiveCell.Column = 折返列 Then
   ActiveCell.Offset(1, 開始列 - 折返列).Select
  Else
   ActiveCell.Offset(0, 1).Select
  End If
 End Sub
 Sub 折り返し解除()
  Application.OnKey "{ENTER}"
  Application.OnKey "~"
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
尚、このマクロでは実行すると解除するまで、あるいはExcelを終了するまで、
他のシート・他のファイルにまで適用されてしまいます。
それに関しては、こちらをご覧下さい。
Sub 折り返し開始()
 Application.OnKey "~", "S_os"
 Application.OnKey "{Enter}", "S_os"
End Sub
Sub 折り返し解除()
  Application.MoveAfterReturn = True
  Application.OnKey "{ENTER}"
  Application.OnKey "~"
End Sub

Private Sub S_os()
 Dim myColumn As Integer
 myColumn = ActiveCell.Column
   If myColumn = 5 Then             
'E列の場合
  ActiveCell.Offset(1, -4).Select         
'1行下の、4つ左のセルに移動
 Else                          
'E列でない場合
  ActiveCell.Offset(0, 1).Select          
'1つ右のセルに移動
 End If
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
尚、このマクロでは実行すると解除するまで、あるいはExcelを終了するまで、
他のシート・他のファイルにまで適用されてしまいます。
それに関しては、こちらをご覧下さい。
4 A1セルをクリックすると別シートの範囲が表示されるようにしたい
Excel97
1.シート2のA1〜B15を選択して、適当な名前を定義する。
  (名前ボックスに適当な名前を入力すればOK)
2.そのブックを保存する。
3.シート1のセルA1を選択し、[挿入]-[ハイパーリンク] 
  (またはツールバーの[ハイパーリンクの挿入]をクリック)
4.[ファイル内の位置]の[参照]をクリックし、定義名で先程定義した名前を選択し、[OK]。
Excel2000
1.シート2のA1〜B15を選択して、適当な名前を定義する。
  (名前ボックスに適当な名前を入力すればOK)
2.挿入、ハイパーリンク、ブックマーク、定義された名前を選択します。
5 一覧から目当てのシートを選択して、簡単にそのシートにジャンプ
http://www.keep-on.com/~excelyou/2000lng1/200005/00050079.txt
  「目当てのシートに簡単にジャンプするには?」 【編集】
Excel97、Excel2000 共通
シート見出しの左にある矢印のボタンを右クリックし
表示されたシート一覧のシート名をクリック
Excel2000
[挿入]−[ハイパーリンク]−[このドキュメント内]という項目で、
同一book内を指定してリンクを貼る
Excel97
[挿入]−[ハイパーリンク]−[ファイル内の位置]で、参照を設定します。
目次用シートを作成し、目次をクリックした時に該当シートにジャンプ
目次用シートに貼ります。
一覧から目当てのシートを選択して右クリックすると、選択したシートに飛びます。
 Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, _
  Cancel As Boolean)
  On Error Resume Next
  Sheets(Target.Value).Activate: Cancel = True
 End Sub

  このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。

ThisWorkbookをクリックして貼ります。
選択した移動先のシートのA1セルを右クリックすると、目次用シートに戻ります。
 Private Sub Workbook_SheetBeforeRightClick _
   (ByVal Sh As Object, ByVal Target As Excel.Range, Cancel As Boolean)
  If Target.Address = "$A$1" Then Sheets("目次用").Select: Cancel = True
 End Sub

  このコードの使い方は、マクロの使い方(3)This Workbookのモジュールにあります。

目次用シートに追加で貼ります。
一覧のセル範囲が、B列2行から30行までとした場合に、シート名の自動更新をします。
 Private Sub Worksheet_Activate()
  Dim objWS As Worksheet
  Dim bytRow As Byte
  bytRow = 2
  Range(Cells(2, 2), Cells(30, 2)).ClearContents
  For Each objWS In ActiveWorkbook.Worksheets
   If objWS.Name <> "目次用" Then
    Cells(bytRow, 2).Value = objWS.Name
    bytRow = bytRow + 1
   End If
  Next
 End Sub
  このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。

6 シート1のセルの内容と同じシート2のセルの場所にジャンプするには
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200101/01010108.txt
  「任意のセルをクリックして、他シート(リスト)の共通の場所へ移動するには」 【VBA】
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If IsEmpty(Target) Then Exit Sub
  Dim MyRng As Range
  Set MyRng = Worksheets("Sheet2").UsedRange._
                     Find(Target.Value, LookIn:=xlValues, LookAt:=xlWhole)
 If MyRng Is Nothing Then
  MsgBox Target.Value & " が見つかりません。", vbExclamation
 Else
  Application.Goto MyRng
 End If
 Cancel = True
End Sub

  このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。
Sheet1の、現在アクティブなセル以外をクリックすると、Sheet2のA列の該当するセルに
ジャンプします。
 Option Explicit
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim i As Long, j As Variant, LastRow As Long
  With Worksheets("Sheet2")
  LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
  j = ActiveCell.Value
  If j = "" Then Exit Sub
   For i = 1 To LastRow
    If .Cells(i, 1) = j Then
     .Activate
     .Cells(i, 1).Select
     Exit Sub
    End If
   Next
  End With
 End Sub

  このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。
Sub ジャンプ() 
 Dim Target As Variant, j As Long
  If Not ActiveSheet.Name = "Sheet1" Then
   MsgBox "Sheet1がアクティブではありません", vbCritical
  Exit Sub 
 End I f
 Target = ActiveCell.Value
 If Target = "" Then
  MsgBox "検索元が空白です", vbCritical
  Exit Sub
 End If
 On Error Resume Next
  With Worksheets("Sheet2")
   j = .Range("A:A").Find(Target).Row   
'1列目を検索して、該当セルの行を格納
   If Err.Number = 0 Then
    .Activate
    .Cells(j, 1).Select
    Else
    MsgBox "該当セルがありません", vbExclamation
   End If
  End With
 End Sub

   このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
7 Enterを押した時に移動する方向を変えるには
http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200101/01010003.txt
  「このファイルだけEnerキーを右にしたいのですが」 【編集】
現在の移動方向が、右の場合は下に、下の場合は右に変更します。
 Sub test()
  Application.MoveAfterReturnDirection = _
  IIf(Application.MoveAfterReturnDirection = xlDown, xlToRight, xlDown)
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
Sub 右方向()
 Application.MoveAfterReturnDirection = xlToRight
End Sub
Sub 下方向()
 Application.MoveAfterReturnDirection = xlDown
End Sub
Sub 左方向()
 Application.MoveAfterReturnDirection = xlToLeft
End Sub
Sub 上方向()
 Application.MoveAfterReturnDirection = xlUp
End Sub
Sub 停止()
 Application.MoveAfterReturn = False
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
8 シートの並びを移動するには?
Moveメソッドを使用すればシートの移動が出来ます。
引数: Beforeを指定すれば指定したシートの前に
引数: Afterを指定すれば指定したシートの後にそれぞれ移動します。
 Sub Test()
  ActiveSheet.Move Before:=Sheets(1)
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
9 特定のセルでエンターした時、他のセルにジャンプするには
http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200110/01100044.txt
  「セルの移動を制限したいのですが」 【編集】
http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200103/01030182.txt
  「アクティブセルの移動順」 【編集】
Excel97、Excel2000 共通
A1と、D6と、C10だけをエンターで移動する場合、
まずD6を選択し、Ctrlを押しながら、C10、A1を選択すると、
エンターを押した時、A1
D6 C10と、移動します。
指定のセルのみ移動開始のマクロを実行すると、
エンターを押した時、C5→C6→J6→R6→C18→H18→C5という順番で移動します。
移動解除を実行すると、元に戻ります。
 Sub 指定セルのみ移動開始()
  Application.OnKey "~", "移動設定"      
'エンターキーを押した時移動設定のマクロを実行
  Application.OnKey "{ENTER}", "移動設定" 
'テンキーのエンターキーを押した時実行
 End Sub
 Sub 移動設定()
  With ActiveCell
   Select Case .Address(False, False)
    Case "C6"  
'C6セルがアクティブな場合:下へ0行、右へ7列移動
     .Offset(0, 7).Select
    Case "J6" 
'J6セルがアクティブな場合:下へ0行、右へ8列移動
     .Offset(0, 8).Select
    Case "R6"  
'R6セルがアクティブな場合:下へ12行、左へ15列移動
     .Offset(12, -15).Select
    Case "C18" 
'C18セルがアクティブな場合:下へ0行、右へ5列移動
     .Offset(0, 5).Select
    Case "H18"  
'H18セルがアクティブな場合:上へ13行、左へ5列移動
     .Offset(-13, -5).Select
    Case Else  
'それ以外がアクティブな場合:下へ1行、右へ0列移動
     .Offset(1, 0).Select
   End Select
  End With
 End Sub
 

 Sub 移動解除()
  Application.MoveAfterReturn = True
  Application.OnKey "{ENTER}"
  Application.OnKey "~"
 End Sub

  このコードの使い方は、
マクロの使い方(1)標準モジュールにあります。
尚、このマクロでは実行すると解除するまで、あるいはExcelを終了するまで、
他のシート・他のファイルにまで適用されてしまいます。
それに関しては、こちらをご覧下さい。
10 同一シート内の一致するセルにジャンプするには?
http://www.keep-on.com/~excelyou/2000lng4/200010/00100362.txt
  「一致するセルにジャンプするには?」 【VBA】
A1のセルに、例えば「50」と入力してEnterを押したら、A2以降の「50」と入ったセルにジャンプします
 Private Sub Worksheet_Change(ByVal Target As Range)
  Dim myRange As Range, i As Long
  With Target
   If .Address = "$A$1" Then
    Set myRange = Range(Cells(2, 1), Cells(65536, 1).End(xlUp))
    On Error Resume Next
    i = WorksheetFunction.Match(.Value, myRange, 0)
    If Err.Number = 0 Then
      myRange(i).Select
     Else
      MsgBox "見つかりませんでした"
      .Select '不要なら消してね
    End If
   End If
  End With
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
11 指定した列数になるよう、下の行にデータを移動するには?
http://www.keep-on.com/~excelyou/2000lng1/200010/00100207.txt
  「指定した列数に改行するには?」 【編集】
1行目の4列以上のデータを、3列に収まるように2行目以降に移動します。
Sub test()
 Dim i As Integer
 Application.ScreenUpdating = False
 For i = 4 To Cells(1, Columns.Count).End(xlToLeft).Column Step 3
  Range(Cells(1, i), Cells(1, i + 2)).Cut _
  Cells(Rows.Count, 1).End(xlUp).Offset(1)
 Next i
 Application.ScreenUpdating = True
End Sub

  このコードの使い方は、
マクロの使い方(1)標準モジュールにあります。
Excel97、Excel2000 共通
sheet1にある A1:I1 のデータを他のシートの A1:C3 に展開するには
 
=INDEX(Sheet1!$A$1:$I$1,1,3*ROW()+COLUMN()-3)
とA1に入れて、下及び右方向(A1からC3)へコピーします。
Excel97、Excel2000 共通
例えば…… A1 から I1 の内容を、A1〜C3 移動する場合
1. A1からI1までコピーして、メモ帳に貼り付ける。
2. メモ帳で3項目ずつ改行し、Excelに貼り付ける。
12 ハイパーリンクで別のファイルのシートのセルを指定するには?
Excel97
 
1. 【挿入】、【ハイパーリンク】で、【リンク先のファイル】欄の、【参照】で、目当てのファイルを指定 。
 2. 前の画面に戻り、【ファイル内の位置】欄の、【参照】で、シート、セルを入力します。
Excel2000
 1. 【挿入】、【ハイパーリンク】で、ファイル名を指定するか、リストから目当てのファイルを選択。
 2. 【ブックマーク】、シートを選んで、セル番地を入力します。
13 Enterを押したとき任意のセルに移動させ、シートごとに設定を変えたい。
http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200103/01030182.txt
  「アクティブセルの移動順」 【編集】
http://cgi.fuji.ne.jp/~fj2094/cgi-bin2/wwwlng.cgi?print+200105/01050064.txt
  「飛ぶ」 【その他】
【移動開始1】【移動設定1】は、設定するシートの数だけ必要です。
Sub 移動開始1()
  Application.OnKey "~", "移動設定1" 
 'エンターキーを押した時移動設定のマクロを実行
  Application.OnKey "{ENTER}", "移動設定1" 
'テンキーのエンターキーを押した時実行
End Sub
Sub 移動設定1()
  With ActiveCell
   Select Case .Address(False, False)
    Case "C6"  'C6セルがアクティブな場合:下へ0行、右へ7列移動
     .Offset(0, 7).Select
    Case "J6"  'J6セルがアクティブな場合:下へ0行、右へ8列移動
     .Offset(0, 8).Select
    Case Else  'それ以外がアクティブな場合:下へ1行、右へ0列移動
     .Offset(1, 0).Select
   End Select
  End With
End Sub 
Sub 移動解除()
  Application.MoveAfterReturn = True
  Application.OnKey "{ENTER}"
  Application.OnKey "~"
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
Private Sub Workbook_Activate()
 If ActiveSheet.Name = "Sheet1" Then Call 移動開始1
End Sub

Private Sub Workbook_Deactivate()
 Call 移動解除
End Sub

  このコードの使い方は、マクロの使い方(3)This Workbookのモジュールにあります。
Sub 設定()
 Application.OnKey "{ENTER}", "OnEnter"
 Application.OnKey "~", "OnEnter"
 End Sub
Sub 解除()
 Application.OnKey "{ENTER}"
 Application.OnKey "~"
End Sub
Private Sub OnEnter()
 Dim vntAry As Variant
 Dim vntPos As Variant
 'ここで、シート別の設定を、対象シートの数だけ記述してください。
 Select Case ActiveSheet.Name
  Case "Sheet1" 'Sheet1がアクティブな場合
   vntAry = Array(Array("A7", "B1"), Array("B1", "C8"), Array("C8", "D1"))
  Case "Sheet2" 'Sheet2がアクティブな場合
   vntAry = Array(Array("A10", "B1"), Array("B1", "C11"), Array("C11", "D1"))
  Case Else
  '上記以外のシートでは何もしない
 End Select
 If IsArray(vntAry) Then
  For Each vntPos In vntAry
   If vntPos(0) = ActiveCell.Address(False, False) Then
    Range(vntPos(1)).Activate
    Exit Sub
   End If
  Next vntPos
 End If
 If Application.MoveAfterReturn Then
  On Error Resume Next
  Select Case Application.MoveAfterReturnDirection
   Case xlToLeft
    ActiveCell.Offset(0, 1).Activate
   Case xlToRight
    ActiveCell.Offset(0, -1).Activate
   Case xlUp
    ActiveCell.Offset(-1, 0).Activate
   Case xlDown
    ActiveCell.Offset(1, 0).Activate
  End Select
  On Error GoTo 0
 End If
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
14 フォルダ内の全てのエクセルファイルを移動するには?
C:\My documents\test2 のフォルダ内の、全てのエクセルファイルを "
C:\My documents\test1 のフォルダに移動します。
Sub 全ファイル移動()
 Dim fs
 Set fs = CreateObject("Scripting.FileSystemObject")
 fs.movefile "C:\My documents\test1\*.xls", "C:\My documents\test2\"
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
15 OnKeyメソッドのマクロを、他のシート、他のファイルで実行させない為には
OnKeyメソッドを使ったマクロでは、開始を実行すると終了するまで、
あるいはExcelを終了するまで、他のシート・他のファイルにまで適用されてしまいます。
該当するシート・またはファイルのみ実行したい場合、次のコードを追加します。
このコードを追加した場合、開始を実行する必要はありません。
書き込んで、該当するシートを選択するだけで実行します。
状況に応じて使い分けてください。

【開始1】シートがアクティブになったら実行します
     ただし、他のファイルから選択してアクティブになった場合は実行されません。

 Private Sub Worksheet_Activate()
  Call 開始
 End Sub

  このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。
終了1】シートがアクティブでなくなったら、実行を解除します。
     ただし、他のファイルを選択してアクティブでなくなった場合は解除されません。

 Private Sub Worksheet_Deactivate()
  Call 終了
 End Sub

  このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。

【開始2】ブックがアクティブになったら実行します。
     他のファイルから選択してアクティブになった場合も実行します。

 Private Sub Workbook_Activate()
  Call 開始
 End Sub

  このコードの使い方は、マクロの使い方(3)This Workbookのモジュールにあります。
【終了2】ブックがアクティブでなくなったら、実行を解除します。
     他のファイルを選択してアクティブでなくなった場合も解除されます。
 Private Sub Workbook_Deactivate()
  Call 終了
 End Sub

  このコードの使い方は、マクロの使い方(3)This Workbookのモジュールにあります。
【開始3】ブックがアクティブになったらSheet1でのみ実行します
     他のファイルから選択してアクティブになった場合も実行します。
 Private Sub Workbook_Activate()
  If ActiveSheet.Name = "Sheet1" Then Call 開始
 End Sub

  このコードの使い方は、マクロの使い方(3)This Workbookのモジュールにあります。
16 ボタンで他のシートに移動するには?
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200107/01070110.txt
  「ボタン一発でシート1のA1セルにもどるには?」 【VBAラウンジ】
【ツール】【ユーザー設定】【ツールバー】で、【コントロールツールボックス】にチェックを入れ、
出てきたツールボックスの【ボタン】をクリックして、シートの任意の場所に配置します。
 Private Sub CommandButton1_Click()
  Application.Goto Sheets("Sheet1").Range("A1")
 End Sub

  このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。
17 セル幅を超える文字列を下のセルに移動するには?
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200108/01080162.txt
  「セル幅を越える文字列ははみ出す文字から次の行に表示するには?」 【VBAラウンジ】
プロポーショナルフォント以外(MS 明朝、MS ゴシック)で実行してください。
 Sub Test文字分割02()
     Dim i As Integer, j As Integer
     Do
         j = Len(ActiveCell.Value)
         For i = 1 To j
             If LenB(StrConv(Left(ActiveCell.Value, i), vbFromUnicode)) > _
                                       Int(ActiveCell.ColumnWidth) Then                 
                 ActiveCell.Offset(1).Activate
                 ActiveCell.Value = Mid(ActiveCell.Offset(-1).Value, i, j - i + 1)
                 ActiveCell.Offset(-1).Value = Left(ActiveCell.Offset(-1).Value, i - 1)
                 Exit For
             End If
         Next
     Loop Until LenB(StrConv(ActiveCell.Value, vbFromUnicode)) _
                                  <= Int(ActiveCell.ColumnWidth)
 End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
18 Enterを押した時、指定の列だけ移動するには?
商品名 1月売上高 2月売上高 3月売上高 4月売上高
ラ・フランス

298

553    
豊水 454 564    
白鳳 533 353    
ふじ 88 722    
巨峰 123 651    

「指定の列のみ移動」を実行すると、上の表のように指定した列を塗りつぶし、
その間だけEnterで移動します。それ以外の塗りつぶしは解除してしまいます。

Sub 指定の列のみ移動()
 Dim a As String, b As String
 Cells.Interior.ColorIndex = xlNone
 a = Application.InputBox(Prompt:="左側の列番号を入力してください", Default:="A", Type:=2)
 b = Application.InputBox(Prompt:="右側の列番号を入力してください", Default:="E", Type:=2)
 Columns(a).Interior.ColorIndex = 8
 Columns(b).Interior.ColorIndex = 6
 Application.OnKey "~", "移動設定" 'エンターキーを押した時移動設定のマクロを実行
 Application.OnKey "{ENTER}", "移動設定" 'テンキーのエンターキーを押した時実行
End Sub

Sub 移動設定()
 Dim i As Integer
 With ActiveCell
  If .Interior.ColorIndex = 8 Then
   For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
    If Cells(1, i).Interior.ColorIndex = 6 Then
     .Offset(0, i - .Column).Select
     Exit For
    End If
   Next
  ElseIf .Interior.ColorIndex = 6 Then
   For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
    If Cells(1, i).Interior.ColorIndex = 8 Then
     .Offset(1, -.Column + i).Select
     Exit For
    End If
   Next
  Else: .Offset(0, 1).Select
  End If
 End With
End Sub

Sub 移動解除()
 Application.MoveAfterReturn = True
 Application.OnKey "{ENTER}"
 Application.OnKey "~"
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
  実行するマクロの名前は、
「指定の列のみ移動」を選択してください。

19 セルを選択したとき、数式にある参照元のセルに移動(ジャンプ)するには?
http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200202/02020105.txt
  「ボタン一発でシート1のA1セルにもどるには?」 【VBAラウンジ】
=Aシート!A9 
のような他シートを参照した数式が入ったセルを選択すると参照元セルにジャンプします

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
 Dim s1 As String, s2 As String, Lp As Integer

 On Error Resume Next

 
'選択したセルの数式で最初に!の文字が使われている位置を返します
 Lp = InStr(1, Target.Formula, "!", 1)
 If Lp = 0 Then Exit Sub
                    '!が使われていない場合は、処理終了
 s1 = Mid(Target.Formula, 2, Lp - 2)              
'数式の中の、シート名を取得
 s2 = Right(Target.Formula, Len(Target.Formula) - Lp)
  '数式の中の参照セル番地を取得
 Application.Goto Sheets(s1).Range(s2)
           '参照セルにジャンプ
End Sub
  このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。
=Aシート!A9 
のような他シートを参照した数式が入ったセルを選択すると参照元セルにジャンプします
参照元シートは、いちばん左側に表示します。

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
 On Error Resume Next
 If Target.Column = 4 Then
 With Sheets(1)            
'一番左側のシートが対象です
  Application.Goto .Range(Right(Target.Formula, Len(Target.Formula) - Len(.Name) - 2))
 End With
 End If
 On Error GoTo 0
End Sub

  このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。
おまけです(^^ゞ シート名を指定した場合のコードです
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
  Dim s As String
  On Error Resume Next
  s = Mid(Target.Formula, 7, Len(Target.Formula) - 6)  
'左から7文字目以降の文字を取得 
  If Target.Column = 4 Then                    
 '選択したセルが4列目(D列)の場合
    Application.Goto Sheets("Aシート").Range(s)  
      'Aシートのsのセルにジャンプ
  End If
End Sub

  このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。
20 当月・前月・次月のシート、セルに移動するには?
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200205/02050079.txt 
 「作業日に該当する特定のSheetを呼び出せますか」 【VBAラウンジ】
Sub 当月セル選択()
 '現在のシート内の、当月の値のセルを選択
 Cells.Find(What:=Format$(Month(Date)) & "月", LookAt:=xlPart).Select
End Sub
Sub 前月セル選択()
 '現在のシート内の、前月の値のセルを選択
 Cells.Find(What:=Format$(Month(Now())) - 1 & "月", LookAt:=xlPart).Activate
End Sub
Sub 次月セル選択()
 '現在のシート内の、次月の値のセルを選択
 Cells.Find(What:=Format$(Month(Now())) + 1 & "月", LookAt:=xlPart).Activate
End Sub
Sub 当月シート選択()
 Worksheets(Format$(Month(Date)) & "月").Select
End Sub
Sub 前月シート選択()
 Worksheets(Format$(Month(Now())) - 1 & "月").Select
End Sub
Sub 次月シート選択()
 Worksheets(Format$(Month(Now())) + 1 & "月").Select
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。

HOME  検索  索引  もくじ  関数目次ージへ        次ページへ

このページのTOPへ

 

 

 

 

 

 

inserted by FC2 system