• ベストアンサー

EXCEL VBA セルの移動に変数を・・・ 

VBAを使って    ・    ・    ・   Case "$H$4" Range("D5").Select Case "$H$5" Range("D6").Select  と書き 「H4のセルまで行けばD5へ、H5のセルまで行けばD6へ」といったようにだんだん下へセルが下がっていくように作成していたのですが必要な行が増えてきて、1行ずつ書いていくことが難しくなり、変数を使いたいのですが使い方が分かりません。 分かる方、意見を下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 「H4のセルまで行けばD5へ、H5のセルまで行けばD6へ」 というのが、どういう状況なのか良く分りませんし、私は、なぜ、変数を使うのか、全体が見えていないので、良くわかりません。 「H4のセルまで行けば」が何かの行為なのか分りませんが、ENTERならば、以下のようなのが一般的です。まだ、別に ActiveSheet.ScrollArea を使う方法もあります。 '<標準モジュール> Sub KeysSetting() '設定用 With Application   .OnKey "{ENTER}", "SelectMoving"   .OnKey "~", "SelectMoving" End With End Sub Sub KeysSetOff() '解除用 With Application   .OnKey "{ENTER}"   .OnKey "~" End With End Sub Private Sub SelectMoving() '実行マクロ With ActiveCell If .Column = 8 Then   Cells(.Row + 1, 4).Select Else   .Offset(, 1).Select End If End With End Sub

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

OFFSETメソッドを使うにはどうでしょうか。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 8 Then Target.Offset(1, -4).Select End If End Sub こんな動作をお望みかな?。

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.2

#1さんの回答でほぼ終わりなのですが、DとHの交互なので、こんな感じ?、変数はわざと入れてますが、無くてもいけます。 Dim usX As Long Dim usY As Long usX = ActiveCell.Column usY = ActiveCell.Row Select Case usX Case 4 'D usX = 8 ActiveSheet.Cells(usY, usX).Select Case 8 'H usX = 4 usY = usY + 1 ActiveSheet.Cells(usY, usX).Select End Select

回答No.1

書き方はいろいろあるので・・・。 そのCase文を判定しているのはRangeオブジェクト? なら、 Cells(”判定用オブジェクト”.Row + 1, ”列(ここではDなので4)”).Select でいい・・・。 (^^ゞ

関連するQ&A