プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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
    • good
    • 0

OFFSETメソッドを使うにはどうでしょうか。


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then
Target.Offset(1, -4).Select
End If
End Sub
こんな動作をお望みかな?。
    • good
    • 0

#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
    • good
    • 0

書き方はいろいろあるので・・・。


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!