Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4845|回复: 9

[已解决]自动加入批注后我想让批注内容左右对齐怎么实现?

[复制链接]
发表于 2015-3-18 06:52 | 显示全部楼层 |阅读模式
自动加入批注后我想让批注内容左右对齐怎么实现?主要为了美观,看着整齐,希望以最长的数字为标准,数字短的前面加空格,这样让每行显示左右对齐,详情见附件 如何让批注内容左右对齐.zip (19.79 KB, 下载次数: 18)
发表于 2015-3-18 09:04 | 显示全部楼层
格式对齐里貌似没有这个功能。
约定一个长度,不够的在中间补上空格。
回复

使用道具 举报

 楼主| 发表于 2015-3-18 09:17 | 显示全部楼层
本帖最后由 jessylake 于 2015-3-18 09:19 编辑
hwc2ycy 发表于 2015-3-18 09:04
格式对齐里貌似没有这个功能。
约定一个长度,不够的在中间补上空格。


我也是这个想法,补空格,但总不成功,我很想把最后的回车符去掉,不知为什么一去掉,好像中间的回车符也去掉了,显示成一长行
回复

使用道具 举报

发表于 2015-3-18 09:19 | 显示全部楼层
本帖最后由 dsmch 于 2015-3-18 09:20 编辑
  1. Sub Macro1()
  2. Dim j%, s
  3. On Error Resume Next
  4. Sheets(1).Activate
  5. mymax = 0
  6. For j = 6 To 10
  7.     If Cells(10, j).Value > 0 Then
  8.     x = Len(Cells(9, j)) + Len(Cells(10, j))
  9.     If mymax < x Then mymax = x
  10.     End If
  11. Next
  12. For j = 6 To 10
  13.     If Cells(10, j).Value > 0 Then
  14.         x = Len(Cells(9, j)) + Len(Cells(10, j))
  15.         x2 = mymax - x
  16.         s = s & Cells(9, j) & String(x2, " ") & Cells(10, j) & "股" & Chr(10)
  17.     End If
  18. Next
  19. Cells(5, 5).Comment.Delete
  20. Cells(5, 5).AddComment
  21. With Cells(5, 5).Comment
  22.     .Visible = False
  23.     .Text Text:=s
  24.     .Shape.TextFrame.AutoSize = True
  25.     .Shape.TextFrame.Characters.Font.Name = "宋体"
  26.     .Shape.TextFrame.Characters.Font.FontStyle = "加粗"
  27.     .Shape.TextFrame.Characters.Font.Size = 9
  28. End With
  29. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2015-3-18 09:22 | 显示全部楼层
dsmch 发表于 2015-3-18 09:19

谢谢老师,但和我要求显示的还有差距,中间空格太多了,数字部分长度为最大数的长度,还有就是最后的回车符号要去掉,这样批注下面才不会多出空行,我正纠结这个问题呢,感觉一去掉,怎么变成一长行了

点评

代码已修改,请重新测试  发表于 2015-3-18 09:41
回复

使用道具 举报

 楼主| 发表于 2015-3-18 10:00 | 显示全部楼层
jessylake 发表于 2015-3-18 09:22
谢谢老师,但和我要求显示的还有差距,中间空格太多了,数字部分长度为最大数的长度,还有就是最后的回车 ...

最后的问题还没解决,批注中最后的回车符号要去掉,这样批注下面才不会多出空行,我正纠结这个问题呢,感觉一去掉,怎么变成一长行了
回复

使用道具 举报

发表于 2015-3-18 10:19 | 显示全部楼层    本楼为最佳答案   
Sub Macro1()
Dim j%, s
On Error Resume Next
Sheets(1).Activate
mymax = 0
For j = 6 To 10
    If Cells(10, j).Value > 0 Then
    x = Len(Cells(9, j)) + Len(Cells(10, j))
    If mymax < x Then mymax = x
    End If
Next
For j = 6 To 10
    If Cells(10, j).Value > 0 Then
        x = Len(Cells(9, j)) + Len(Cells(10, j))
        x2 = mymax - x
        s = s & Cells(9, j) & String(x2, " ") & Cells(10, j) & "股" & Chr(10)
    End If
Next
Cells(5, 5).Comment.Delete
Cells(5, 5).AddComment
With Cells(5, 5).Comment
    .Visible = False
    .Text Text:=Mid(s, 1, Len(s) - 1)  
    .Shape.TextFrame.AutoSize = True
    .Shape.TextFrame.Characters.Font.Name = "宋体"
    .Shape.TextFrame.Characters.Font.FontStyle = "加粗"
    .Shape.TextFrame.Characters.Font.Size = 9
End With
End Sub

评分

参与人数 1 +3 收起 理由
jessylake + 3 神马都是浮云

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-3-18 10:23 | 显示全部楼层
dsmch 发表于 2015-3-18 10:19
Sub Macro1()
Dim j%, s
On Error Resume Next

谢谢老师,真的很完美,想问问,为什么我用Left(s, Len(s) - 1)  想去掉最后的回车符,但好像所有回车符都没了,成一条长行了

点评

结果是一样的。  发表于 2015-3-18 10:31
回复

使用道具 举报

 楼主| 发表于 2015-3-18 10:34 | 显示全部楼层
jessylake 发表于 2015-3-18 10:23
谢谢老师,真的很完美,想问问,为什么我用Left(s, Len(s) - 1)  想去掉最后的回车符,但好像所有回车符都 ...

我怎么用起来不一样啊,全排成一行了,我哪里用错了,老师给指点一下
回复

使用道具 举报

 楼主| 发表于 2015-3-18 11:54 | 显示全部楼层
jessylake 发表于 2015-3-18 10:23
谢谢老师,真的很完美,想问问,为什么我用Left(s, Len(s) - 1)  想去掉最后的回车符,但好像所有回车符都 ...

搞定了,去回车那句我一犯晕放到循环语句里面了,再次感谢老师!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 19:18 , Processed in 1.014492 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表