标题:求:数列输出左对齐的问题
只看楼主
phyccylb
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-12-25
结帖率:100%
已结贴  问题点数:16 回复次数:5 
求:数列输出左对齐的问题
各位高手给帮个忙,菜鸟一个求救
输出到text1中格式如下:
            12345       22465       3248           
1 东                                         45272   
            23456       32475       4468     
2 东南西北                                   41278
            12345       22467       3254      
3                                            27654


中文和数字字符串混合输出最后一列如何对齐?菜鸟求详细代码,谢谢

  
         
搜索更多相关主题的帖子: 中文 混合 字符串 如何 
2013-03-28 10:57
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
你自定义一个函数,负责给数据增加前导空格,那就可以对齐了。
调用时很简单:
print #1,spacelen(1,3);spacelen("东",12);spacelen("45272",8)
函数会自动到前面添加空格,使字符串为指定的长度,那就可以对齐了。


-----------------------------------------------------------------
Public Function spacelen(cs As Variant, slen As Long)
Dim i As Long
Dim s() As Byte
'不使用len函数,是因为 中文字符宽度问题
s = StrConv(cs, vbFromUnicode)
i = UBound(s) + 1
If i < slen Then
    spacelen = Space(slen - i) & cs
Else
spacelen = cs
End If
End Function

授人于鱼,不如授人于渔
早已停用QQ了
2013-03-28 11:38
phyccylb
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-12-25
得分:0 
以下是引用风吹过b在2013-3-28 11:38:59的发言:

你自定义一个函数,负责给数据增加前导空格,那就可以对齐了。
调用时很简单:
print #1,spacelen(1,3);spacelen("东",12);spacelen("45272",8)
函数会自动到前面添加空格,使字符串为指定的长度,那就可以对齐了。
 
 
-----------------------------------------------------------------
Public Function spacelen(cs As Variant, slen As Long)
Dim i As Long
Dim s() As Byte
'不使用len函数,是因为 中文字符宽度问题
s = StrConv(cs, vbFromUnicode)
i = UBound(s) + 1
If i < slen Then
    spacelen = Space(slen - i) & cs
Else
spacelen = cs
End If
End Function
谢谢风吹过的帮助问题已基本解决,但是中文字体是否可以左侧可以对齐?那样岂不更美观,望盼
2013-03-28 14:00
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
左边齐,就是在尾部加空格。那么你再复制一个 函数 ,改一下函数里的 添加空格的位置就是了。
然后这些中文就换过函数就是了。

----------------------------------
Public Function spacelen(cs As Variant, slen As Long)         '在头添加空格以达到指定长度
Dim i As Long
Dim s() As Byte
'不使用len函数,是因为 中文字符宽度问题
s = StrConv(cs, vbFromUnicode)
i = UBound(s) + 1
If i < slen Then
    spacelen = Space(slen - i) & cs                 '空格加到头
Else
spacelen = cs
End If
End Function

Public Function spacelenR(cs As Variant, slen As Long)         '在尾添加空格以达到指定长度
Dim i As Long
Dim s() As Byte
'不使用len函数,是因为 中文字符宽度问题
s = StrConv(cs, vbFromUnicode)
i = UBound(s) + 1
If i < slen Then
    spacelen = cs & Space(slen - i)              '空格加到尾
Else
spacelen = cs
End If
End Function

授人于鱼,不如授人于渔
早已停用QQ了
2013-03-29 09:06
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:16 
如果你要中间对齐,那这个函数就可以改成 二端加空格
也只能改那一句就行了。

授人于鱼,不如授人于渔
早已停用QQ了
2013-03-29 09:06
phyccylb
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-12-25
得分:0 
以下是引用风吹过b在2013-3-29 09:06:12的发言:

左边齐,就是在尾部加空格。那么你再复制一个 函数 ,改一下函数里的 添加空格的位置就是了。
然后这些中文就换过函数就是了。
 
----------------------------------
Public Function spacelen(cs As Variant, slen As Long)         '在头添加空格以达到指定长度
Dim i As Long  
Dim s() As Byte  
'不使用len函数,是因为 中文字符宽度问题  
s = StrConv(cs, vbFromUnicode)  
i = UBound(s) + 1  
If i < slen Then  
    spacelen = Space(slen - i) & cs                 '空格加到头
Else  
spacelen = cs  
End If  
End Function
 
Public Function spacelenR(cs As Variant, slen As Long)         '在尾添加空格以达到指定长度
Dim i As Long  
Dim s() As Byte  
'不使用len函数,是因为 中文字符宽度问题  
s = StrConv(cs, vbFromUnicode)  
i = UBound(s) + 1  
If i < slen Then  
    spacelen = cs & Space(slen - i)              '空格加到尾
Else  
spacelen = cs  
End If  
End Function
此问题已解决,谢谢风吹过的帮助,十分的感谢
2013-04-01 10:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-402143-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.039873 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved