|
初心者です。配列変数を勉強しようとしたら、最初からつまづいてしまいました。
どなたか、配列につてご教授願います。
『やりたいこと』
句読点の入っている文章の、句読点間の文字数を取得する。
『教えてほしいこと』
下記コードで(A)(B)のMegboxで確認したところ、正しい値を取得していましたが、1.〜2.の文字数の計算値がうまくいきません。
どうも配列への値の格納方法が間違っているようなんですが、どうしたらいいのか分かりません。
(下記文章でテストしました)
東京、埼玉は雨。神奈川は曇り、山間部では
Option Explicit
Option Base 1
Sub 句読点()
Dim i As Integer, j As Integer
Dim k As String, 句読点 As Integer
Dim 文章 As Integer, 文字数() As Integer
文章 = Len(ActiveCell)
For j = 1 To 文章
k = Mid(ActiveCell, j, 1)
If k = "、" Or k = "。" Then
句読点 = 句読点 + 1
ReDim 文字数(句読点) As Integer
文字数(句読点) = j
' MsgBox 句読点 ' (A)確認用・・句読点の個数
' MsgBox 文字数(句読点) '(B)確認用・・文頭から句読点までの文字数
End If
Next
' (C)再確認位置
MsgBox 文字数(1) - 1 '1.文頭から最初の句読点までの文字数・・・NG
For i = 2 To 句読点
MsgBox 文字数(i) - 文字数(i - 1) - 1 '2.句読点間の文字数・・・NG
Next
MsgBox 文章 - 文字数(句読点) '3.最後の句読点から文末までの文字数・・・OK
'文字数(i)にしたらNG
End Sub
『結果と原因究明』
(A)と(B)で句読点の個数と、その位置が文頭から何文字目かを確認したところ
文字数(1)は3
文字数(2)は8
文字数(3)は15
で、正しい値を取得していました。
ところが、1.の計算結果は「−1」で、私が想定した「3−1=2」という結果が
得られません。2.も同じでした。そこで(C)の位置に
For i = 1 To 句読点
MsgBox 文字数(i)
Next
を入れて、文字数(i)の内容を確認したところ
結果は 0、0、15 で
想定した 3、8、15 は得られませんでした。
最初は、(A)(B)の値が正常だったので、配列からの値の取り出し方が間違っているのかと思ったんですが、
そもそも正しい値が配列に格納されていないことが分かりました。
ただ、これをどう修正したらいいのか、よく分かりません。
どなたか、ご教授願います。
|
|