Your cookie preferences

We use cookies and similar technologies. You can use the settings below to accept all cookies (which we recommend to give you the best experience) or to enable specific categories of cookies as explained below. Find out more by reading our Cookie Policy.

Select cookie preferences

Skip to main content
Utrack

Popular Search Terms

Msflexgrid Vba -

If rowToDelete = 0 Then MsgBox "Cannot delete header row", vbExclamation Exit Sub End If

If rowToDelete >= Me.fgData.Rows Then Exit Sub msflexgrid vba

Private Sub SetupGrid() With Me.fgData .Cols = 4 .Rows = 2 .FixedRows = 1 .TextMatrix(0, 0) = "Product" .TextMatrix(0, 1) = "Qty" .TextMatrix(0, 2) = "Price" .TextMatrix(0, 3) = "Total" .ColWidth(0) = 2000 .ColWidth(1) = 800 .ColWidth(2) = 1200 .ColWidth(3) = 1500 End With End Sub If rowToDelete = 0 Then MsgBox "Cannot delete

With Me.fgData .Rows = rng.Rows.Count + 1 ' +1 for header if needed .Cols = rng.Columns.Count For i = 1 To rng.Rows.Count For j = 1 To rng.Columns.Count .TextMatrix(i, j - 1) = rng.Cells(i, j).Value Next j Next i End With End Sub Sub AddRow(ID As String, Name As String, Dept As String, Salary As Double, Active As Boolean) With Me.fgData .Rows = .Rows + 1 Dim newRow As Integer newRow = .Rows - 1 .TextMatrix(newRow, 0) = ID .TextMatrix(newRow, 1) = Name .TextMatrix(newRow, 2) = Dept .TextMatrix(newRow, 3) = Format(Salary, "$#,##0.00") .TextMatrix(newRow, 4) = IIf(Active, "Yes", "No") End With End Sub 4.4 Formatting Cells Conditionally Sub ApplyConditionalFormatting() Dim r As Integer, c As Integer Dim salaryVal As Double With Me.fgData For r = 1 To .Rows - 1 ' Check salary column (index 3) salaryVal = Val(.TextMatrix(r, 3)) .Row = r .Col = 3 If salaryVal > 75000 Then .CellBackColor = vbGreen .CellForeColor = vbWhite ElseIf salaryVal < 40000 Then .CellBackColor = vbRed .CellForeColor = vbBlack End If Next r End With End Sub 4.5 Get Selected Cell / Row Private Sub fgData_Click() Dim selectedRow As Integer Dim selectedCol As Integer With Me.fgData selectedRow = .Row selectedCol = .Col ' Avoid header row If selectedRow > 0 Then MsgBox "Selected: " & .TextMatrix(selectedRow, 1) & vbCrLf & _ "Salary: " & .TextMatrix(selectedRow, 3) End If End With End Sub 4.6 Delete Selected Row Sub DeleteCurrentRow() Dim rowToDelete As Integer rowToDelete = Me.fgData.Row | | Slow with many rows | Disable redraw:

| Property | Recommended Value | Description | |----------|------------------|-------------| | Name | fgData | Logical naming | | Cols | 5 | Number of columns | | Rows | 10 | Number of rows | | FixedCols | 1 | Fixed (non-scrollable) left column(s) | | FixedRows | 1 | Fixed header row(s) | | AllowBigSelection | False | Select only one cell, not entire row/col | | SelectionMode | flexSelectionByCell | Select individual cells | | ScrollBars | flexScrollBarBoth | Both vertical & horizontal | | Property | Purpose | |----------|---------| | .TextMatrix(row, col) | Get/set cell text (preferred over .Text ) | | .Row , .Col | Current cell position | | .CellFontBold , .CellBackColor | Format current cell | | .MergeCells , .MergeRow(row) | Merge adjacent identical cells | | .WordWrap | Wrap text within cell | | .ColWidth(col) | Width in twips (1440 twips = 1 inch) | | .RowHeight(row) | Height in twips | | .ColAlignment(col) | Alignment (0=left,1=right,2=center) | | .BackColor , .ForeColor | Overall colors | 4. Essential Code Examples 4.1 Initialize Grid (Headers & Columns) Private Sub UserForm_Initialize() Dim i As Integer With Me.fgData .Cols = 5 .Rows = 2 ' Start with 1 data row below header .FixedRows = 1 .FixedCols = 1 ' Set headers using TextMatrix .TextMatrix(0, 0) = "ID" .TextMatrix(0, 1) = "Name" .TextMatrix(0, 2) = "Department" .TextMatrix(0, 3) = "Salary" .TextMatrix(0, 4) = "Active" ' Column widths (twips: 1440 = 1 inch) .ColWidth(0) = 720 ' 0.5 inch .ColWidth(1) = 1800 .ColWidth(2) = 1800 .ColWidth(3) = 1200 .ColWidth(4) = 800 ' Align headers (center) For i = 0 To .Cols - 1 .Row = 0 .Col = i .CellAlignment = 4 ' 4 = center Next i End With End Sub 4.2 Populate Data from Excel Range Sub LoadFromExcel() Dim ws As Worksheet Dim rng As Range Dim i As Long, j As Integer Set ws = ThisWorkbook.Sheets("Data") Set rng = ws.Range("A1").CurrentRegion

Me.fgData.RemoveItem rowToDelete End Sub : RemoveItem is available in MSFlexGrid 6.0. For older versions, shift rows manually. 4.7 Sort by Column Private Sub fgData_HeadClick(ByVal Col As Integer) ' Sorts when user clicks a header With Me.fgData .Sort = flexSortGenericAscending .Col = Col .Row = 0 ' Optionally store sort column for toggle End With End Sub 5. Common Gotchas & Solutions | Problem | Solution | |---------|----------| | Text not wrapping | Set .WordWrap = True and ensure .ColWidth is fixed. | | Scrollbar not showing | Increase .Rows or .Cols beyond visible area. | | Slow with many rows | Disable redraw: .Redraw = False → load data → .Redraw = True | | Double-click not firing | Use DblClick event, not Click . | | Can't edit cells | MSFlexGrid is read-only by design. Use a TextBox overlay for editing. | | Row height too small | Set .RowHeightMin property or individual .RowHeight(row) . | 6. Advanced: In-Cell Editing (TextBox Overlay) Since MSFlexGrid doesn't support native editing, use a hidden TextBox: