アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんなことは、できるのでしょうか

□、■、×を入力するセルがあるのですが、リストなどではなく、シングルクリックをすることにより文字を入力することって、出来るのでしょうか

A1のセルに、クリックするたびに□、■、×の文字を変えて入力したいのです。。

A 回答 (5件)

こんばんは!



>シングルクリックをすることにより・・・

単にセル選択だけだと間違ったセルを選択した場合も同じ動作になりますので、
ダブルクリックでの操作にしてみました。

とりあえずA列すべてを対象としています。
↓のコードをシートモジュールにしてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
  Cancel = True
   With Target
    If .Value = "" Or .Value = "×" Then
     .Value = "□"
    ElseIf .Value = "□" Then
     .Value = "■"
    ElseIf .Value = "■" Then
     .Value = "×"
    End If
   End With
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

質問者さんが想像している回答とは、掛け離れている感はありますが、こんなのはいかがでしょうか。


まず、A1セルにハイパーリンクを設定します。リンク先はA1セル自身にして、クリックしても自分に戻ってくるようにします。アンダーバーとかが邪魔なのでフォント設定で消します。その上で、下記のWorksheet_FollowHyperlinkイベントプロシジャで表示文字を動的に変更します。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Target.Range.Address <> "$A$1" Then Exit Sub
Select Case Target.TextToDisplay
Case "□"
Target.TextToDisplay = "■"
Case "■"
Target.TextToDisplay = "×"
Case Else
Target.TextToDisplay = "□"
End Select
End Sub


最後に独り言ですが、この入力方法って、初めて使う人にとっては迷惑ですよね?まずはリストがあって、さらにオプションとして、これを実装すべきです。
    • good
    • 0
この回答へのお礼

思い描いていた通りのことが出来ました。ご回答いただいた皆様をベストアンサーにさせていただきたいのですが、本当にありがとうございました。

お礼日時:2019/03/14 08:43

出来ますが、


1度 稼働状態に、
入れば、
他の 意図を、
持って、
他の 値を、
示させようと しても、
叶わなく なりますよ?

貴方に 御せますか?


SheetVBAで クリックを、
起点に 動かせば、
良いだけですけど、

如何ですか?
御せますか?
    • good
    • 0

特殊な方法で、シングルクリックを感知する方法もありますが、単純に、ActiveX コントロールのラベルで、


Caption のフォント(Font) を"WingDings" にしてあげれば、ご希望のようになります。
TextBox ですと外周が出てきてしまい、それをフラットにすることができません。

Private Sub Label1_Click()
 With Label1
  .Font.Name = "WingDings" '念の為 'プロパティで設定すれば不要です。
  If .Caption = "x" Then
   .Caption = "o"
  ElseIf .Caption = "o" Then
   .Caption = "n"
  ElseIf .Caption = n Then
   .Caption = "x"
  Else
   .Caption = "x"
  End If
 End With

End Sub
「エクセルの入力について」の回答画像3
    • good
    • 0

こんにちは



ご質問の処理そのものはさほどでもありませんが、一番の難関が、
>シングルクリックをすることにより~~
>クリックするたびに、~~
でしょうかね。

エクセルの場合、セルのクリックイベントが存在しないので、ユーザのクリックをどうやって感知するのか(あるいはできないのか)という点を解決できるか否かにかかっていると言えると思います。
SelectionChangeである程度までは代用可能ですが、同じセル上でクリックを繰り返しても、2度目以降は感知できないという大きな欠点がありますし。


・・・ということで、以下のような方法を考えてみました。
1)対象シート上に図形を作成し、固有のIDを設定しておく。
 (例えばテキストボックスで、固有名を「clickPicker」としておくなど)
2)1)のオブジェクトのクリックイベントに以下の処理を設定しておく
 ・A1セルの値を、「□、■、×」でトグル表示する
3)ブックのオープン時の自動実行マクロに以下を設定しておく
 ・clickPickerの存在をチェック(無ければ再作成する。マクロの登録も)
 ・位置をA1セルに重ね、サイズもA1セルサイズに合わせる
 ・表示は枠無し、塗り色の透明度を99%に設定

以上の設定をしておくことで、次にブックを開いたとき以後は、疑似的にシングルクリックでセルの値が変化していくような処理を実現できるものと思います。
オブジェクトの透明度を99%にしておくのがミソで、クリックは感知するけれど、表示は下にあるセルの表示内容がそのまま透けて見えるという状態になるので、セルのクリックを感知するためのマスクのような働きを持たせることができます。
    • good
    • 0

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