永发信息网

VB ……数组,不允许作为对象模块的public 成员

答案:3  悬赏:0  手机版
解决时间 2021-03-08 00:02
  • 提问者网友:容嬷嬷拿针来
  • 2021-03-07 05:39
以下代码摘自某教材的关于MDL窗体那一章,我原封不动的copy的,编译时,出现如题的对话框,请问该如何解决,能否帮忙写个解决问题的代码?多谢。

Public CountForm As Integer '新建窗体计数
Public FileState(10) As Integer '窗体状态
Public document(10) As New frmchild '窗体对象数组

Private Sub MDIForm_Load()
CountForm = 1
End Sub

Private Sub mnuNew_Click()
'菜单,创建新的编辑区
document(CountForm).Tag = CountForm
document(CountForm).Caption = "无标题: " & CountForm
document(CountForm).Show
CountForm = CountForm + 1
End Sub

Private Sub mnuExit_Click()
Dim strMsg As String
Dim strFileName As String

Dim intResponse As Integer
'判断文本是否被改变
For i = 1 To 10
strFileName = " "
If FileState(i) = 1 Then
strFileName = document(i).Caption
strMsg = "[" & strFileName & "]中的文本已经改变,"
strMsg = strMsg & vbCrLf
strMsg = strMsg & "希望保存吗?"
intResponse = MsgBox(strMsg, 51, MDIWrite.Caption)
Select Case intResponse
Case 6
If Left(Screen.ActiveForm.Caption, 3) = "无标题" Then
'文件未保存,获取文件名
strFileName = "无标题.txt"
strFileName = GetFileName(strFileName)
Else
'窗体标题包含打开的文件名
strFileName = Screen.ActiveForm.Caption
End If

If strFileName <> "" Then
FileState(i) = 0
MsgBox "这是保存文件的示意!"
End If
Case 7 '选择"否",卸载
Case 2 '选择"取消",卸载
End Select
End If
Unload document(i) '依次卸载窗体
Next i
End
End Sub
最佳答案
  • 五星知识达人网友:逃夭
  • 2021-03-07 06:38
常数、固定长度字符串、数组、自定义类型与 Declare 语句不能是对象模块中的 Public 成员

并非所有对象模块中的变量都可声明成 Public。然而,按缺省规定,过程是 Public,且 Property 过程在语法结构上可模拟变量。这个错误的起因与解决方法如下所示:

在对象模块中声明了一个 Public 常数。
虽然不能在对象模块中声明 Public 常数,但可以创建一个同名的Property Get 过程。若不能创建同名的 Property Let 或 Property Set 过程,实际上创建了一个只读属性,其用法与常数相同。

在对象模块中声明了一个 Public 类型的固定长度字符串。
可用一组 Property 过程仿真固定长度字符串,并截掉超出长度的字符串数据,或通知用户超出长度。

在对象模块中声明了一个 Public 数组。
虽然过程不能返回数组,但可返回一个包含数组的 Variant。要仿真类模块中的 Public 数组,可用一组Property 过程,它们接受与返回包含数组的 Variant 。

在对象模块中放了一个 Declare 语句。
Declare 语句隐含着公用的意思,可在 Declare 语句之前加上一个 Private 关键字。
全部回答
  • 1楼网友:雾月
  • 2021-03-07 08:14
你好! Declare 语句之前加上一个 Private 关键字 一般是声明出错! 例如你的API声明为Declare Function FindWindowEx Lib "user32.........xA" 就不行 改为Private Declare Function FindWindowEx Lib "user32.........xA就行了!yeh!!我也是新手!别人的回答里面最后一句才是重点!我晕 如果对你有帮助,望采纳。
  • 2楼网友:猎心人
  • 2021-03-07 08:04
eclare 语句不能是对象模块中的 Public 成员 并非所有对象模块中的变量都可声明成 Public。然而,按缺省规定,过程是 Public,且 Property 过程在语法结构上可模拟变量。这个错误的起因与解决方法如下所示: 在对象模块中声明了一个 Public 常数。 虽然不能在对象模块中声明 Public 常数,但可以创建一个同名的Property Get 过程。若不能创建同名的 Property Let 或 Property Set 过程,实际上创建了一个只读属性,其用法与常数相同。 在对象模块中声明了一个 Public 类型的固定长度字符串。 可用一组 Property 过程仿真固定长度字符串,并截掉超出长度的字符串数据,或通知用户超出长度。 在对象模块中声明了一个 Public 数组。 虽然过程不能返回数组,但可返回一个包含数组的 Variant。要仿真类模块中的 Public 数组,可用一组Property 过程,它们接受与返回包含数组的 Variant 。 在对象模块中放了一个 Declare 语句。 Declare 语句隐含着公用的意思,可在 Declare 语句之前加上一个 Private 关键字。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