列の挿入及び削除
                                                          玄関へお回り下さい。   
MSFlexGridの列の挿入及び削除           (039)
     Private Sub Command8_Click()
'列のインサートのメニュー
  Call sInsertCol(3, 1000)  '3列目に幅1000の列を挿入
End Sub


Private Sub sInsertCol(InsCol As Long, ColWid As Long)
  Dim i As Long
  Dim j As Long
  With MSFlexGrid1
    .Visible = False
    .ColWidth(InsCol) = ColWid
    .Cols = .Cols + 1    '1列増やす
    'このように必要により隣のセルの情報を引き継いで下さい。
    .ColWidth(.Cols - 1) = .ColWidth(.Cols - 2)
    For i = 0 To .Rows - 1
      .Row = i
      For j = .Cols - 1 To InsCol Step -1 '挿入列以降のデータを移動
        'データを移動
        .TextMatrix(i, j) = .TextMatrix(i, j - 1)
        If j = InsCol Then
          .TextMatrix(i, j) = ""   '挿入列のデータをNullに設定
        End If
      Next j
    Next i
  .Visible = True
  End With
'セル内の書式設定等は考慮しておりません。
End Sub

     Private Sub Command9_Click()
'列の削除のメニュー
  Call sDeleteCol(3) '3列目を削除
End Sub


Private Sub sDeleteCol(DelCol As Long)
  Dim i As Long
  Dim j As Long
  With MSFlexGrid1
    .Visible = False
    For i = 0 To .Rows - 1
      .Row = i
      For j = DelCol + 1 To .Cols - 1   '削除列以降のデータを移動
        .TextMatrix(i, j - 1) = .TextMatrix(i, j)
      Next j
    Next i
  .Cols = .Cols - 1
  .Visible = True
  End With
'セル内の書式設定等は考慮しておりません。
End Sub
  
   Private Sub Command12_Click()
'列の入れ替えのメニュー
  Call sSwapCol(3, 5) '3列目と5列目を入替えます
End Sub


Private Sub sSwapCol(SwapCol1 As Long, SwapCol2 As Long)
'列の入れ替えのプロシージャ
  Dim i    As Long
  Dim ColData As Variant
  With MSFlexGrid1
    .Visible = False
    '.ColWidth(InsCol) = ColWid
    For i = 0 To .Rows - 1
      'データを退避
      ColData = .TextMatrix(i, SwapCol1)
      'データを移動
      .TextMatrix(i, SwapCol1) = .TextMatrix(i, SwapCol2)
      '退避しておいたデータを移し変え
      .TextMatrix(i, SwapCol2) = ColData
    Next i
  .Visible = True
  End With
'セル内の書式設定等は考慮しておりません。
End Sub
セル内の書式等は考慮しておりません。又最終列の削除等のエラー処理はしておりません。
各自の環境に合せて作り直して下さい。




2002/05/08