• ベストアンサー

excel マクロについて

こんにちは。 マウスカーソルでセルをクリックする度に、 空白・マ・×・△・0.5・1R・TOPと順に内容が指定のセル(例としてG4から32R×31Cまでの場合。)のみで実行するには、切り替わるマクロ は、どういったプログラムにしたら、一番良いでしょうか? お願い致します。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

クリックは拾えないので、ダブルクリックで。 シート名を右クリックしてコードの表示を選び、出てきたVBE画面にコピペします。 試すなら新規ブックなど、テスト環境で。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim List, i As Integer Cancel = True List = Array("マ", "×", "△", "0.5", "1R", "TOP") If Not Application.Intersect(Target, Me.Range("G4:AE32")) Is Nothing Then   Select Case Target.Value   Case ""    Target.Value = "マ"   Case "TOP"    Target.Value = Null   Case Else    For i = 0 To UBound(List)      If Target.Text = List(i) Then Exit For    Next i    If i + 1 <= UBound(List) Then Target.Value = List(i + 1)   End Select End If End Sub

gimongoo
質問者

お礼

完璧です。助かりました。 有難うございました。

その他の回答 (1)

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

>マウスカーソルでセルをクリックする度に >空白・マ・×・△・0.5・1R・TOPと順に内容が指定のセル(例としてG4から32R×31Cまでの場合。)のみで実行するには、切り替わるマクロ は、 って、どういうことなんでしょう?指定のセルのみで、何を実行するのかな? 書き込まれることかな? これは、同じ場所をクリックした時は、有効になりません。 Dim Count As Long Private Sub Worksheet_SelectionChange(ByVal Target As Range)  Dim myWords  Dim i As Long  If Target.Count > 1 Then Exit Sub  If Intersect(Target, Range("G4").Resize(32, 31)) Is Nothing Then Exit Sub  myWords = Array(" ", "マ", "×", "△", "0.5", "1R", "TOP")   'If Target.Value = "$" Then Count = 0   'オプション 例:「$」という文字をクリックすると、Count のリセット   i = Count Mod 7  Target.Value = myWords(i)  Count = Count + 1 End Sub

gimongoo
質問者

お礼

お忙しい中の回答有難うございます。 papayuka様の回答どうりでした。