掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MSグリッドコントロールのセルに数値を入力するには? (ID:103611)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
初めて投稿させていただきます。 どうかよろしくお願いします。 さて、ご要望はMSFlexGridコントロールの事でよろしかったですか? (グリッドも4つぐらいあるので・・・^^;) Excelのように使いたいとの事ですので、 アクティブのセルにキーボードから入力したいということでよいですか? (良いとしておきます。^^;) 方法はいくつかありますが、FlexGrid単体で行う場合を書いておきます。 基本的に、FlexGridのKeyPressイベントに以下のコードで文字は入力されます。 Private Sub grdTEST_KeyPress(KeyAscii As Integer) Dim dlngSetRow as long Dim dlngSetCol as long dlngSetRow = grdTEST.Row dlngSetCol = grdTEST.Col grdTEST.TextMatrix(dlngSetRow, dlngSetCol) = grdTEST.TextMatrix(dlngSetRow, dlngSetCol) & Chr(KeyAscii) End Sub (要は押されたキーに対応する文字をプログラムでセットしているだけ) これで、全角でも対応します。(ステップ実行だと通りませんが) ただし、このままですと文字でないキー(BackSpaceやEnterなど) もセルに送ってしまい、「・」が表示されてしまいます。 また、セルの文字の削除処理もできないので、使い勝手が悪すぎます。 そこで、できるだけエクセルのセルの使い勝手に近づける為にコードを追加する必要があります。 まず、先ほどのKeyPressイベントを下のように書き換えます Private Sub grdTEST_KeyPress(KeyAscii As Integer) Dim dlngSetRow as long Dim dlngSetCol as long dlngSetRow = grdTEST.Row dlngSetCol = grdTEST.Col If KeyAscii = 8 Then 'バックスペースの場合右から1文字消します If Len(grdTEST.TextMatrix(dlngSetRow, dlngSetCol)) <> 0 Then grdTEST.TextMatrix(dlngSetRow, dlngSetCol) = Left(grdTEST.TextMatrix(dlngSetRow, dlngSetCol), Len(grdTEST.TextMatrix(dlngSetRow, dlngSetCol)) - 1) End If elseIf KeyAscii >= 0 And KeyAscii <= 31 Then 'この番号は文字ではないので何もしません '他にも文字ではないコード番号もあります。 '追加して置いてください。 Else grdTEST.TextMatrix(dlngSetRow, dlngSetCol) = grdTEST.TextMatrix(dlngSetRow, dlngSetCol) & Chr(KeyAscii) End if End Sub また、KeyDownイベントに以下の処理を追加します。 Private Sub grdTEST_KeyDown(KeyCode As Integer, Shift As Integer) Dim dlngSetRow as long Dim dlngSetCol as long dlngSetRow = grdTEST.Row dlngSetCol = grdTEST.Col 'カット&ペースト対応処理 If Shift = 2 Then If KeyCode = 86 Then 'V grdTEST.TextMatrix(dlngSetRow, dlngSetCol) = Clipboard.GetText(vbCFText) Exit Sub ElseIf KeyCode = 67 Then 'C Clipboard.SetText grdTEST.TextMatrix(dlngSetRow, dlngSetCol), vbCFText Exit Sub End If End If If KeyCode = 46 Then 'Deleteキーでのセル文字列全削除 grdTEST.TextMatrix(dlngSetRow, dlngSetColl) = "" End if End Sub これでまぁ、Excelとは行かなくてもかなり入力用として使えるんじゃないですかね。 思いっきりはずしてたらすいません・・・ テスト環境 VB6.0 SP5 Win2000Pro
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.