数値を見つけて文書に逆変換するためのマクロを作成します。例えば
は変換:123456
654321
に私はこのマクロ書くが、それは仕事をdoesntの:マクロを使用して文書内の数字を反転する
Function inverter(Numbers)
Dim Num As Long
Dim inverted As Long
Num = Numbers
Do Until Num >= 1
remainder = Num Mod 10
Num = Num/10
inverted = inverted * 10 + remainder
Loop
inverter = inverted
End Function
Sub invert()
Dim a As Long
Selection.GoTo What = wdGoToLine, Which = wdGoToFirst
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "([!0-9])([0-9]@)([!0-9])"
.Replacement.Text = "\1" & a="\2" inverter(a) & "\3"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Sub
私はそれがこのエラーを返すコンパイルすると:
---------------------------
Microsoft Visual Basic for Applications
---------------------------
Compile error:
Expected: end of statement
---------------------------
OK Help
---------------------------
プログラムをデバッグする - 'F8'キーを使用して、エラーの原因となっている行を見つけてください! –
'.Replacement.Text =" \ 1 "&a =" \ 2 "インバータ(a)&" \ 3 "'この行を確認してください。 '&'が不足しているように思えますし、 'a =" \ 2 "'もうまくいくとは思わないのです。 また、すべてのステートメントを1行に入れないでください。読むことは不可能です。 – arcadeprecinct
私の最後のコメントに加えて、おそらく文字列を扱うために 'a'と' inverter'が変更されるべきです。 'a =" \ 2 "'はテキストが置換されたときに評価されないので、置換テキストが設定されているのでfalseを返すので、 'a =" \ 2 "&inverter(a)'は動作しません。 replacement.textの定義時に 'inverter(" \ 2 ")'が評価されるため、 '' \ 2 "&inverter(" \ 2 ")'は動作しません。私は正規表現を調べて試合をループすることをお勧めします。 – arcadeprecinct