【Word VBA】こうすればできる!!シンボルフォントを検索するWordマクロ(2)

2010年6月5日

こうすればできる!!シンボルフォントの検索こうすればできる!!シンボルフォントの検索(2)   ←現在地
・こうすればできる!!シンボルフォントの検索(3)こうすればできる!!シンボルフォントを検索(4)
2017/09/23追記
この記事のマクロには間違いがあります。
修正版を「こうすればできる!!シンボルフォントを検索(4)」に掲載しました。

昨日の記事、「こうすればできる!!シンボルフォントの検索」のマクロの改良版です。修正の理由は、こちらの記事で解説したとおりです。

プログラム解説

追加した部分は、下記のプログラムの4行目です。

変数の宣言は、

  Dim 変数 As 変数の種類

とします。

今回は、数値が6万番以上なので、長整数型(Long)変数にしました。

-2,147,483,648 ~ 2,147,483,647 の範囲の値をとります。

一般に、数字というと、整数型 (Integer)と思われている方もいらっしゃるかもしれませんが、この数字を使うとエラーになります。

なぜなら、Integerは、-32,768 ~ 32,767 の範囲の値をとるように決められているから。

今回の 61505 という数字を代入した瞬間に、オーバーフロー(こらえきれずに、こぼれた!)というエラーになります。

一般的に、私は文章におけるカーソル位置を検出する場合には長整数型変数(Long)を使います

Integerでは、少し長い文章を書くと、カーソル位置が取れなくてオーバーフローしてしまうから。

プログラム

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Sub Symbolフォント探し()
 
 Dim SS, SE As Long 'カーソル位置の保存用
 Dim i As Long '文字コード用
 
 '画面更新非表示
 Application.ScreenUpdating = False
 
 'カーソルの現在位置を保存
 SS = Selection.Start
 SE = Selection.End
       
 'シンボルフォントのギリシャ文字をピンクの蛍光ペンで着色
 For i = 61505 To 61562
  
  If i >= 61531 And i <= 61536 Then GoTo Proc_Skip
 
  Selection.Find.ClearFormatting
  Selection.Find.Replacement.ClearFormatting
  With Selection.Find
   .Text = ChrW(i)
   .Forward = True
   .Wrap = wdFindContinue
   .Format = False
   .MatchCase = False
   .MatchWholeWord = False
   .MatchByte = False
   .MatchAllWordForms = False
   .MatchSoundsLike = False
   .MatchWildcards = False
   .MatchFuzzy = True
   .Execute
  End With
  
  Do While Selection.Find.Found = True
   Selection.Range.HighlightColorIndex = wdPink
   Selection.Find.Execute
  Loop
  
Proc_Skip:
 Next i
 
 '▼検索・置換条件の初期化
 Selection.Find.ClearFormatting
 Selection.Find.Replacement.ClearFormatting
 With Selection.Find
  .Text = ""
  .Replacement.Text = ""
  .Forward = True
  .Wrap = wdFindContinue
  .Format = False
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = False
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchWildcards = False
  .MatchFuzzy = True
  .Execute
 End With
 
 'カーソルの位置を戻す
 Selection.Start = SS
 Selection.End = SE
 
 '画面更新表示
 Application.ScreenUpdating = True
 
End Sub

 

-コード
-, ,

S