VBA:设置制表位为x厘米到当前插入点的右侧

你好,我们又见面了,

如果我有一些代码,在当前插入点插入一个标签(假设ActiveWindow.Selection.Type = ppSelectionText),有没有办法来设置制表位要,说0.75厘米到目前的右边(或者应该说是“原始”)插入点?

我想另一种方式把它是如何获取相对于textframe的左边缘光标当前的水平位置?

干杯
丰富

--------------解决方案-------------

如果你只是有光标插入你不能在正常的方式使用boundleft。

也许你可以用类似玩法:

子getleft()
昏暗otxR作为的TextRange
昏暗l由于龙
设置otxR = ActiveWindow.Selection.TextRange
L = otxR.Start
MSGBOX otxR.Parent.TextRange.Characters(L).BoundLeft
结束小组

约翰,

这个人真的打了我。

你的回答是什么,我很害怕,但伊塔€™的最佳I’已经得到了现在。 于是我开始编码来记录子弹的所有设置,但couldn’吨弄清楚如何获得bullet’的颜色。 保险业监督€™已经看到在.Font的。颜色属性没有在智能感知总是表现出过去,但ParagraphFormat.Bullet.Font.Color,它wouldn’吨编译。 我终于找到.Bullet.Font.Fill.ForeColor.RGB!

要添加制表位之前存储子弹的设置,我用:

昏暗的TF2作为TextFrame2,lnParaNum长,bBulletsOn由于布尔
昏暗xBulletType作为PpBulletType
昏暗lnBulletChar长,lnBulletColour长,lnBulletSize只要
昏暗lnFirstLineInd长,lnLeftInd长,lnIndLevel只要
昏暗strBulletFont作为字符串
昏暗bLRA由于布尔,bLRB为布尔,bLRW由于布尔
昏暗dbSpaceAfter为DOUBLE,dbSpaceBefore作为双,dbSpaceWithin为双

随着ActiveWindow.Selection
在选择开始'获取款号:
lnParaNum = .ShapeRange(1).TextFrame.TextRange _
.Characters(0,.TextRange.start).Paragraphs.Count

设置TF2 = .ShapeRange(1).TextFrame2
结束与

与tf2.TextRange.Paragraphs(lnParaNum,1).ParagraphFormat

如果.Bullet.Visible然后
bBulletsOn = TRUE

在错误恢复下一页

xBulletType = .Bullet.Type

â€〜如果xBulletType = ppBulletNumbered然后
â€〜strBulletFont = .Bullet.Font.NameAscii
â€〜否则
â€〜lnBulletChar = .Bullet.Character
â€〜strBulletFont = .Bullet.Font.Name
â€〜结束如果
â€〜
â€〜lnBulletSize = .Bullet.RelativeSize

lnBulletColour = .Bullet.Font.Fill.ForeColor.RGB

lnFirstLineInd = .FirstLineIndent
lnLeftInd = .LeftIndent
lnIndLevel = .IndentLevel

bLRA = .LineRuleAfter
bLRB = .LineRuleBefore
bLRW = .LineRuleWithin

dbSpaceAfter = .SpaceAfter
dbSpaceBefore = .SpaceBefore
dbSpaceWithin = .SpaceWithin

对错误转到0
万一
结束与

然后把子弹或申请制表位后回编号,我使用:

与tf2.TextRange.Paragraphs(lnParaNum,1).ParagraphFormat
如果bBulletsOn然后

在错误恢复下一页

如果xBulletType = ppBulletNumbered然后
如果没有.Bullet.Visible然后Application.CommandBars.ExecuteMso(“NumberingGallery”)
其他
如果没有.Bullet.Visible然后Application.CommandBars.ExecuteMso(“BulletsGallery”)
万一

.Bullet.Font.Fill.ForeColor.RGB = lnBulletColour

.LeftIndent = lnLeftInd
.FirstLineIndent = lnFirstLineInd
.IndentLevel = lnIndLevel

