- ベストアンサー
エクセルで、セルを選択状態にするマクロ
任意のセルに入力されている文字数分(スペースも一文字とカウント)だけ、任意のセルから斜め上にセルを選択状態にしたいのですが。 例 ●文字数をカウントするセル(毎回違う)の中身が"g6# 3w."(文字数は7) ●選択状態の起点となるセルがC30(毎回違う) 実行結果は、C30 D29 E28 F27 G26 H25 I24 が選択状態になります。 上記のことができるマクロを教えてもらいたいのです が。 (文字数分だけ斜め上には行けない状況は想定されなくて結構です)
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
あ、こうかな? Sub Test1() Dim r1 As Range, i As Integer, cnt As Integer On Error Resume Next Set r1 = Application.InputBox("文字数カウントセルは?", "Count", Type:=8) cnt = Len(r1.Value) Set r1 = Application.InputBox("先頭セルを1つ選択", "Select", Type:=8) s = r1.Address For i = 1 To cnt - 1 s = s & "," & r1.Offset(-1 * i, i).Address Next i Range(s).Select End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
どんな使い道があるのか、判らず、VBAのシートのイベントを使うものは不安定なもののように思いますが、一応それらしくできました。 標準モジュールに Public n Sheet1のイベントトプロシージュアーとして Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) n = Len(Target) MsgBox n End Sub と Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error GoTo e1 Application.EnableEvents = False s = "" For i = 0 To n - 1 t = Target.Offset(-i, i).Address s = s & t & "," Next i 'MsgBox s s = Left(s, Len(s) - 1) Range(s).Select e1: Application.EnableEvents = True End Sub を貼り付ける。 文字数をカウントするセルをダブルクリックする。 (するとnに文字数を覚え増すが)、起点となるセルをクリックする。 すると、起点から右上方向のセルを数だけハイライトする。 もしエラーでイベントが反応しなくなったら 標準モジュールに下記を貼り付け、 Sub test01() Application.EnableEvents = True End Sub を実行後、上記をやってみてください。
お礼
ご回答ありがとうございました。 大変参考になりました。
- papayuka
- ベストアンサー率45% (1388/3066)
こんな感じ? Sub Test() On Error Resume Next Set r1 = Application.InputBox("先頭セルを1つ選択", "Select", Type:=8) s = r1.Address For i = 1 To 6 s = s & "," & r1.Offset(-1 * i, i).Address Next i Range(s).Select End Sub
お礼
ご回答ありがとうございました。
お礼
ご回答ありがとうございました。 大変参考になりました。 今回は斜め右上方向に進んでいきましたが、斜め左上や真上に進んで行く場合は、以下の部分はどう変わってくるでしょうか? s = s & "," & r1.Offset(-1 * i, i).Address
補足
自己レスですが、斜め左上はOffset(-i, -i)、真上はOffset(-i, x)でできました。