一个vb用法的问题

时间:2021-12-02 11:35:36

Option Explicit

Type UserData
    名字 As String
    身份证 As String
    地址  As String
    联系号码  As String
    金额  As String
    金额大写  As String
End Type

Sub 宏2()
Dim data As UserData
data.名字 = "吴xx"
data.身份证 = 123123
data.地址 = "xxxxxxxxxxxxxxxxxxxxx"
data.联系号码 = ""
data.金额 = "150000"
data.金额大写 = "壹拾伍万元整"

For Each x In data

     输出(x.名称 & x. 值)  '就是这儿 咋写? 遍历出名称和值

Next x

end Sub



这里用的是type 好像叫用户自定义类型 也不知道用type是否适合 是否有更合适的??

7 个解决方案

#1


你那样应该是没戏。可以绕着弯实现,但是代码显得很笨拙。给你个参考。


    Dim data As New Collection
    Dim index As New Collection
    Dim x

    index.Add "姓名"
    index.Add "身份证"
    index.Add "地址"
    index.Add "联系号码"
    index.Add "金额"
    index.Add "金额大写"

    data.Add "吴xx", "姓名"
    data.Add "123123", "身份证"
    data.Add "xxxxxxxxxxxxxxxxxxxxx", "地址"
    data.Add "", "联系号码"
    data.Add "150000", "金额"
    data.Add "壹拾伍万元整", "金额大写"
 
    For Each x In index
        Debug.Print (x & ": " & data(x))  '就是这儿 咋写? 遍历出名称和值
    Next x
 

#2


这种不是用dictionary好一点吗

#3


你的“代码”第23行, “名称”指的是什么?
 是“变量名称”吗?  一个vb用法的问题

输出“变量名称”根本没意义,只有变量的“值”才会有实际价值。
(如果只要“值”,那干吗又说 “遍历出名称和值”……)

另外,“For Each”只能枚举一个“集合”中的“项”,并不能用来枚举一个“自定义类型”中有哪些成员。

#4


其实,这种需求并不来源于客户,而是来源于程序员。
根本的原因就是因为懒,懒得逐个写出数据结构成员进行赋值或处理。实际上一个type是不能在程序中动态进行成员增减的,所以,type定义时就已经决定了成员是可以穷尽并且不会改变的,在代码中逐个罗列即可实现。但程序员就是懒,就是想减少几行代码,少敲几下键盘。本来最最简单高效的顺序执行语句,要搞出各种花样消耗不必要的CPU和内存。

#5


引用 1 楼 chewinggum 的回复:
你那样应该是没戏。可以绕着弯实现,但是代码显得很笨拙。给你个参考。


    Dim data As New Collection
    Dim index As New Collection
    Dim x

    index.Add "姓名"
    index.Add "身份证"
    index.Add "地址"
    index.Add "联系号码"
    index.Add "金额"
    index.Add "金额大写"

    data.Add "吴xx", "姓名"
    data.Add "123123", "身份证"
    data.Add "xxxxxxxxxxxxxxxxxxxxx", "地址"
    data.Add "", "联系号码"
    data.Add "150000", "金额"
    data.Add "壹拾伍万元整", "金额大写"
 
    For Each x In index
        Debug.Print (x & ": " & data(x))  '就是这儿 咋写? 遍历出名称和值
    Next x
 


其实......我刚知道vb有这玩意 我也是根据需求百度了个type这玩意! 感谢

#6


引用 2 楼 zzyong00 的回复:
这种不是用dictionary好一点吗


其实......我刚知道vb有dictionary这玩意 我也是根据需求百度了个type这玩意!

#7


引用 4 楼 chewinggum 的回复:
其实,这种需求并不来源于客户,而是来源于程序员。
根本的原因就是因为懒,懒得逐个写出数据结构成员进行赋值或处理。实际上一个type是不能在程序中动态进行成员增减的,所以,type定义时就已经决定了成员是可以穷尽并且不会改变的,在代码中逐个罗列即可实现。但程序员就是懒,就是想减少几行代码,少敲几下键盘。本来最最简单高效的顺序执行语句,要搞出各种花样消耗不必要的CPU和内存。


还真不是懒 这是给自己办公用的小代码  

key =要替换  value=替换后

#1


你那样应该是没戏。可以绕着弯实现,但是代码显得很笨拙。给你个参考。


    Dim data As New Collection
    Dim index As New Collection
    Dim x

    index.Add "姓名"
    index.Add "身份证"
    index.Add "地址"
    index.Add "联系号码"
    index.Add "金额"
    index.Add "金额大写"

    data.Add "吴xx", "姓名"
    data.Add "123123", "身份证"
    data.Add "xxxxxxxxxxxxxxxxxxxxx", "地址"
    data.Add "", "联系号码"
    data.Add "150000", "金额"
    data.Add "壹拾伍万元整", "金额大写"
 
    For Each x In index
        Debug.Print (x & ": " & data(x))  '就是这儿 咋写? 遍历出名称和值
    Next x
 

#2


这种不是用dictionary好一点吗

#3


你的“代码”第23行, “名称”指的是什么?
 是“变量名称”吗?  一个vb用法的问题

输出“变量名称”根本没意义,只有变量的“值”才会有实际价值。
(如果只要“值”,那干吗又说 “遍历出名称和值”……)

另外,“For Each”只能枚举一个“集合”中的“项”,并不能用来枚举一个“自定义类型”中有哪些成员。

#4


其实,这种需求并不来源于客户,而是来源于程序员。
根本的原因就是因为懒,懒得逐个写出数据结构成员进行赋值或处理。实际上一个type是不能在程序中动态进行成员增减的,所以,type定义时就已经决定了成员是可以穷尽并且不会改变的,在代码中逐个罗列即可实现。但程序员就是懒,就是想减少几行代码,少敲几下键盘。本来最最简单高效的顺序执行语句,要搞出各种花样消耗不必要的CPU和内存。

#5


引用 1 楼 chewinggum 的回复:
你那样应该是没戏。可以绕着弯实现,但是代码显得很笨拙。给你个参考。


    Dim data As New Collection
    Dim index As New Collection
    Dim x

    index.Add "姓名"
    index.Add "身份证"
    index.Add "地址"
    index.Add "联系号码"
    index.Add "金额"
    index.Add "金额大写"

    data.Add "吴xx", "姓名"
    data.Add "123123", "身份证"
    data.Add "xxxxxxxxxxxxxxxxxxxxx", "地址"
    data.Add "", "联系号码"
    data.Add "150000", "金额"
    data.Add "壹拾伍万元整", "金额大写"
 
    For Each x In index
        Debug.Print (x & ": " & data(x))  '就是这儿 咋写? 遍历出名称和值
    Next x
 


其实......我刚知道vb有这玩意 我也是根据需求百度了个type这玩意! 感谢

#6


引用 2 楼 zzyong00 的回复:
这种不是用dictionary好一点吗


其实......我刚知道vb有dictionary这玩意 我也是根据需求百度了个type这玩意!

#7


引用 4 楼 chewinggum 的回复:
其实,这种需求并不来源于客户,而是来源于程序员。
根本的原因就是因为懒,懒得逐个写出数据结构成员进行赋值或处理。实际上一个type是不能在程序中动态进行成员增减的,所以,type定义时就已经决定了成员是可以穷尽并且不会改变的,在代码中逐个罗列即可实现。但程序员就是懒,就是想减少几行代码,少敲几下键盘。本来最最简单高效的顺序执行语句,要搞出各种花样消耗不必要的CPU和内存。


还真不是懒 这是给自己办公用的小代码  

key =要替换  value=替换后