y_aoi2006-12-12

Excelなんて作るの簡単だぜ URYAAAA!!と言ってみるテスト。未だに VB6 って現場でもよく使われているもので、最近は Win32 にどっぷりつかっていたのだが、作ってみた

Excelを作りたいんですがどうしたらいいですかー? 」

と言われたので…
VB6 で Excel 作ると言ったら MSFlexGrid しか思いつかなかった(実際はスプレッドシートコントロール等もあるが有料)ので使ってみた
だって Excel 作りたいなんて普通言うか?新人が。ゲーム作りたいとかならわかるケド。てことで作ってみた

かけた時間は約10分(ぉ
使った事無くてもね、F1キーとある程度アルゴリズムVB の書式が頭に入ってればそれくらい簡単に書けます。実際にはこれは Grid に入力出来るようにセッティングしただけだけど、10分では出来ない 普通の人は。
ぶっちゃけ時間関係は id:yaneuraoさんの10分で作るソケットプログラムに VB6 で対抗したかっただけ。だって VB6 じゃ逆立ちしても出来るとは思わんって書いてあったんだもの。ソケットを書くとなると、また別だろうけど可能なはず。今回はたまたま Excel 作りたいと言うから作っただけです。現在趣味でだが、それなりのものは作ったヨ(画像参照)

'プライベート変数の定義
Private blnLoadFlg As Boolean  'スプレッドへの初期値設定時にGRIDのENTERイベントを無視するために使用

Private Sub Form_Activate()
    Text1.SetFocus
End Sub

Private Sub Form_Load()

    blnLoadFlg = True
    
    Call GridTextSet(Text1, MSFlexGrid1)
    
    Dim i As Integer
    'グリッドへ書き込み(1〜20まで)
    With MSFlexGrid1
        For i = 0 To 19
                .TextMatrix(0, i) = CStr(i) + 1
         Next i
    End With
    'ダミーロジック START
	Dim i As Integer
    
	With MSFlexGrid1
		For i = 0 To 10
			If i <> 0 Then .Row = .Row + 1
			.Text = CStr(i)
			Next i
	End With
    'ダミーロジック END
 
    blnLoadFlg = False

End Sub

Private Sub Text1_GotFocus()
    Text1.Text = MSFlexGrid1.Text
End Sub

Private Sub Text1_Change() 'キーイベント
    MSFlexGrid1.Text = Text1.Text
End Sub

Private Sub MSFlexGrid1_EnterCell()
    If blnLoadFlg = True Then Exit Sub
    
    Call GridTextSet(Text1, MSFlexGrid1)
    Text1.SetFocus
End Sub

Private Sub MSFlexGrid1_GotFocus() 'キーイベント後にFocusにする事で入力バッファが消えたように見せる
    Call GridTextSet(Text1, MSFlexGrid1)
    Text1.SetFocus
End Sub

Private Sub GridTextSet(objText As Object, objGrid As Object) 'textbox の幅や高さをセルにセット
    objText.Height = objGrid.CellHeight
    objText.Left = CLng(objGrid.Left) + CLng(objGrid.CellLeft)
    objText.Top = CLng(objGrid.Top) + CLng(objGrid.CellTop)
    objText.Width = objGrid.CellWidth
End Sub

CLng を CInt にするヤツはボケ(誰かさん風)