- ベストアンサー
EXCEL VBA セルの移動に変数を・・・
VBAを使って ・ ・ ・ Case "$H$4" Range("D5").Select Case "$H$5" Range("D6").Select と書き 「H4のセルまで行けばD5へ、H5のセルまで行けばD6へ」といったようにだんだん下へセルが下がっていくように作成していたのですが必要な行が増えてきて、1行ずつ書いていくことが難しくなり、変数を使いたいのですが使い方が分かりません。 分かる方、意見を下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 「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)
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)
#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
- taka451213
- ベストアンサー率47% (436/922)
書き方はいろいろあるので・・・。 そのCase文を判定しているのはRangeオブジェクト? なら、 Cells(”判定用オブジェクト”.Row + 1, ”列(ここではDなので4)”).Select でいい・・・。 (^^ゞ