ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュの特定の文字を置き換える

  • mixiチェック
  • このエントリーをはてなブックマークに追加
勉強はしているつもりなのですが、どうしても行き詰ってしまいます。
また、よろしくお願いします。


1. セルをダブルクリックしたときに、そのセルの元の文字列に"⇒"を付け足す。
2. 次に同じセルをダブルクリックしたときには"⇒"を"⇒予定"へ置き換える。
3. さらに同じセルをダブルクリックしたときには"⇒予定"を"⇒未定"へ置き換える。
4. さらに同じセルをダブルクリックしたときには"⇒未定"を"⇒"へ置き換える。

といったようなことがしたくて、作ったマクロが以下のようになるのですが、

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

With Target
If .Value Like "⇒" Then
.Replace what:="⇒", Replacement:="⇒予定", LookAt:=xlWhole

ElseIf .Value Like "⇒予定" Then
.Replace what:="⇒予定", Replacement:="⇒未定", LookAt:=xlWhole

ElseIf .Value Like "⇒未定" Then
.Replace what:="⇒未定", Replacement:="⇒", LookAt:=xlWhole

Else: .Value = .Value & "⇒"

End If

End With

End Sub

これでは、元のセルが空欄の場合にしか上手くいきません。
ワイルドカードを使用して、

With Target
If .Value Like "*⇒*" Then
.Replace what:="⇒", Replacement:="⇒予定", LookAt:=xlWhole

と、試してみたのですが、やはり出来ませんでした。

アドバイスを頂けたらと思い、トピを立てさせていただきました。
よろしくお願いします。

仕様はexcel2003になります。

コメント(4)

1番のコメントは当方の理解不足により、削除しました。
矢印を書きつつ、矢印の先に文字を書き込めるようなプログラムを作りたいのですね。
なるほど! 
入力者が非常に楽になる、画期的アイデアですね!

ただそのプログラムでは、
「あいうえお⇒予定」と書かれたセルに対しても、「⇒」が含まれていると判断されてしまうので、問題ありです。
色々方法があるかと思いますが、Instr関数・&・replace関数・left関数・right関数などで作ってみました↓。
ワークシート関数の応用でVBA関数を使うと、楽にプログラミングできます。



Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If InStr(Target.Value, "⇒") = 0 Then
Target.Value = Target.Value & "⇒"
ElseIf Right(Target.Value, 1) = "⇒" Then Target.Value = Target.Value & "予定"
ElseIf Right(Target.Value, 2) = "予定" Then Target.Value = Replace(Target.Value, "⇒予定", "⇒未定")
ElseIf Right(Target.Value, 2) = "未定" Then Target.Value = Left(Target.Value, Len(Target.Value) - 2)
End If
End Sub
1÷0さん
 いつも、いつもいつもありがとうございます。
 
>ワークシート関数の応用でVBA関数を使うと、楽にプログラミングできます

 そうですね。いろいろ悩んでいるうちに、いつも考え方が狭くなってきてしまいます。以前もワークシート関数を使うように指導していただいたことがあるのですが・・・冷や汗。忘れているつもりは無かったのですが、なかなか凝り固まった頭の中は上手に働いてくれないものです。泣き顔
精進します!

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。