Dim strMess As String
dim a as long
strMess = "abcdef"
a=strmess
Call ShowStr(a)
......Public Sub ShowStr(lTest As Long)
    dim b as string
    b=lTest
    MsgBox b
End Sub

解决方案 »

  1.   

    你的意思是不是说如何把字符串转换成long型和如何转换回来?
      

  2.   

    public col as new collection
    -----------
    Dim strMess As String
    dim a as long
    strMess = "abcdef"
    a=getMesID(strMess)
    Call ShowStr(a)
    ......public function getMesID(byval sMes as string) as long
       col.add sMes
       getMesID=col.count
    end function
    Public Sub ShowStr(lTest As Long)
        dim b as string
        b=col(lTest)
        MsgBox b
    End Sub
      

  3.   

    不行的.别浪费时间了.一个Long型的数据容量只有4个字节.而一个字符串的内容可能有2G,你说信息怎么传递.至少直接传递是不行的吧.
    要么就用DeD(似水年华)的方法,用Collection来保存信息,这是传递的lTest其实是索引,而不是内容.
    顺便问一句,为什么有这样的要求呢?
      

  4.   

    是我的一个朋友托我办的事,lujianjian说得对,直接传递是不行的。
    我通过转换后,可以实现3个字符的传递,并且只有当字符串中无汉字才行。
    程序如下:
    Public Sub ShowStr(lTest As Long)
        Dim strOld As String
        Dim strTest As String
        Dim strTmp As String
        Dim i As Integer
        
        
        strTest = CStr(lTest)
        If Val(Left$(strTest, 1)) > 3 Then strTest = "0" + strTest
        For i = 1 To Len(strTest) Step 3 '将Ascii码还原成字符
            strTmp = Chr(Mid(strTest, i, 3))
            strOld = strOld + strTmp
        Next i
        
        MsgBox strOld
    End SubPrivate Sub Form_Load()
        Dim strMess As String
        
        strMess = "abc"
        
        ShowStr str2lng(strMess)
        
        End
    End SubPublic Function str2lng(ByVal strSour As String) As Long
        Dim i As Integer
        Dim sAscii As String
        Dim sResult As String
        
        For i = 1 To Len(strSour) '将字符转换成对应的Ascii码
            sAscii = Format$(Asc(Mid$(strSour, i, 1)), "0##")
            sResult = sResult + sAscii
        Next i
        
        str2lng = CLng(sResult)
    End Function
    我已经叫朋友考虑用别的办法了(他好象需要在程序中投递消息到另一个程序)
    谢谢各位。