北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |
实现的功能描述:为在实际工作中让用户对报表有更多的自由度,比如在数据哭表视图的窗体上调用好表哥的列宽及行高后,要求在报表上也显示窗体调整的效果。
调试后出现下面现象,请好心人帮帮忙,本人万分的感谢!(这是我的毕业设计,要赶着3月底完成。)
Private Sub Report_Open(Cancel As Integer)
'打开报表时自动读取窗体字段的宽度
'用以设定报表上控件的宽度
Dim i1 As Long
i1 = 0
Dim objform As Form
Set objform = Forms("计网07")
Dim objcontrol As Control
For Each objcontrol In objform.Controls
If TypeOf objcontrol Is TextBox And checkcontrol(objcontrol.nanme, Me.计网07bb) Then
'下列赋值方式必须基于一个条件
'窗体上控件的名称必须等于报表上控件的名称
'默认情况下向导创建的报表中控件名称等于字段名称
'这里就很好的利用了这点
With Me.Controls(objcontrol.Name)
.Width = objform.Controls(objcontrol.Name).ColumnWidth
.Left = i1
If objform.RowHeight <> -1 Then
'如果行高是默认值,rowheight属性则是等于-1,所以要判断一下
.Height = objform.RowHeight
End If
End With
With Me.Controls(objcontrol.Name & "_label")
.Width = objform.Controls(objform.Name).ColumnWidth
.Left = i1
End With
i1 = i1 + Me.Controls(objcontrol.Name).Width
End If
Next
End Sub
Function checkcontrol(strcontrolname As String, obj As Object) As Boolean
'本函数用与于检测报表或者窗体中是否包含指定名称的控件
checkcontrol = True
On Error Resume Next
Debug.Print obj.Controls(strcontrolname).Name
If Err.Number <> 0 Then
'其实错误号为2465就是表示没有此控件
Debug.Print Err.Number & ":" & Err.Description
checkcontrol = False
Exit Function
End If
End Function
End Function