Spread(Ver.3.0J)で複数行選択


なおき  2011-04-16 16:57:43  No: 102857  IP: [192.*.*.*]

vb6、spread3.0Jを使っています。

shiftキーまたはctrlキーが押されている間だけ複数行選択ができて、shiftキーまたはctrlキーが押されなくなったとき単一選択になるようにしたいです。
起動時は単一選択です。

shiftキーやctrlキーを押しながらマウスでクリックすると、特にコードを書いてなくても問題なく複数行選択ができます。

やりたいこと(質問したいこと)は2つあります。

1.複数選択モードに変更したとき、行の先頭行を反転表示したい。
書いたコードは以下のとおりです。

spreadのkeydownイベントに書きました。

    Dim blnShift As Boolean
    Dim blnCtrl As Boolean

    blnShift = (Shift And vbShiftMask) > 0
    blnCtrl = (Shift And vbCtrlMask) > 0
    If blnShift = True Or blnCtrl = True Then
        With vaSpread1
            .AllowMultiBlocks = True
            .OperationMode = OperationModeMulti
            .ReDraw = False
            .SetFocus
            .Col = -1
            .Row = 1
            .Action = SS_ACTION_ACTIVE_CELL
            .ReDraw = True
        End With
    End If

先頭行は反転表示されません。未選択状態となります。

2.shiftと上下の矢印ボタンを押したとき複数行選択したい。
書いたコードは以下のとおりです。

spreadのkeyupイベントに書きました。

    Dim blnShift As Boolean
    Dim blnCtrl As Boolean
    Dim lngIdx As Long
    Dim lngCol As Long
    Dim lngRow As Long
    Dim lngRow2 As Long
    Dim lngCount As Long

    blnShift = (Shift And vbShiftMask) > 0
    blnCtrl = (Shift And vbCtrlMask) > 0
    If blnShift = True Or blnCtrl = True Then
        If intKeyCode = vbKeyDown Or intKeyCode = vbKeyUp Then
            lngCol = -1
            lngRow = -1
            With vaSpread1
                .ReDraw = False
                lngCount = .SelModeSelCount
                For lngIdx = 0 To lngCount - 1
                    lngRow = .GetMultiSelItem(lngIdx)
                    Exit For
                Next
                lngRow2 = .ActiveRow
                .Col = lngCol
                .Col2 = .Col
                .Row = lngRow
                .Row2 = lngRow2
                .Action = SS_ACTION_SELECT_BLOCK
                .Refresh
                .ReDraw = True
            End With
        End If
    ElseIf blnShift = False And blnCtrl = False Then
        With vaSpread1
            .OperationMode = OperationModeSingle
            .AllowMultiBlocks = False
            .Col = -1: .Row = 1
            .Action = SS_ACTION_ACTIVE_CELL
        End With
    End If

選択行(マウスで選択)を検索して、その行からアクティブ行まで複数行選択したいです。

このコードでは、例えば1行目クリック後shift+下矢印ボタン押下で、1行目2行目を選択したいんですが、先頭行(1行目)だけが反転表示されます。

どなたか教えてもらえないですか?

よろしくお願いします。

編集 削除