给你个例子参照看一下: 模块中内容: Option Explicit '定义结构类型 Public Type 天气信息 气温 As Single 风向 As String 凤力 As Single End Type窗体内部代码: Private Sub Form_Click() Dim udtA(9) As 天气信息 '声明结构数据 Dim intI As Integer, intJ As Integer '为结构赋网格数据值 For intI = 0 To 9 udtA(intI).气温 = MSFlexGrid1.TextMatrix(intI + 1, 1) udtA(intI).风向 = MSFlexGrid1.TextMatrix(intI + 1, 2) udtA(intI).凤力 = MSFlexGrid1.TextMatrix(intI + 1, 3) Next intI '在立即窗口打印赋值结果 Debug.Print "城市", "气温", "风向", "风力" For intI = 0 To 9 Debug.Print "城市" & intI + 1, _ udtA(intI).气温, udtA(intI).风向, udtA(intI).凤力 Next intI End SubPrivate Sub Form_Load() Dim intI As Integer '设定网格的行数和列数 MSFlexGrid1.Cols = 4 '3种天气信息 MSFlexGrid1.Rows = 11 '10个城市 '建立说明列 '属性MSFlexGrid1.FixedRows可设置或返回固定行总数,缺省为1 '属性MSFlexGrid1.TextArray可设置或返回网格文本的内容 For intI = MSFlexGrid1.FixedRows To MSFlexGrid1.Rows - 1 MSFlexGrid1.TextArray(MSFlexGrid1.Cols * intI) = _ "城市" & intI Next intI '建立说明行 '属性MSFlexGrid1.FixedCols可设置或返回固定列总数,缺省为1 For intI = MSFlexGrid1.FixedCols To MSFlexGrid1.Cols - 1 '将单元格的宽度增加100twip MSFlexGrid1.ColWidth(intI) = MSFlexGrid1.ColWidth(intI) + 100 MSFlexGrid1.TextArray(intI) = "测试项目" & intI Next intI MSFlexGrid1.Row = 1 '设定当前行 MSFlexGrid1.Col = 1 '设定当前列 Label1 = "城市1:测试项目1" End Sub'用户选择编辑单元时,将该单元内容复制到文本框控件 '然后可以进行编辑 Private Sub MSFlexGrid1_EnterCell() '将当前说明列和当前说明行赋予标签 Label1 = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) & ":" _ & MSFlexGrid1.TextMatrix(0, MSFlexGrid1.Col) '将当前单元格内容赋予文本框 Text1.Text = MSFlexGrid1.Text Text1.SetFocus '文本框取得焦点 '选中文本框内的全部字符,即将其涂成蓝色 Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub'文本框数据处理,按Enter键结束一个网格数据的录入 Private Sub Text1_KeyPress(KeyAscii As Integer) Dim intRow As Integer, intCol As Integer If KeyAscii = 13 Then '13为Enter键 MSFlexGrid1.Text = Text1.Text '文本框数据送入网格 intRow = MSFlexGrid1.Row + 1 '焦点移到同列的下一个单元 intCol = MSFlexGrid1.ColSel '单元格返回当前列 If intRow = MSFlexGrid1.Rows Then '如果到了最后一行 intRow = MSFlexGrid1.FixedCols 'intRow=1,FixedCols的缺省设置 '如果intCol没有到边界列则取下一列 If intCol < MSFlexGrid1.Cols - MSFlexGrid1.FixedCols Then _ intCol = intCol + 1 End If MSFlexGrid1.Row = intRow '新的当前行 MSFlexGrid1.Col = intCol '新的当前列 MSFlexGrid1.RowSel = intRow '为单元格设置的当前行 Text1.Text = MSFlexGrid1.Text '单元格数据赋予文本框 Text1.SetFocus '文本框取得焦点 End If End Sub
又例:将以下代码全部拷贝到窗体代码中: Dim colA As New Collection Private Sub Form_Click() Dim intI As Integer, intJ As Integer Dim vntItem '为集合赋网格数据值 For intI = MSFlexGrid1.FixedRows To MSFlexGrid1.Rows - 1 colA.Add MSFlexGrid1.TextMatrix(intI, 1), _ MSFlexGrid1.TextMatrix(intI, 2) Next intI '在立即窗口打印赋值结果 Debug.Print "村庄", "数值" For Each vntItem In colA intJ = intJ + 1 Debug.Print "村庄" & intJ, vntItem Next End SubPrivate Sub Form_Load() Dim intI As Integer '设定网格的行数和列数 MSFlexGrid1.Cols = 3 '序号(固定列)+数值+主题词共3列 MSFlexGrid1.Rows = 11 '固定行+10个村庄共11行 '建立说明列 '属性MSFlexGrid1.FixedRows可设置或返回固定行总数,缺省为1 '属性MSFlexGrid1.TextArray可设置或返回网格文本的内容 For intI = MSFlexGrid1.FixedRows To MSFlexGrid1.Rows - 1 MSFlexGrid1.TextArray(MSFlexGrid1.Cols * intI) = intI Next intI '建立说明行 '属性MSFlexGrid1.FixedCols可设置或返回固定列总数,缺省为1 For intI = MSFlexGrid1.FixedCols To MSFlexGrid1.Cols - 1 '将单元格的宽度增加100twip MSFlexGrid1.ColWidth(intI) = MSFlexGrid1.ColWidth(intI) + 100 MSFlexGrid1.TextArray(intI) = "项目" & intI Next intI MSFlexGrid1.Row = 1 '设定当前行 MSFlexGrid1.Col = 1 '设定当前列 Label1 = "对象1:项目1" End Sub'用户选择编辑单元时,将该单元内容复制到文本框控件 '然后可以进行编辑 Private Sub MSFlexGrid1_EnterCell() '将当前说明列和当前说明行赋予标签 Label1 = "对象" & MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) _ & ":" & MSFlexGrid1.TextMatrix(0, MSFlexGrid1.Col) '将当前单元格内容赋予文本框 Text1.Text = MSFlexGrid1.Text Text1.SetFocus '文本框取得焦点 '选中文本框内的全部字符,即将其涂成蓝色 Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub'文本框数据处理,按Enter键结束一个网格数据的录入 Private Sub Text1_KeyPress(KeyAscii As Integer) Dim intRow As Integer, intCol As Integer If KeyAscii = 13 Then '13为Enter键 MSFlexGrid1.Text = Text1.Text '文本框数据送入网格 intRow = MSFlexGrid1.Row + 1 '焦点移到同列的下一个单元 intCol = MSFlexGrid1.ColSel '单元格返回当前列 If intRow = MSFlexGrid1.Rows Then '如果到了最后一行 intRow = MSFlexGrid1.FixedCols 'intRow=1,FixedCols的缺省设置 '如果intCol没有到边界列则取下一列 If intCol < MSFlexGrid1.Cols - MSFlexGrid1.FixedCols Then _ intCol = intCol + 1 End If MSFlexGrid1.Row = intRow '新的当前行 MSFlexGrid1.Col = intCol '新的当前列 MSFlexGrid1.RowSel = intRow '为单元格设置的当前行 Text1.Text = MSFlexGrid1.Text '单元格数据赋予文本框 Text1.SetFocus '文本框取得焦点 End If End Sub
with MSHFlexGrid1 tempcol=.col for i=1 to .cols-1 .col=i .CellBackColor=vbred next i .col=tempcol
daisy8675(莫依)的第2题的会改变当前单元格,第3问应为 with MSHFlexGrid1 tempcol=.col for i=1 to .cols-1 .col=i .CellBackColor=vbred next i .col=tempcol end with 上面忘了加end with
模块中内容:
Option Explicit
'定义结构类型
Public Type 天气信息
气温 As Single
风向 As String
凤力 As Single
End Type窗体内部代码:
Private Sub Form_Click()
Dim udtA(9) As 天气信息 '声明结构数据
Dim intI As Integer, intJ As Integer
'为结构赋网格数据值
For intI = 0 To 9
udtA(intI).气温 = MSFlexGrid1.TextMatrix(intI + 1, 1)
udtA(intI).风向 = MSFlexGrid1.TextMatrix(intI + 1, 2)
udtA(intI).凤力 = MSFlexGrid1.TextMatrix(intI + 1, 3)
Next intI
'在立即窗口打印赋值结果
Debug.Print "城市", "气温", "风向", "风力"
For intI = 0 To 9
Debug.Print "城市" & intI + 1, _
udtA(intI).气温, udtA(intI).风向, udtA(intI).凤力
Next intI
End SubPrivate Sub Form_Load()
Dim intI As Integer
'设定网格的行数和列数
MSFlexGrid1.Cols = 4 '3种天气信息
MSFlexGrid1.Rows = 11 '10个城市
'建立说明列
'属性MSFlexGrid1.FixedRows可设置或返回固定行总数,缺省为1
'属性MSFlexGrid1.TextArray可设置或返回网格文本的内容
For intI = MSFlexGrid1.FixedRows To MSFlexGrid1.Rows - 1
MSFlexGrid1.TextArray(MSFlexGrid1.Cols * intI) = _
"城市" & intI
Next intI
'建立说明行
'属性MSFlexGrid1.FixedCols可设置或返回固定列总数,缺省为1
For intI = MSFlexGrid1.FixedCols To MSFlexGrid1.Cols - 1
'将单元格的宽度增加100twip
MSFlexGrid1.ColWidth(intI) = MSFlexGrid1.ColWidth(intI) + 100
MSFlexGrid1.TextArray(intI) = "测试项目" & intI
Next intI
MSFlexGrid1.Row = 1 '设定当前行
MSFlexGrid1.Col = 1 '设定当前列
Label1 = "城市1:测试项目1"
End Sub'用户选择编辑单元时,将该单元内容复制到文本框控件
'然后可以进行编辑
Private Sub MSFlexGrid1_EnterCell()
'将当前说明列和当前说明行赋予标签
Label1 = MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) & ":" _
& MSFlexGrid1.TextMatrix(0, MSFlexGrid1.Col)
'将当前单元格内容赋予文本框
Text1.Text = MSFlexGrid1.Text
Text1.SetFocus '文本框取得焦点
'选中文本框内的全部字符,即将其涂成蓝色
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub'文本框数据处理,按Enter键结束一个网格数据的录入
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim intRow As Integer, intCol As Integer
If KeyAscii = 13 Then '13为Enter键
MSFlexGrid1.Text = Text1.Text '文本框数据送入网格
intRow = MSFlexGrid1.Row + 1 '焦点移到同列的下一个单元
intCol = MSFlexGrid1.ColSel '单元格返回当前列
If intRow = MSFlexGrid1.Rows Then '如果到了最后一行
intRow = MSFlexGrid1.FixedCols 'intRow=1,FixedCols的缺省设置
'如果intCol没有到边界列则取下一列
If intCol < MSFlexGrid1.Cols - MSFlexGrid1.FixedCols Then _
intCol = intCol + 1
End If
MSFlexGrid1.Row = intRow '新的当前行
MSFlexGrid1.Col = intCol '新的当前列
MSFlexGrid1.RowSel = intRow '为单元格设置的当前行
Text1.Text = MSFlexGrid1.Text '单元格数据赋予文本框
Text1.SetFocus '文本框取得焦点
End If
End Sub
Dim colA As New Collection
Private Sub Form_Click()
Dim intI As Integer, intJ As Integer
Dim vntItem
'为集合赋网格数据值
For intI = MSFlexGrid1.FixedRows To MSFlexGrid1.Rows - 1
colA.Add MSFlexGrid1.TextMatrix(intI, 1), _
MSFlexGrid1.TextMatrix(intI, 2)
Next intI
'在立即窗口打印赋值结果
Debug.Print "村庄", "数值"
For Each vntItem In colA
intJ = intJ + 1
Debug.Print "村庄" & intJ, vntItem
Next
End SubPrivate Sub Form_Load()
Dim intI As Integer
'设定网格的行数和列数
MSFlexGrid1.Cols = 3 '序号(固定列)+数值+主题词共3列
MSFlexGrid1.Rows = 11 '固定行+10个村庄共11行
'建立说明列
'属性MSFlexGrid1.FixedRows可设置或返回固定行总数,缺省为1
'属性MSFlexGrid1.TextArray可设置或返回网格文本的内容
For intI = MSFlexGrid1.FixedRows To MSFlexGrid1.Rows - 1
MSFlexGrid1.TextArray(MSFlexGrid1.Cols * intI) = intI
Next intI
'建立说明行
'属性MSFlexGrid1.FixedCols可设置或返回固定列总数,缺省为1
For intI = MSFlexGrid1.FixedCols To MSFlexGrid1.Cols - 1
'将单元格的宽度增加100twip
MSFlexGrid1.ColWidth(intI) = MSFlexGrid1.ColWidth(intI) + 100
MSFlexGrid1.TextArray(intI) = "项目" & intI
Next intI
MSFlexGrid1.Row = 1 '设定当前行
MSFlexGrid1.Col = 1 '设定当前列
Label1 = "对象1:项目1"
End Sub'用户选择编辑单元时,将该单元内容复制到文本框控件
'然后可以进行编辑
Private Sub MSFlexGrid1_EnterCell()
'将当前说明列和当前说明行赋予标签
Label1 = "对象" & MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) _
& ":" & MSFlexGrid1.TextMatrix(0, MSFlexGrid1.Col)
'将当前单元格内容赋予文本框
Text1.Text = MSFlexGrid1.Text
Text1.SetFocus '文本框取得焦点
'选中文本框内的全部字符,即将其涂成蓝色
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub'文本框数据处理,按Enter键结束一个网格数据的录入
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim intRow As Integer, intCol As Integer
If KeyAscii = 13 Then '13为Enter键
MSFlexGrid1.Text = Text1.Text '文本框数据送入网格
intRow = MSFlexGrid1.Row + 1 '焦点移到同列的下一个单元
intCol = MSFlexGrid1.ColSel '单元格返回当前列
If intRow = MSFlexGrid1.Rows Then '如果到了最后一行
intRow = MSFlexGrid1.FixedCols 'intRow=1,FixedCols的缺省设置
'如果intCol没有到边界列则取下一列
If intCol < MSFlexGrid1.Cols - MSFlexGrid1.FixedCols Then _
intCol = intCol + 1
End If
MSFlexGrid1.Row = intRow '新的当前行
MSFlexGrid1.Col = intCol '新的当前列
MSFlexGrid1.RowSel = intRow '为单元格设置的当前行
Text1.Text = MSFlexGrid1.Text '单元格数据赋予文本框
Text1.SetFocus '文本框取得焦点
End If
End Sub
行=MSHFlexGrid1.row
列=MSHFlexGrid1.col
2:
所点击行的第二列的值=TextMatrix(MSHFlexGrid1.row, 1)
3:
///
msgbox mshflexgrid.row
msgbox mshflexgrid.col找到所点击行的第二列的值.
///
mshflexgrid.col=1
msgbox msflexgrid.text让点击当前行底色变色.(方便观看)
//MSHFlexGrid1.CellBackColor = vbRed
tempcol=.col
for i=1 to .cols-1
.col=i
.CellBackColor=vbred
next i
.col=tempcol
with MSHFlexGrid1
tempcol=.col
for i=1 to .cols-1
.col=i
.CellBackColor=vbred
next i
.col=tempcol
end with
上面忘了加end with