(摘自MSDN)
在 Hierarchical FlexGrid 电子表格中编辑单元
在该方案中,您可以在 Hierarchical FlexGrid 电子表格中编辑单元。该方案举例说明了Hierarchical FlexGrid 的控件事件和容器的一些能力,并说明了如何使用该控件创建一个电子表格,可以在该电子表格中的单元中使用标准 Visual Basic 控件进行编辑。注意   示例应用程序 (Flex.vbp) 举例说明了漫游和选择单元范围所必需的能力。要创建该数据显示,请按照以下步骤执行: 创建 Hierarchical FlexGrid 和 TextBox 控件。
设置这些控件的属性。
对 Hierarchical FlexGrid 添加行和列标头。
添加单元内编辑到 Hierarchical FlexGrid。
添加功能到 TextBox 控件(“编辑”框),以便更新数据。
将数据从文本框复制到 Hierarchical FlexGrid。 
要完成该方案,请按照该部分中的步骤顺序执行。创建控件
添加一个 Hierarchical FlexGrid 到您的工程,然后添加一个 TextBox 控件以创建一个父子关系,如下所示:设置控件的属性
如下所示设置 Hierarchical FlexGrid 和 TextBox 控件的属性:MSHFlexGrid 控件属性 设置值 
Name Fg2 
Cols 6 
Rows 20 
FillStyle 1 – Repeat 
FocusRect 2 – Heavy 
FontName Arial 
FontSize 9 
TextBox 控件属性 设置值 
Name TxtEdit 
FontName Arial 
FontSize 9 
BorderSize 0 – None 
Visible False 
在电子表格中编辑单元
使用下列过程在您的 Hierarchical FlexGrid 中编辑单元。要在电子表格中编辑单元,请按照以下步骤执行: 通过将下列代码添加到“代码编辑器”窗口中的 Form_Load 过程来修改您的 Hierarchical FlexGrid,使其代表一个电子表格: 
Sub Form_Load ()
Dim i As Integer'使第一列较窄。
Fg2.ColWidth(0) = Fg2.ColWidth(0) / 2
Fg2.ColAlignment(0) = 1    '放置在正中。'标记行和列。
For i = Fg2.FixedRows To Fg2.Rows - 1
Fg2.TextArray(fgi(i, 0)) = i
Next
For i = Fg2.FixedCols To Fg2.Cols - 1
Fg2.TextArray(fgi(0, i)) = i
Next'初始化编辑框(于是,现在可加载它)。
txtEdit = ""
End Sub2.如下创建计算 TextArray 属性索引值的函数:Function Fgi (r As Integer, c As Integer) As Integer
Fgi = c + Fg2.Cols * r
End Function将下列代码添加到 Hierarchical FlexGrid 的 KeyPress 和 DblClick 事件: 
Sub Fg2_KeyPress (KeyAscii As Integer)
MSHFlexGridEdit Fg2, txtEdit, KeyAscii
End SubSub Fg2_DblClick ()
MSHFlexGridEdit Fg2, txtEdit, 32 '模拟一个空格。
End Sub4.添加下列例程以初始化文本框,并将焦点从 Hierarchical FlexGrid 传递到 TextBox 控件:Sub MSHFlexGridEdit (MSHFlexGrid As Control, _
Edt As Control, KeyAscii As Integer)'使用已输入的字符。
Select Case keyascii'空格表示编辑当前的文本。
Case 0 To 32
Edt = MSHFlexGrid
Edt.SelStart = 1000'其它所有字符表示取代当前的文本。
Case Else
Edt = Chr(keyascii)
Edt.SelStart = 1
End Select'在合适的位置显示 Edt。
Edt.Move MSHFlexGrid.Left + MSHFlexGrid.CellLeft, _
MSHFlexGrid.Top + MSHFlexGrid.CellTop, _
MSHFlexGrid.CellWidth - 8, _
MSHFlexGrid.CellHeight - 8
Edt.Visible = True'启动工作。
Edt.SetFocus
End Sub5.通过将下列例程添加到 TextBox 的 KeyPress 和 DblClick 事件中来添加更新数据功能性:Sub txtEdit_KeyPress (KeyAscii As Integer)
'删除回车符,以消除嘟嘟声。
If KeyAscii = Asc(vbCr) Then KeyAscii = 0
End SubSub txtEdit_KeyDown (KeyCode As Integer, _
Shift As Integer)
EditKeyCode Fg2, txtEdit, KeyCode, Shift
End SubSub EditKeyCode (MSHFlexGrid As Control, Edt As _
Control, KeyCode As Integer, Shift As Integer)'标准编辑控件处理。
Select Case KeyCodeCase 27    'ESC:隐藏焦点并将其返回 MSFlexGrid。
Edt.Visible = False
MSHFlexGrid.SetFocusCase 13    'ENTER 将焦点返回 MSFlexGrid。
MSHFlexGrid.SetFocusCase 38        '向上。
MSHFlexGrid.SetFocus
DoEvents
If MSFlexGrid.Row > MSFlexGrid.FixedRows Then
MSFlexGrid.Row = MSFlexGrid.Row - 1
End IfCase 40        '向下。
MSFlexGrid.SetFocus
DoEvents
If MSHFlexGrid.Row > MSHFlexGrid.FixedRows Then
MSHFlexGrid.Row = MSHFlexGrid.Row - 1
End If
End Select
End Sub接着,当把数据输入到 TextBox 中时,您需要先告诉Hierarchical MSFlexGrid 控件应该对数据做什么。当您输入数据并按下 ENTER 键,或用鼠标单击Hierarchical MSFlexGrid 控件中的另一个单元时,焦点将返回此控件。这时 TextBox 中的文本被复制到活动单元中;要这样做,请继续执行下列步骤。6通过将下列代码添加到 GotFocus 和 LeaveCell 事件过程中,将数据从文本框复制到 Hierarchical FlexGrid:Sub Fg2_GotFocus ()
If txtEdit.Visible = False Then Exit Sub
Fg2 = txtEdit
txtEdit.Visible = False
End SubSub Fg2_LeaveCell ()
If txtEdit.Visible = False Then Exit Sub
Fg2 = txtEdit
txtEdit.Visible = False
End Sub一旦方案中的过程完成,则可以在运行时将数据输入到单个的单元中,如下面的图表所示。