作者noworneverev (小朋友)
看板Office
標題[問題] VBA如何新增文字方塊到儲存格中間
時間Sun Feb 18 11:35:41 2018
軟體: Excel
版本: 2016
想用VBA來新增文字方塊到儲存格中間,目前寫到下面這樣:
Dim textbox As String
textbox = "A"
Dim rng As Range: Set rng = Application.Selection
Dim cel As Range
For Each cel In rng
With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, cel.Left +
(cel.Width / 2) - 3, cel.Top - cel.Height, 50, 50)
.TextFrame.Characters.Text = textbox
.TextFrame.AutoSize = True
End With
Next cel
在預設列高的狀況下是沒什麼問題,
可是如果該列比較高的話,用Height來控制位置的話,新增的文字方塊就會跑掉位置
想請問有什麼解法呢?
感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.253.28.82
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1518924945.A.D06.html
※ 編輯: noworneverev (111.253.28.82), 02/18/2018 11:37:41
1F:→ soyoso: 將cel.height改減常數方式 02/18 11:59
S大您好,感謝您的回覆,可是用減常數的方式,
在不同列高的狀況下,還是不能讓文字方塊完全置中在選定的儲存格
https://i.imgur.com/VhaCItT.jpg
我在想應該有什麼用變數的方式可以達成在任一種列高都可以置中
本來是有試過用offset抓下一列的top數值來定位,
可是試一試後想到如果下一列不是預設列高還是會跑掉XD
※ 編輯: noworneverev (111.253.28.82), 02/18/2018 12:21:37
4F:→ soyoso: 這是原文巨集碼在預設的列高16.5下所新增的文字方塊 02/18 12:26
6F:→ soyoso: 的文字方塊,結果不是原po要的嗎? 02/18 12:30
8F:→ soyoso: 則以(50*0.42-cel.height)/2 02/18 13:01
9F:→ soyoso: 因autosize,改以(21-cel.height)/2 02/18 13:15
10F:→ soyoso: 如有可能多行(如L欄)的話,則以 02/18 13:32
非常感謝您!h欄就是我需要的,獲益良多,再次感謝
※ 編輯: noworneverev (111.253.28.82), 02/18/2018 14:16:16