[問題] VBA如何新增文字方塊到儲存格中間

看板Office作者 (小朋友)時間8年前 (2018/02/18 11:35), 8年前編輯推噓0(0011)
留言11則, 1人參與, 8年前最新討論串1/1
軟體: 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://www.ptt.cc/bbs/Office/M.1518924945.A.D06.html ※ 編輯: noworneverev (111.253.28.82), 02/18/2018 11:37:41

02/18 11:59, 8年前 , 1F
將cel.height改減常數方式
02/18 11:59, 1F

02/18 11:59, 8年前 , 2F
測試是以減15
02/18 11:59, 2F
S大您好,感謝您的回覆,可是用減常數的方式, 在不同列高的狀況下,還是不能讓文字方塊完全置中在選定的儲存格 https://i.imgur.com/VhaCItT.jpg
我在想應該有什麼用變數的方式可以達成在任一種列高都可以置中 本來是有試過用offset抓下一列的top數值來定位, 可是試一試後想到如果下一列不是預設列高還是會跑掉XD ※ 編輯: noworneverev (111.253.28.82), 02/18/2018 12:21:37

02/18 12:25, 8年前 , 3F
原po要的置中是指https://i.imgur.com/HRrhPSX.jpg
這樣嗎
02/18 12:25, 3F

02/18 12:26, 8年前 , 4F
這是原文巨集碼在預設的列高16.5下所新增的文字方塊
02/18 12:26, 4F

02/18 12:28, 8年前 , 5F
這是減常數的方式所產生
02/18 12:28, 5F

02/18 12:30, 8年前 , 6F
的文字方塊,結果不是原po要的嗎?
02/18 12:30, 6F

02/18 13:01, 8年前 , 7F
h欄的結果的話
02/18 13:01, 7F

02/18 13:01, 8年前 , 8F
則以(50*0.42-cel.height)/2
02/18 13:01, 8F

02/18 13:15, 8年前 , 9F
因autosize,改以(21-cel.height)/2
02/18 13:15, 9F

02/18 13:32, 8年前 , 10F
如有可能多行(如L欄)的話,則以
02/18 13:32, 10F

02/18 13:32, 8年前 , 11F
非常感謝您!h欄就是我需要的,獲益良多,再次感謝 ※ 編輯: noworneverev (111.253.28.82), 02/18/2018 14:16:16
文章代碼(AID): #1QYFIHq6 (Office)
文章代碼(AID): #1QYFIHq6 (Office)