3.楼主参考: 直接对ADOC操作的,因此它不会受rows 的visible属性影响 因一般来说,每个DataGrid会对应一个ADODC,或RecordSet对象作为数据源。 直接对它们操作就行了。这样有个好处就是可以根据字段的属性格式化相应的列,如将调整日期或日期的显示格式。 '输出表头 For i = 0 To Me.Adodc1.Recordset.Fields.Count - 1 '设置列名 strColName1 = Chr(65 + i) & "1" oSheet.Range(strColName1).Value = Me.DataGrid1.Columns(i).Caption '据DataGrid中的宽度设置EXCEL列宽 StrColName = Chr(65 + i) & ":" & Chr(65 + i) oSheet.Columns(StrColName).ColumnWidth = Int(Me.DataGrid1.Columns(i).Width / 90) Next i '输出内容 Do Until Me.Adodc1.Recordset.EOF j = j + 1 For i = 0 To Me.Adodc1.Recordset.Fields.Count - 1 StrColName = Chr(65 + i) & CStr(j + 1) If Not IsNull(Me.DataGrid1.Columns(i)) And Me.DataGrid1.Columns(i) <> "" Then '根据列的属性对表格数据作相应格式化处理 Select Case Me.Adodc1.Recordset.Fields(i).Type Case adCurrency oSheet.Range(StrColName).Value = CCur(Me.DataGrid1.Columns(i)) Case adNumeric oSheet.Range(StrColName).Value = CLng(Me.DataGrid1.Columns(i)) Case adInteger oSheet.Range(StrColName).Value = CInt(Me.DataGrid1.Columns(i)) Case adDate oSheet.Range(StrColName).Value = CDate(Me.DataGrid1.Columns(i)) oSheet.Range(StrColName).NumberFormatLocal = "yyyy-mm-dd hh:mm" Case Else oSheet.Range(StrColName).Value = Me.DataGrid1.Columns(i) End Select Else oSheet.Range(StrColName).Value = Me.DataGrid1.Columns(i) End If Next i Me.Adodc1.Recordset.MoveNext Loop
2. 如何 一次性 设置整个系统中文本框 回车 后自动焦点移动到下一文本框?用控件数组 Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer) If KeyAscii = 13 Then If Index < Text1.UBound Then Text1(Index + 1).SetFocus End If End Sub
Option Explicit Private Sub Form_Load()
Me.Left = (MDIForm1.ScaleWidth - Me.Width) / 2
Me.Top = (MDIForm1.ScaleHeight - Me.Height) / 2
End Sub
2,TabIndex
3,写个循环吧,这个没有固定的方法
直接对ADOC操作的,因此它不会受rows 的visible属性影响
因一般来说,每个DataGrid会对应一个ADODC,或RecordSet对象作为数据源。
直接对它们操作就行了。这样有个好处就是可以根据字段的属性格式化相应的列,如将调整日期或日期的显示格式。 '输出表头
For i = 0 To Me.Adodc1.Recordset.Fields.Count - 1
'设置列名
strColName1 = Chr(65 + i) & "1"
oSheet.Range(strColName1).Value = Me.DataGrid1.Columns(i).Caption '据DataGrid中的宽度设置EXCEL列宽
StrColName = Chr(65 + i) & ":" & Chr(65 + i)
oSheet.Columns(StrColName).ColumnWidth = Int(Me.DataGrid1.Columns(i).Width / 90) Next i '输出内容
Do Until Me.Adodc1.Recordset.EOF
j = j + 1 For i = 0 To Me.Adodc1.Recordset.Fields.Count - 1
StrColName = Chr(65 + i) & CStr(j + 1)
If Not IsNull(Me.DataGrid1.Columns(i)) And Me.DataGrid1.Columns(i) <> "" Then '根据列的属性对表格数据作相应格式化处理
Select Case Me.Adodc1.Recordset.Fields(i).Type
Case adCurrency
oSheet.Range(StrColName).Value = CCur(Me.DataGrid1.Columns(i))
Case adNumeric
oSheet.Range(StrColName).Value = CLng(Me.DataGrid1.Columns(i))
Case adInteger
oSheet.Range(StrColName).Value = CInt(Me.DataGrid1.Columns(i))
Case adDate
oSheet.Range(StrColName).Value = CDate(Me.DataGrid1.Columns(i))
oSheet.Range(StrColName).NumberFormatLocal = "yyyy-mm-dd hh:mm"
Case Else
oSheet.Range(StrColName).Value = Me.DataGrid1.Columns(i) End Select
Else
oSheet.Range(StrColName).Value = Me.DataGrid1.Columns(i)
End If
Next i Me.Adodc1.Recordset.MoveNext
Loop
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If KeyAscii = 13 Then
If Index < Text1.UBound Then Text1(Index + 1).SetFocus
End If
End Sub