新手求助,大神来瞅瞅,给点建议

sinat_34649851 2016-04-13 07:04:44
看图 图中文本框1是我从别处复制过来的信息,信息格式都是一个{ }里面有Name 啥的 格式是固定的 现在我要把1中的信息转换到2里面去 比如 姓名 这个语句我该怎么写?? 谢谢大神 感觉要定位到name 然后获取引号里面的内容 大神帮忙啊 谢谢 我是用VBA做的
原始文本格式如下:
{Name :"廪廷鑫",
CardNo. :"370786199103145417",
Sex :"男",
Birthday :"1991年03月14日",
Address :"山东省昌邑市作山镇颜家庄村127号",
Folk :"汉"}


...全文
110 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2016-04-14
  • 打赏
  • 举报
回复
楼主,你的那个人的身份信息是真实的么? 


舉杯邀明月 2016-04-14
  • 打赏
  • 举报
回复
我在VB6中写的代码,这段代码在VBA中可以直接使用。
舉杯邀明月 2016-04-14
  • 打赏
  • 举报
回复
直接上代码给你看:  
Option Explicit

Private Sub Command1_Click()
   Dim aBuff() As String
   Dim strText As String
   Dim p1&, p2 As Long
   Dim i    As Long
   
   strText = "{Name           :""廪廷鑫""," & _
               "CardNo.        :""370786199103145417"", " & _
               "Sex            :""男""," & _
               "Birthday       :""1991年03月14日""," & _
               "Address        :""山东省昌邑市作山镇颜家庄村127号""," & _
               "Folk           :""汉""}"
   ' 拆分项目
   aBuff = Split(strText, ",")
   ' 提取数据
   For i = 0 To UBound(aBuff)
      strText = aBuff(i)
      p1 = InStr(1, strText, ":") + 2&
      p2 = InStr(p1, strText, """")
      aBuff(i) = Mid$(strText, p1, p2 - p1)
   Next
   ' 显示处理结果:
   For i = 0 To UBound(aBuff)
      Debug.Print i + 1; aBuff(i)
   Next
End Sub
'  处理结果:
' 1 廪廷鑫
' 2 370786199103145417
' 3 男
' 4 1991年03月14日
' 5 山东省昌邑市作山镇颜家庄村127号
' 6 汉
舉杯邀明月 2016-04-14
  • 打赏
  • 举报
回复
你在7楼的处理方式是正确的。 如果在VB6程序中,TextBox可以用控件数组,用处理结果给对应控件赋值就很方便了。 但有点遗憾的是,VBA环境的窗口中,无法用控件数组。 处理方式就如你7楼那样, 否则只能多条并列语句对多个控件赋值了。
sinat_34649851 2016-04-14
  • 打赏
  • 举报
回复
sinat_34649851 2016-04-14
  • 打赏
  • 举报
回复

Private Sub TextBox1_Change()
Dim aBuff() As String
Dim strText As String
Dim p1&, p2 As Long
Dim i As Long
strText = TextBox1.Text
aBuff = Split(strText, ",")
For i = 0 To UBound(aBuff)
strText = aBuff(i)
p1 = InStr(1, strText, ":") + 2&
p2 = InStr(p1, strText, """")
aBuff(i) = Mid$(strText, p1, p2 - p1)
Next


For i = 0 To UBound(aBuff)
Me.Controls("Textbox" & (i + 2)).Text = aBuff(i)
Next
End Sub
sinat_34649851 2016-04-14
  • 打赏
  • 举报
回复
' 显示处理结果: For i = 0 To UBound(aBuff) Debug.Print i + 1; aBuff(i) Next End Sub 显示处理结果: TextBox2.Text = aBuff(0) TextBox3.Text = aBuff(1) TextBox4.Text = aBuff(2) TextBox5.Text = aBuff(3) TextBox6.Text = aBuff(4) TextBox7.Text = aBuff(5) End Sub 大神作出来了 就是显示结果有问题啊 你看看 怎么修改 textbox(i+2)貌似不能这样写啊
一如既往哈 2016-04-13
  • 打赏
  • 举报
回复
哦,你那要加一个生日的
一如既往哈 2016-04-13
  • 打赏
  • 举报
回复
试试:Text2为控件数组
Option Explicit
Private Sub Command1_Click()
    Dim w1 As String, i As Integer, ww, wd
    w1 = Replace(Text1.Text, "{", "")
    w1 = Replace(w1, "}", "")
    w1 = Replace(w1, """", "")
    ww = Split(w1, ",")
    If UBound(ww) = 5 Then
        For i = 0 To UBound(ww)
            wd = Split(ww(i), ":")
            If UBound(wd) = 1 Then Text2(i).Text = wd(1)
        Next
    End If
End Sub

....

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