You can use MSFlexGrid for data entry without using additional ActiveX controls. For this, use the KeyPress and KeyUp events. To use the MSFlexGrid for data entry, add the grid?named FlxGrdDemo?to a form and copy this code:
Private Sub FlxGrdDemo_KeyPress(KeyAscii As Integer) Select Case KeyAscii Case vbKeyReturn ' When the user hits the return key ' this code'll move the next cell or row. With FlxGrdDemo If .Col + 1 <= .Cols - 1 Then .Col = .Col + 1 ElseIf .Row + 1 <= .Rows - 1 Then .Row = .Row + 1 .Col = 0 Else .Row = 1 .Col = 0 End If End With Case vbKeyBack ' Delete the previous character when the ' backspace key is used. With FlxGrdDemo If Trim(.Text) <> "" Then _ .Text = Mid(.Text, 1, Len(.Text) - 1) End With Case Is < 32 ' Avoid unprintable characters. Case Else 'Else print everything With FlxGrdDemo .Text = .Text & Chr(KeyAscii) End With End SelectEnd SubPrivate Sub FlxGrdDemo_KeyUp(KeyCode As _ Integer, Shift As Integer) Select Case KeyCode ' Copy Case vbKeyC And Shift = 2 ' Control + C Clipboard.Clear Clipboard.SetText FlxGrdDemo.Text KeyCode = 0 ' Paste Case vbKeyV And Shift = 2 'Control + V FlxGrdDemo.Text = Clipboard.GetText KeyCode = 0 ' Cut Case vbKeyX And Shift = 2 'Control + X Clipboard.Clear Clipboard.SetText FlxGrdDemo.Text FlxGrdDemo.Text = "" KeyCode = 0 ' Delete Case vbKeyDelete FlxGrdDemo.Text = "" End SelectEnd Sub
You can set the FillStyle property to FlexFillRepeat, which makes the changes to all the selected cells.