.LineRuleAfter = bLRA
.LineRuleBefore = bLRB
.LineRuleWithin = bLRW

.SpaceAfter = dbSpaceAfter
.SpaceBefore = dbSpaceBefore
.SpaceWithin = dbSpaceWithin

对错误转到0
万一
结束与

请注意,只有通过使用Application.CommandBars.ExecuteMso(“BulletsGallery”)(或它的编号等价物)的我能得到重新设置的子弹,作为适当的多级子弹,使得重新设置子弹可以是凹入仍然拿起格式从主不同的缩进量(以一个占位符时)。 使用这种方法意味着我可以弄死记录bullet’的字体,字符和相对大小。

正如你提到的,首先和左边距加入制表位获得手段传给,而且任何linespacing格式被杀害呢!

我也有各种各样的搭配,例如,在编号列表编号拿起段落的第一个字符的字体和字体颜色,尽管问题的代码设置字体和字体颜色。 随着子弹.Bullet.UseTextColor.Bullet.UseTextFont属性被设置子弹的字体和字体颜色改变(假),但是这与didnâ编号列表€™吨的工作。 我绕着它在我的符号前加一个零宽度字符!

strBulletFont = .Bullet.Font.Name没有为编号列表的工作-我不得不用.Font.NameAscii得到一个合理的字体名!

不管怎样,再次感谢。

干杯
丰富

如果你只是有光标插入你不能在正常的方式使用boundleft。

也许你可以用类似玩法:

子getleft()
昏暗otxR作为的TextRange
昏暗l由于龙
设置otxR = ActiveWindow.Selection.TextRange
L = otxR.Start
MSGBOX otxR.Parent.TextRange.Characters(L).BoundLeft
结束小组

谢谢约翰,在正确的方向上又有微调。

但现在我有一个问题....如果我有子弹,我怎么可以添加制表位不被关掉了子弹?

下面是我的代码snipet:

昏暗TF作为TextFrame
集TF = ActiveWindow.Selection.ShapeRange(1).TextFrame

随着ActiveWindow.Selection.TextRange
tf.Ruler.TabStops.Add ppTabStopLeft,.Characters(1,1).BoundLeft + 21.25984252
结束与

任何想法,为什么子弹都关掉? 而且是有办法添加制表位不失子弹?

干杯
丰富

PS。 此外,一个人如何可以添加制表位,只将特定的段落(如你可以在UI)使用VBA? 该.Ruler是.TextFrame的一部分,因此任何制表位将被应用到的整个形状。 我缺少的是在这里吗?

