'******************************************************************************************************* '* 模 块 名 称 : 对VSFGRid操作(装入 VSFG 表头,合并行(合并那几列相同的行),装入ComboList, '* 针对VSFGrid的数据列求合计,针对VSFGrid的数据列排序(按顺序号填充第一列)) '* '* 程 序 员 姓 名: LMS '******************************************************************************************************** Option Explicit'装入 VSFG 表头 Public Sub Load_VSFG_Head(VSFGrid As VSFlexGrid, FixedRow As Integer, FixedCol As Integer, Col As Integer) Dim Row_Int As Integer, Col_Int As Integer With VSFGrid .FixedCols = FixedCol: .FixedRows = FixedRow: .Cols = Col
For Col_Int = 0 To .Cols - 1 '列合并 .MergeCol(Col_Int) = True Next Col_Int For Row_Int = 0 To .Rows - 1 .MergeRow(Row_Int) = True '行合并 Next Row_Int For Col_Int = 1 To .Cols - 1 .FixedAlignment(Col_Int) = flexAlignCenterCenter .MergeCells = flexMergeFixedOnly '只合并表头部分 Next Col_Int .Editable = flexEDKbdMouse '允许编辑修改 .RowHeightMin = 285 '最小行高=285 End With End Sub'合并行(合并那几列相同的行) Public Sub VSFGrid_MergeRow(VSFGrid As VSFlexGrid, Start_Col As Integer, End_Col As Integer) Dim JJ As Integer With VSFGrid For JJ = .FixedCols To .Cols - 1 .MergeCol(JJ) = False Next JJ For JJ = Start_Col To End_Col '合并前 XX 列() .MergeCol(JJ) = True Next JJ For JJ = .FixedRows To .Rows - 1 .MergeRow(JJ) = True '行合并 Next JJ .MergeCells = flexMergeFree .MergeCompare = flexMCIncludeNulls '包括空行 End With End Sub'针对VSFGrid的数据列求合计 Function VSFG_SumCol(VSFGrid As VSFlexGrid, VSFGrid_Col As Integer) As Double Dim Row As Long, Sum_Col As Double
With VSFGrid For Row = .FixedRows To .Rows - 1 Sum_Col = Sum_Col + Val(.TextMatrix(Row, VSFGrid_Col)) Next Row VSFG_SumCol = Sum_Col End With End Function'针对VSFGrid的数据列(是这种格式的求值:234.6/23)求合计 Function VSFG_SumCol_Str(VSFGrid As VSFlexGrid, VSFGrid_Col As Integer, Optional ByVal Str As String = "/", Optional ByVal Value_Flag As Integer = 0) As Double Dim Row As Long, Sum_Col As Double
With VSFGrid For Row = .FixedRows To .Rows - 1 If Trim(.TextMatrix(Row, VSFGrid_Col)) <> "" Then If Value_Flag = 0 Then Sum_Col = Sum_Col + Val(Mid(Trim(.TextMatrix(Row, VSFGrid_Col)), 1, InStr(Trim(.TextMatrix(Row, VSFGrid_Col)), Str) - 1)) VSFG_SumCol_Str = Sum_Col Else Sum_Col = Sum_Col + Val(Mid(Trim(.TextMatrix(Row, VSFGrid_Col)), InStr(Trim(.TextMatrix(Row, VSFGrid_Col)), Str) + 1)) VSFG_SumCol_Str = Sum_Col End If End If Next Row End With End Function'针对VSFGrid的数据列排序(按顺序号填充第一列) Public Sub VSFG_Sort(VSFGrid As VSFlexGrid, Optional Sort_Col As Integer = 0) Dim Row As Long, JJ As Double
With VSFGrid JJ = 1 For Row = .FixedRows To .Rows - 1 .TextMatrix(Row, Sort_Col) = JJ JJ = JJ + 1 Next Row End With End Sub'导出文件 Public Sub OutFile_Sub(CommonDialog1 As CommonDialog, VSFGrid As VSFlexGrid, File_Name As String) On Error GoTo err_cl If VSFGrid.Rows <= VSFGrid.FixedRows Then MsgBox "无数据!", vbOKOnly + vbExclamation, "信息提示" Exit Sub End If
VSFGrid.SaveGrid .FileName, flexFileExcel, SaveExcelSettings.flexXLSaveFixedCells MsgBox "文件导出成功!", vbOKOnly + vbInformation, "信息提示" End With Exit Sub
err_cl: MsgBox Err.Description, vbOKOnly + vbInformation, "提示" Exit Sub End Sub'刷新VSFGrid(自动列的大小) Public Sub VSFG_AutoSize(VSFG As VSFlexGrid) Dim Cols_Int As Integer For Cols_Int = 0 To VSFG.Cols - 1 VSFG.AutoSize 0, VSFG.Cols - 1 Next Cols_Int End Sub
text4, text5, text6
行之间是一个奇怪的符号 我再自学一会 然后再请教各位
'* 模 块 名 称 : 对VSFGRid操作(装入 VSFG 表头,合并行(合并那几列相同的行),装入ComboList,
'* 针对VSFGrid的数据列求合计,针对VSFGrid的数据列排序(按顺序号填充第一列))
'*
'* 程 序 员 姓 名: LMS
'********************************************************************************************************
Option Explicit'装入 VSFG 表头
Public Sub Load_VSFG_Head(VSFGrid As VSFlexGrid, FixedRow As Integer, FixedCol As Integer, Col As Integer)
Dim Row_Int As Integer, Col_Int As Integer
With VSFGrid
.FixedCols = FixedCol: .FixedRows = FixedRow: .Cols = Col
For Col_Int = 0 To .Cols - 1 '列合并
.MergeCol(Col_Int) = True
Next Col_Int
For Row_Int = 0 To .Rows - 1
.MergeRow(Row_Int) = True '行合并
Next Row_Int
For Col_Int = 1 To .Cols - 1
.FixedAlignment(Col_Int) = flexAlignCenterCenter
.MergeCells = flexMergeFixedOnly '只合并表头部分
Next Col_Int
.Editable = flexEDKbdMouse '允许编辑修改
.RowHeightMin = 285 '最小行高=285
End With
End Sub'合并行(合并那几列相同的行)
Public Sub VSFGrid_MergeRow(VSFGrid As VSFlexGrid, Start_Col As Integer, End_Col As Integer)
Dim JJ As Integer
With VSFGrid
For JJ = .FixedCols To .Cols - 1
.MergeCol(JJ) = False
Next JJ
For JJ = Start_Col To End_Col '合并前 XX 列()
.MergeCol(JJ) = True
Next JJ
For JJ = .FixedRows To .Rows - 1
.MergeRow(JJ) = True '行合并
Next JJ
.MergeCells = flexMergeFree
.MergeCompare = flexMCIncludeNulls '包括空行
End With
End Sub'针对VSFGrid的数据列求合计
Function VSFG_SumCol(VSFGrid As VSFlexGrid, VSFGrid_Col As Integer) As Double
Dim Row As Long, Sum_Col As Double
With VSFGrid
For Row = .FixedRows To .Rows - 1
Sum_Col = Sum_Col + Val(.TextMatrix(Row, VSFGrid_Col))
Next Row
VSFG_SumCol = Sum_Col
End With
End Function'针对VSFGrid的数据列(是这种格式的求值:234.6/23)求合计
Function VSFG_SumCol_Str(VSFGrid As VSFlexGrid, VSFGrid_Col As Integer, Optional ByVal Str As String = "/", Optional ByVal Value_Flag As Integer = 0) As Double
Dim Row As Long, Sum_Col As Double
With VSFGrid
For Row = .FixedRows To .Rows - 1
If Trim(.TextMatrix(Row, VSFGrid_Col)) <> "" Then
If Value_Flag = 0 Then
Sum_Col = Sum_Col + Val(Mid(Trim(.TextMatrix(Row, VSFGrid_Col)), 1, InStr(Trim(.TextMatrix(Row, VSFGrid_Col)), Str) - 1))
VSFG_SumCol_Str = Sum_Col
Else
Sum_Col = Sum_Col + Val(Mid(Trim(.TextMatrix(Row, VSFGrid_Col)), InStr(Trim(.TextMatrix(Row, VSFGrid_Col)), Str) + 1))
VSFG_SumCol_Str = Sum_Col
End If
End If
Next Row
End With
End Function'针对VSFGrid的数据列排序(按顺序号填充第一列)
Public Sub VSFG_Sort(VSFGrid As VSFlexGrid, Optional Sort_Col As Integer = 0)
Dim Row As Long, JJ As Double
With VSFGrid
JJ = 1
For Row = .FixedRows To .Rows - 1
.TextMatrix(Row, Sort_Col) = JJ
JJ = JJ + 1
Next Row
End With
End Sub'导出文件
Public Sub OutFile_Sub(CommonDialog1 As CommonDialog, VSFGrid As VSFlexGrid, File_Name As String)
On Error GoTo err_cl
If VSFGrid.Rows <= VSFGrid.FixedRows Then
MsgBox "无数据!", vbOKOnly + vbExclamation, "信息提示"
Exit Sub
End If
With CommonDialog1
.FileName = File_Name
.Filter = "Excel 文件 (*.xls)|*.xls" '-- |Word 文档(*.doc)|*.doc|纯文本(*.txt)|*.txt|Html 文档(*.Htm)|*.htm"
.DialogTitle = "报表输出到Excel文件"
.Action = 2
VSFGrid.SaveGrid .FileName, flexFileExcel, SaveExcelSettings.flexXLSaveFixedCells
MsgBox "文件导出成功!", vbOKOnly + vbInformation, "信息提示"
End With
Exit Sub
err_cl:
MsgBox Err.Description, vbOKOnly + vbInformation, "提示"
Exit Sub
End Sub'刷新VSFGrid(自动列的大小)
Public Sub VSFG_AutoSize(VSFG As VSFlexGrid)
Dim Cols_Int As Integer
For Cols_Int = 0 To VSFG.Cols - 1
VSFG.AutoSize 0, VSFG.Cols - 1
Next Cols_Int
End Sub