自定义类型

jimmy1866 2010-01-08 11:20:16
模块中:
Public Type WordRateStruct
pstrWordName As String
pdouRate As Double
End Type

‘传自定义类型,返回自定义类型
Public Function ArraySort(ByRef ptempWordNameAndRate() As WordRateStruct) As WordRateStruct

‘ptempWordNameAndRate操作

ArraySort = ptempWordNameAndRate

End Function

窗体中:
Private Sub Form_Load()

Dim Str(1 To 5) As WordRateStruct
Dim pWordNameAndRate(1 To 5) As WordRateStruct
' ArraySort(pWordNameAndRate)
Str = ArraySort(pWordNameAndRate) 'ERROR 数组不能赋值
end Sub
...全文
229 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimmy1866 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 vbman2003 的回复:]
引用 4 楼 jimmy1866 的回复:
自已顶下。。。。


代码给你改过了,说白了就是在你模块中的函数后面加上()号,表示返回的是数组。还有窗口代码中str要是动态数组你的写法才正确...
顶下还有什么问题吗?
[/Quote]

谢谢 刚开始没太注意看。。。不好意思。。十分感谢。。。
liguicd 2010-01-11
  • 打赏
  • 举报
回复
顶顶
guyehanxinlei 2010-01-11
  • 打赏
  • 举报
回复
UP
jimmy1866 2010-01-11
  • 打赏
  • 举报
回复
To casalina 不知道是不是必需的,但是用引用传递 解决了我的问题。。。
casalina 2010-01-11
  • 打赏
  • 举报
回复
原来是这样,自定义过程用作参数传递必须是引用传递,不能使用值传递
jimmy1866 2010-01-11
  • 打赏
  • 举报
回复
jy497759649 不可以 提示 不能给数组赋值。。
我的目的 是按自定义类型里的某个字段值来排序的,函数返回排序过后的自定义类型数组

解决了,

传给函数的参数 用 引用传递 就可以了。。。谢谢大家的回答
xizh3276 2010-01-09
  • 打赏
  • 举报
回复
顶一下!
jimmy1866 2010-01-08
  • 打赏
  • 举报
回复
vbman2003: 理解完全正确!!!
jimmy1866 2010-01-08
  • 打赏
  • 举报
回复
要怎样接受 返回的自定义数组??
vbman2003 2010-01-08
  • 打赏
  • 举报
回复

'模块中:
Public Type WordRateStruct
pstrWordName As String
pdouRate As Double
End Type

‘传自定义类型,返回自定义类型
Public Function ArraySort(ByRef ptempWordNameAndRate() As WordRateStruct) As WordRateStruct() '<--你传入的是数组,返回也要是数组
'ptempWordNameAndRate操作
ArraySort = ptempWordNameAndRate
End Function

窗体中:
Private Sub Form_Load()

Dim Str() As WordRateStruct
Dim pWordNameAndRate(1 To 5) As WordRateStruct
'ArraySort(pWordNameAndRate)
Str = ArraySort(pWordNameAndRate) 'ERROR 数组不能赋值
end Sub

Sandrer 2010-01-08
  • 打赏
  • 举报
回复
我想不明白楼主这个函数究竟有什么作用?
PIBOT 2010-01-08
  • 打赏
  • 举报
回复
Str 要改为动态数组
vbman2003 2010-01-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jimmy1866 的回复:]
自已顶下。。。。
[/Quote]

代码给你改过了,说白了就是在你模块中的函数后面加上()号,表示返回的是数组。还有窗口代码中str要是动态数组你的写法才正确...
顶下还有什么问题吗?
jy497759649 2010-01-08
  • 打赏
  • 举报
回复
楼主,这样不是更简单、高效,省去了调用函数时的开销
Option Explicit
Private Type WordRateStruct
pstrWordName As String
pdouRate As Double
End Type

Private Sub Form_Load()
Dim Str() As WordRateStruct
Dim pWordNameAndRate(1 To 5) As WordRateStruct
Str = pWordNameAndRate
End Sub
jy497759649 2010-01-08
  • 打赏
  • 举报
回复
路过.....
jimmy1866 2010-01-08
  • 打赏
  • 举报
回复
自已顶下。。。。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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