Option Explicit
Option Base 0
'
Public Sub 漢字探しクイズ作成マクロ()
Const KFNDLEFT = 100 '描画開始位置X
Const KFNDTOPP = 100 ' Y
Const KFNDWIDT = 275 'テキストボックス幅
Const KFNDHEIG = 240 'テキストボックス高さ
'
Const KFNDCOLS = 12 '横文字数
Const KFNDROWS = 9 '縦段数
'
Const KFNDCHR1 = "梅" '探す 漢字
Const KFNDCHR2 = "悔" '惑わす漢字
'
Const KFNDFNTN = "MS ゴシック" 'フォント名
Const KFNDFNTS = 20 'フォントサイズ
Const KFNDLNSP = 24 '改行幅
'---------------------------------------------------------------------------
Dim Ip As Integer, Jp As Integer, Kp(1) As Integer
Dim strDat As String
Randomize '乱数系列初期化
Kp(0) = Int((KFNDCOLS - 2) * Rnd) + 1 '乱数で位置を設定
Kp(1) = Int((KFNDROWS - 2) * Rnd) + 1 '端は除外するよう
'
'*文字列作成
strDat = ""
For Jp = 0 To KFNDROWS - 1
For Ip = 0 To KFNDCOLS - 1
If Ip = Kp(0) And Jp = Kp(1) Then
strDat = strDat + KFNDCHR1
Else
strDat = strDat + KFNDCHR2
End If
Next Ip
strDat = strDat + Chr(10) '
Next Jp
'
'*テキストボックス作成
With ActiveDocument.Shapes.AddTextbox( _
msoTextOrientationHorizontal, _
KFNDLEFT, KFNDTOPP, KFNDWIDT, KFNDHEIG)
'
.Line.Visible = False
With .TextFrame.TextRange
'行間=固定値
.ParagraphFormat.LineSpacingRule = wdLineSpaceExactly
.ParagraphFormat.LineSpacing = KFNDLNSP
'文字列,フォント
.Text = strDat
.Font.Name = KFNDFNTN
.Font.Size = KFNDFNTS
End With
End With
End Sub
《蛇足》
画像の「梅」は、6段目、6行目