1、可以用len函数
2、如果是文件,可以先读到text box中,然后取每行内容,再取每行字符个数,相加。不知好用不?

解决方案 »

  1.   

    ' 正确返回字符长度(包括汉字)
    Dim HzString As String
    Dim HzLen As Long
    HzString = "我爱你China"
    HzLen = LenB(StrConv(HzString, vbFromUnicode))' HzLen 为 11
      

  2.   

    我在取字符所占像素试的方法是:
    首先确定字号,然后把某一个字符放到一个隐藏起来的Lable中,Lable的AutoSize设为True这样,写完字符后,Lable的Height就是字的Height,字的Width自然就是Lable的Width
    如果采用的不是Pixel做的单位,就用Screen.TwipsPerPixelX Screen.TwipsPerPixelY把它转换成Pixel,就可以得到这个字符占的像素。 
      

  3.   

    首先你要找准对象,如果你是要计算Lable1的字宽,你就该用Lable1.TextWidth(当然,最后把Label1.AutoSize设为True),
    默认的TextWidth是计算Form窗口的字宽,如果你不想用Label,可以把Form的字体改为你想计算的字体大小就行了。
    像素间的转换如cobe所说,要把Form1.ScaleMode=3 ' Pixel比如:
    Label1的字体为宋体,字号为小三Form1.ScaleMode=3 ' Pixel
    Label1.AutoSize=True
    strLen=Label1.TextWidth(我爱你!)
    '(这样就不用换算像素了)
      

  4.   

    strLen=Label1.TextWidth("我爱你!")
      

  5.   

    to cobe:
      你的方法很巧妙,但有没有直接算出其象素长度的方法,如果没有更好的方法,两天内我就给大家加分.
      

  6.   

    API函数 GetSystemMetrics,很可能就是你所要的。参数请到MSDN里去查。
      

  7.   

    用api函数可以较直觉地获得文本串长度!
    Public Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As SIZE) As Long
    其中:hdc:  设备场景的句柄
    lpszString: 欲度量其范围的一个字串
    cbString: 字串的长度
    lpSize:这个叔祖用于装载字串范围的高度和宽度信息。
      

  8.   

    to hanjq:
        你的方法我试了,但不太会设参数,控件不提供这个hDC属性,我用hWnd属性来冒充一下,可是不好使。下面是我测试的一段代码:
    Public Type SIZE
         cx As Long
         cy As Long
    End TypePublic Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As SIZE) As LongPrivate Sub Form_Load()
        Dim t As SIZE
        GetTextExtentPoint32 Text1.hWnd, "ABC", 3, t
        MsgBox "cy=" & t.cy & ",cx=" & t.cx
    End Sub
    返回值总是"cy=0,cx=0",不知如何设hdc这个值,还得请您指点迷律。