Word中使用VBA自動生成公式時的注意事項

2021-09-24 12:39:04 字數 1873 閱讀 6898

sub geneq()

if selection.start <> selection.end then

dim objrange as range

dim objeq as omath

set objrange = selection.range

'不能加入下面這行注釋掉的**,否則在日文版word 2007和2010上將不能實現下面的靈活字型控制

'objrange.text = selection.range.text

set objrange = objrange.omaths.add(objrange)

'靈活控制哪類字元加斜體

for i = 1 to objrange.characters.count

if objrange.characters(i).text like "[a-za-z]" then

objrange.characters(i).italic = true

else

objrange.characters(i).italic = false

end if

next i

set objeq = objrange.omaths(1)

objeq.buildup

'加入下面這行**,會使日文版word 2007和2010的行為正常,否則將出現下面的怪異現象,中文版word 2013沒有這種現象:

'在word中,在第一行輸入x=3,選擇x=3,使用本函式生成公式(x是斜體,=3不是斜體),回車換行,當前游標將停留在居中位置(進行相同操作,中文版word 2013游標將停在左對齊位置),

'再輸入y=x+1,選擇y=x+1,使用本函式生成公式(y=x+1都不是斜體)

objeq.parentomath.type = wdomathinline

end if

end sub

如果在word中輸入「y=x」, 把「y=x」這3個字元加黑體,選擇這3個字元,執行上面的巨集geneq(),結果,x和y都不會加斜體。

因為 objrange.characters(3).text 返回的值並不是乙個ascii碼的字元x,而是黑體x(mathematical bold small x) ,即unicode字元u+1d431,utf-16編碼為: d835 dc31。

這樣,if objrange.characters(i).text like "[a-za-z]" then 這個判斷就總是失效的了。

也就是說,把字串「y=x」轉變為公式後,如果「y=x」不帶字型,公式的text就是「y=x」三個字元; 如果「y=x」帶有黑體,公式的text就變成了「u+1d432」「=」「u+1d431」三個字元。 

公式中的乙個字元x,加了不同的字型,其實就變成了不同的unicode字元了,就像上面看到的,對於字元x:

不加任何字型,那麼他就是ascii的x字元,

如果加了黑體就變成了字元u+1d431 (mathematical bold small x)

如果加了斜體,就變成了字元u+1d465 (mathematical italic small x)

如果加了黑體斜體,就變成了字元u+1d499 (mathematical bold italic small x)

可以使用下面vba語句檢視字串的16進製制值:

dim s as string, hexstr as string

s = "北京beijing"

for i = 1 to len(s)

hexstr = hexstr + hex(ascw(right(s, len(s) - i + 1))) + ";"

next i

msgbox hexstr

參考:

在word軟體中使用MathType自動編號功能

在word軟體中使用mathtype。在word中,mathtype工具欄各按鈕的功能如下圖 1.前四項都是在word中插入公式,點任何一項都會開啟mathtype編輯器。1 insert inline equation 用於在正文段落中插入小公式或變數符號等 2 insert display eq...

在word軟體中使用MathType自動編號功能

在word軟體中使用mathtype。在word中,mathtype工具欄各按鈕的功能如下圖 1.前四項都是在word中插入公式,點任何一項都會開啟mathtype編輯器。1 insert inline equation 用於在正文段落中插入小公式或變數符號等 2 insert display eq...

Word自動生成目錄

優點 用word根據文章的章節自動生成目錄不但快捷,而且閱讀查詢內容時也很方便,只是按住ctrl點選目錄中的某一章節就會直接跳轉到該頁,更重要的是便於今後修改,因為寫完的文章難免多次修改,增加或刪減內容。倘若用手工給目錄標頁,中間內容一改,後面頁碼全要改是一件很讓人頭痛的事情。應該自動生成的目錄,你...