2016-09-30 421 views
0

我已經創建了一個文本框的網格,但我無法找出一種方法來更改文本內部文本的字體大小和對齊方式(集中垂直和水平方向)一個命名的文本框。Excel VBA:如何更改文本框內的字體大小和對齊方式

Sub addtxtbx() 
Dim shp As Shape 
Dim i As Integer, j As Integer, k As Integer 
Dim cindx as long, rindx as long 
For i = 1 To 145 
Set shp = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _ 
      100 + cindx, 100 + rindx, 50, 50) 
    cindx = (i - Int((i - 1)/4) * 4 - 1) * 50 + Int((i - 1)/48) * 200 
    rindx = (Int((i - 1)/4) - Int((i - 1)/48) * 12) * 50 
    With shp 
     .Name = "TxtBx" & (i - 1) 
     .Fill.ForeColor.RGB = RGB(204, 102, 255) 
    End With 
Next i 

With ActiveSheet.Shapes.Range(Array("TxtBx11")).TextFrame2.TextRange 
    .Characters.Text = "R" 
End With 
End Sub 

另外,我一直在用For Next循環的i計數器撓我的腦袋。我用它來重命名文本框,發現儘管使用i = 1到144,但TxtBx144不是最後一個盒子,但倒數第二個,TxtBx2是第一個。所以,我試着用1到145來解決它,並使用(i-1)序列來命名盒子,這是一個警察出局。我做錯了什麼,我沒有看到?

+1

*工作表*上有144個文本框?爲什麼不使用單元格來輸入呢? –

+0

@ mat'smug,我實際上有單元格,我需要將這些單元格複製爲圖片,將圖片粘貼到圖表對象中,並將圖表對象保存爲png。不幸的是,經過這麼多次運行後,我一直不得不增加睡眠時間(根據David Zemens的建議)以克服運行時錯誤。最終,它會達到一個點,沒有任何睡眠可以做到這一點,我不僅要關閉Excel,而且要重新啓動PC以使其再次運行。希望通過使用文本框來解決它。我可以使用一個盒子並調整字母間距......現在就試試。 – user110084

+0

你將'.Name'設置爲'txtBx'與'i-1'連接,所以如果'i'可以是1到145,那麼'i-1'從0變到144.不知道那部分是不清楚。 –

回答

2

你想要做的是這樣的:

shp.ShapeRange.TextFrame2.TextRange.Font.Size = 20 

,其中20是任何你想要的大小。

我不知道爲什麼你的文本框得到錯誤的編號,但你寫的代碼實際上是給我0-143,而不是1-144,所以我懷疑有一些代碼改變我,你沒有放入問題或其他事情正在發生。

另外,弄清楚如何編寫這樣的東西的最簡單的方法是記錄一個宏,做你正在努力完成的任何事情,停止宏,然後看看代碼。

+0

'.Name =「TxtBx」&(i - 1)'很清楚爲什麼它從0到143 IMO。 ...或者我錯過了什麼? –

+0

@ Mat'sMug我同意,但是OP表示對他們來說,它實際上是1到144與'我 - 1'。 – OpiesDad

+0

謝謝@OpiesDad。我嘗試使用宏記錄器,但因爲它有「With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1,1).Font」,我不確定字符(1,1)的部分,玩它不成功 – user110084

相關問題