设计一个VB界面,里面有3行3列textbox的控件 如何同时选择多行或者多列,进行复制同样如何从excel复制单行和单列或者多行多列后,黏贴到VB界面而不是一个一个黏贴
可能问题有其他解决方法,请坛里的朋友提供思路

解决方案 »

  1.   

    编写这种工具,需要搞清楚剪贴板中excel数据的格式。清楚了,按格式取数据放入单元格中即可。
      

  2.   

    Excel复制出来的是text1, text2, text3
    text4, text5, text6
      

  3.   

    列之间应该是tab键
    行之间是一个奇怪的符号 我再自学一会 然后再请教各位
      

  4.   

    '*******************************************************************************************************
    '*    模  块  名 称 : 对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