上書き翻訳での効率化は、早く文字列を正確に選択して移動させることである程度実現できます。
この方法を自分なりに考えていくことが楽しかったりもします。
ぱらぱら を使った上書き翻訳をする場合にご利用ください。
ライターの方やチェッカーの方にも役に立てるかもしれません。
<目次>
このマクロでできること
選択範囲を指定した記号まで広げたり狭めたりします。
カーソルよりも右方向(文末に向かった方向)にだけ動作します。
このマクロでは、「。、?!:;.,?!:;」を基準に範囲指定します。
マクロの解説
前回の「カーソルの移動」マクロと同じような考え方になっています。
myCset の定数をPrivate キーワードで定義しています。
このように、特定のプロシージャー(Sub からEnd Subまでのプログラム文)の外に定数を宣言することができます。
Privateとすると、このモジュール内のすべてのプロシージャーからこの定数を参照することができます。
複数のプロシージャーで共通した定数であれば、このように一か所で定義するとわかりやすいですね。
変更するときにも、プロシージャーごとに変更する手間が省けるので便利です。
前回のカーソルの移動マクロと同じモジュールに入れる場合には、「Private Const myCset As String = "。、?!:;.,?!:;"」部分は省略してください(入力不要です)。
3行目~25行目が選択範囲を狭めるためのマクロです。
28行目~39行目が選択範囲を広げるためのマクロです。
マクロ
Private Const myCset As String = "。、?!:;.,?!:;" Sub 選択範囲_狭める() Dim SS As Long Dim SE As Long Dim myRange As Range SS = Selection.Start SE = Selection.End If SS = SE Then End Set myRange = Selection.Range myRange.MoveEndUntil cset:=myCset, Count:=wdBackward If myRange.Start < SS Then myRange.Start = SS Else myRange.End = myRange.End - 1 End If myRange.Select End Sub Sub 選択範囲_広げる() Dim myRange As Range Set myRange = Selection.Range myRange.End = myRange.End + 1 myRange.MoveEndUntil cset:=myCset, Count:=wdForward myRange.Select End Sub
-
4. Re:Re:Re:つかってみました!
>Sakinoさん
さっそくのご利用をどうもありがとうございます。
2つ理由があると思います。ブログ記事でしっかり説明しておらず失礼しました。
まず、「Private Const myCset As String = "。、?!:;.,?!:;"」は、モジュールの先頭に記載してください。これをしないと、モジュール内での変数を定義できません。
あと、現在は「Option Explicit」 の記載がないと思われます。この記載を、モジュールの一番先頭(Private Const...の前)に記載して下さい。
この2点で大丈夫だと思います。
上述の通り、「Private Const myCset As String = "。、?!:;.,?!:;"」がモジュールの途中にあるためmyCsetの内容が定義されていません。
でも、「Option Explicit」が書かれていないので、定義していない変数もマクロ(プロシージャ)で使えるような設定になっています。
結果、myCsetが空で定義されていないまま実行されてしまっています。おっしゃるとおり定義がないままです。
上記2点を変更しておためしください。
コメント