[编辑:好的,我现在看到这个问题的答案最后一点:

昏暗的TF2作为TextFrame2
设置TF2 = ActiveWindow.Selection.ShapeRange(1).TextFrame2
tf2.TextRange.Paragraphs(lnParaNum,1).ParagraphFormat.TabStops.Add .....等

(感谢你的帮助,你给了史蒂夫在这里:http://www.pcreview.co.uk/forums/ppt-2007-vba-question-t3352449.html),但它仍然关闭子弹!]

我不明白给史蒂夫的帮助非常频繁;-)

我不知道为什么子弹手段传给,它们不会在2003年关闭(他们仍然是在2010年)

此外,它不是所有类型的子弹(尝试例如空心方)与第一和左边距重置为零。

也许你会需要存储的类型,规模和利润等方面的设置,并重新申请。

约翰,

这个人真的打了我。

你的回答是什么,我很害怕,但伊塔€™的最佳I’已经得到了现在。 于是我开始编码来记录子弹的所有设置,但couldn’吨弄清楚如何获得bullet’的颜色。 保险业监督€™已经看到在.Font的。颜色属性没有在智能感知总是表现出过去,但ParagraphFormat.Bullet.Font.Color,它wouldn’吨编译。 我终于找到.Bullet.Font.Fill.ForeColor.RGB!

要添加制表位之前存储子弹的设置,我用:

昏暗的TF2作为TextFrame2,lnParaNum长,bBulletsOn由于布尔
昏暗xBulletType作为PpBulletType
昏暗lnBulletChar长,lnBulletColour长,lnBulletSize只要
昏暗lnFirstLineInd长,lnLeftInd长,lnIndLevel只要
昏暗strBulletFont作为字符串
昏暗bLRA由于布尔,bLRB为布尔,bLRW由于布尔
昏暗dbSpaceAfter为DOUBLE,dbSpaceBefore作为双,dbSpaceWithin为双

随着ActiveWindow.Selection
在选择开始'获取款号:
lnParaNum = .ShapeRange(1).TextFrame.TextRange _
.Characters(0,.TextRange.start).Paragraphs.Count

设置TF2 = .ShapeRange(1).TextFrame2
结束与

与tf2.TextRange.Paragraphs(lnParaNum,1).ParagraphFormat

如果.Bullet.Visible然后
bBulletsOn = TRUE

在错误恢复下一页

xBulletType = .Bullet.Type

â€〜如果xBulletType = ppBulletNumbered然后
â€〜strBulletFont = .Bullet.Font.NameAscii
â€〜否则
â€〜lnBulletChar = .Bullet.Character
â€〜strBulletFont = .Bullet.Font.Name
â€〜结束如果
â€〜
â€〜lnBulletSize = .Bullet.RelativeSize

lnBulletColour = .Bullet.Font.Fill.ForeColor.RGB

lnFirstLineInd = .FirstLineIndent
lnLeftInd = .LeftIndent
lnIndLevel = .IndentLevel

bLRA = .LineRuleAfter
bLRB = .LineRuleBefore
bLRW = .LineRuleWithin

dbSpaceAfter = .SpaceAfter
dbSpaceBefore = .SpaceBefore
dbSpaceWithin = .SpaceWithin

对错误转到0
万一
结束与

然后把子弹或申请制表位后回编号,我使用:

与tf2.TextRange.Paragraphs(lnParaNum,1).ParagraphFormat
如果bBulletsOn然后

在错误恢复下一页

如果xBulletType = ppBulletNumbered然后
如果没有.Bullet.Visible然后Application.CommandBars.ExecuteMso(“NumberingGallery”)
其他
如果没有.Bullet.Visible然后Application.CommandBars.ExecuteMso(“BulletsGallery”)
万一

.Bullet.Font.Fill.ForeColor.RGB = lnBulletColour

.LeftIndent = lnLeftInd
.FirstLineIndent = lnFirstLineInd
.IndentLevel = lnIndLevel

.LineRuleAfter = bLRA
.LineRuleBefore = bLRB
.LineRuleWithin = bLRW

.SpaceAfter = dbSpaceAfter
.SpaceBefore = dbSpaceBefore
.SpaceWithin = dbSpaceWithin

对错误转到0
万一
结束与

请注意,只有通过使用Application.CommandBars.ExecuteMso(“BulletsGallery”)(或它的编号等价物)的我能得到重新设置的子弹,作为适当的多级子弹,使得重新设置子弹可以是凹入仍然拿起格式从主不同的缩进量(以一个占位符时)。 使用这种方法意味着我可以弄死记录bullet’的字体,字符和相对大小。

正如你提到的,首先和左边距加入制表位获得手段传给,而且任何linespacing格式被杀害呢!

我也有各种各样的搭配,例如,在编号列表编号拿起段落的第一个字符的字体和字体颜色,尽管问题的代码设置字体和字体颜色。 随着子弹.Bullet.UseTextColor.Bullet.UseTextFont属性被设置子弹的字体和字体颜色改变(假),但是这与didnâ编号列表€™吨的工作。 我绕着它在我的符号前加一个零宽度字符!

strBulletFont = .Bullet.Font.Name没有为编号列表的工作-我不得不用.Font.NameAscii得到一个合理的字体名!

不管怎样,再次感谢。

干杯
丰富

分类:办公室 时间:2012-11-10 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.336 (s). 10 q(s)