
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>VBAを使わないで直接編集することにしました
それがよいかと存じます。
例えば、ワードに移植して、ワードの方のマクロで、というようなことでもできそうな気はいたしますが、私はワードを使わない人なので全然解りません。 <(_ _)>
ちなみに、前回答の
>書くべからざるような無理矢理な力業
というのは、下記のようなマクロです。
荒削り、かつ、編集モードから抜け出す処理もしておりませんが、Sheet2 A列に「置換前の言葉」、B列に「置換後の言葉」を並べておけば、
>「選択部分のみ」を選択してから「*」にでも置き換えて確定
あるいは、「選択部分のみ」を削除するなど(変化)した途端に、「選択部分のみ」を「置換後の文字列」に変換し、その後ろにカーソルが入った状態で編集モードに戻ります。
何かの不具合で「型が一致しません。」エラーも起こりますし、全然イケテないコードですのでご参考までに、ということで。。。
なお、便宜上、変数の宣言は都度行なっております。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then Exit Sub
Application.EnableEvents = False
Dim strAfter As String
Dim strBefore As String
strAfter = Target.Value
Application.Undo
strBefore = Target.Value
Dim i As Byte
Dim j As Byte
For i = 1 To Len(strBefore)
If Left(strBefore, i) <> Left(strAfter, i) Then Exit For
Next
For j = 1 To Len(strBefore)
If Right(strBefore, j) <> Right(strAfter, j) Then Exit For
Next
Dim strSelected As String
strSelected = Mid(strBefore, i, Len(strBefore) - j - i + 2)
Dim strReplace As String
On Error Resume Next
strReplace = Application.VLookup(strSelected, Sheets("Sheet2").Range("A:B"), 2, False)
If Err.Number = 0 Then
Target.Value = Application.Replace(strBefore, i, Len(strSelected), strReplace)
End If
On Error GoTo 0
Target.Activate
SendKeys "{F2}{LEFT " & j - 1 & "}"
Application.EnableEvents = True
End Sub
ありがとうございました。
>>例えば、ワードに移植して、ワードの方のマクロで、というようなことでもできそうな気はいたしますが
これはいいアイデアでした。わたしも初めてワードVBA使いましたが、エクセル上で手動で編集するより便利なので、ワードで編集してエクセルに貼り付ける方法に変えました。Selection.Textだけでできますね。
No.2
- 回答日時:
>やりたいのはセル内のテキストを編集している最中に選択部分のみを選択された部分の内容から決められるある値にボタンひとつで変換することです。
「置換箇所が多い」というような問題でしたら、別シートに「置換文字列対応表」のようなものを作っておいて、マクロで自動的に変えることは簡単かと存じます。
[REPLACE 関数] や [SUBSTITUTE 関数] のようなワークシート関数や [検索と置換] ではいかない複雑な理由があってのことでしょうね。
書くべからざるような無理矢理な力業ですが、敢えて書いてみます。有用なご回答がなかった場合のみ、ご参考になさってみてください。
Private Sub Worksheet_Change(ByVal Target As Range)
strAfter = Target.Value
Application.EnableEvents = False
Application.Undo
strBefore = Target.Value
・・・・・・・・・・・・・・・・・・・・・
Target.Replace(・・・・・・・)
Application.EnableEvents = True
End Sub
のようなやり方で、「選択部分のみ」を選択してから「*」にでも置き換えて確定、そのタイミングで、元の文字列から変更された部分(選択部分のみ)を割り出して...みたいなことはできないことではありません。
・・・でも、本当は、実情により、もっと簡単な方法があるような気もいたしますが。。。
この回答への補足
DOUGLAS_様、ふたたびまことにありがとうございました。
操作としてはセル内の文字列を編集中に、確定させないで、つまりWorksheet_ChangeのEventを発生させないで(させてもキーやマウス操作がなければそれでもよい)選択している部分だけ変換させたいと思います。
たとえばセル内の文字列を編集中に選択部分だけフォントを変える(色を変える)という操作の場合、次のようにします。
1)カーソルをセルの中に入れて文章を編集し、ターゲットを選択。
2)ツールバーのボタンひとつでそのターゲットの部分だけ色が変わる
3) そのまま、そのセル内の文章の編集が続行できる。
4) 最後にセルを移動してそのセルを確定する。
これと同様の操作を 2) のところでフォントを変えるのではなく、選択部分のたとえば "Visual"を"\n{Visual}"のように変換する、というようなことです。実際そのセルの内容を人間が読んで編集するまでは何を変換するのかわかっていないので最初に変換の対応表のようなものを作れません。同じ文字でも別のセルでは変換しないこともあるのでワークシートレベルで一度に置換するというのも難しいです。
DOUGLAS_様、VBAを使わないで直接編集することにしましたので解答は締め切りたいと思います。ただ技術的には関心があるのでスレッドはオープンにしたままにしておきます。まことにありがとうございました。
No.1
- 回答日時:
>セル内で選択されたテキストについてのインターフェイス
[Characters メソッド] のことでしょうか?
新しいマクロの記録で、セル内のテキストにふりがなを設定してみてください。
この回答への補足
大変ありがとうございました。すこし近づきました。
そうなると問題は
1 ふりがな設定のように選択している部分のポジションをどのように得るか。
2 セル内のテキストを選択をしているときマクロが動かせない(マクロのメニューは無効化されている。ツールバーボタンにしても効かない)
ということのようですね。
やりたいのはセル内のテキストを編集している最中に選択部分のみを選択された部分の内容から決められるある値にボタンひとつで変換することです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Excel(エクセル) Excel アクティブセルのみ条件付き書式の色を他の色にしたい。 4 2022/06/11 22:19
- Visual Basic(VBA) Outlook VBAについて 1 2023/07/10 12:41
- Excel(エクセル) エクセルでシート保護のかかり方の違いとセルの非保護の設定 3 2022/08/09 10:02
- Excel(エクセル) excelで可視セルのみ置換 3 2022/08/04 11:02
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) テキストの背後にあるオブジェクトとは 3 2023/01/03 20:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
Excelで、半角スペースをTABに...
-
Excelからテキストへのコ...
-
【エクセル】ピボットテーブル...
-
エクセルで「4」「9」抜けの...
-
Excelのmatch関数エラー原因が...
-
一括でダブルクリックした状態...
-
excelで可視セルのみ置換
-
小数点を消す方法
-
Excelの空文字セルの削除方法を...
-
Excelの入力済みセルに一括で、...
-
エクセルの表ををメモ帳などに...
-
エクセルから .txtで保存すると...
-
エクセルでセル内の一部を一括...
-
企業名簿で(株)や(有)を無視し...
-
”エクセルの関数(If,Replace,F...
-
置換機能を使わずに先頭に「'」...
-
エクセルでセルを文字列設定し...
-
Excelのシートにある1行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで文字の入力がセルの...
-
多数の計算セルに一括で同一の...
-
Excelからテキストへのコ...
-
Excelで、半角スペースをTABに...
-
Excelの入力済みセルに一括で、...
-
excelで可視セルのみ置換
-
Excelの空文字セルの削除方法を...
-
エクセルのセルの中の,よりも前...
-
エクセルでセル内の一部分だけ...
-
置換機能を使わずに先頭に「'」...
-
Excelのシートにある1行...
-
【エクセル】ピボットテーブル...
-
Excelのアポストロフィーの削除
-
一括でダブルクリックした状態...
-
小数点を消す方法
-
エクセルでセル内の一部を一括...
-
別シートのリストから置換する方法
-
Excelで特定の文字の前だけに空...
-
エクセルでセルを文字列設定し...
-
企業名簿で(株)や(有)を無視し...
おすすめ情報