作者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/cn.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