Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


59443 / 76738 ←次へ | 前へ→

【21984】Re:タイピングソフトについて
発言  ichinose  - 05/2/6(日) 13:34 -

引用なし
パスワード
   ▼佐藤 さん:
こんにちは。

>ユーザーホームでタイピングソフトを作ろうと思っているんですが、なにせ初心者ですのでどういった手順でマクロを組んでいいのかわかりません。
>・スタートボタンを押すと問題文がでる
>・文字を打ち、あっていればその文字の色がかわり、間違っていれば別の色にかわり、その先には進めない
>・問題文の種類は10種類くらい
>・打つ文字はA〜Zまでのアルファベット
>・最後に終わるボタンを押すと間違ったアルファべットがでてくる
>
>といった感じのマクロがあれば、それをベースに勉強できるのですが、どなたか作ってくれませんか?
ちょっとだけ、表現の仕方がまずかったかなあ・・・・。

「ここまでは、このように出来たのですが、ここの個所の方法がわかりません」
というだぐいのコードを載せた質問にされた方がよかったかなあ・・と、思います。
でも、演習問題だと思えば、回答投稿の価値ありと考える方もいるかと思いますが・・。

ユーザーフォームにコマンドボタンを二つ用意して下さい。
ユーザーフォーム 名前---Userform1
  コマンドボタン オブシェクト名--Commandbutton1---問題表示用
  コマンドボタン オブジェクト名--Commandbutton2---タイピングログ表示用

標準モジュールに
'=====================================================
sub main()
 userform1.show
end sub

Userform1のモジュールに

'=====================================================
Dim mondai As Variant
Dim m_idx As Long
Dim c_idx As Long
Dim logstr As String
'=====================================================
Private Sub CommandButton1_Click()
  Dim lbl As MSForms.Label
  If m_idx > -1 Then
   For idx = 1 To Len(mondai(m_idx))
     Controls.Remove "label" & idx
     Next
   End If
  m_idx = IIf(m_idx >= UBound(mondai), 0, m_idx + 1)
  For idx = 1 To Len(mondai(m_idx))
   Set lbl = Controls.Add("Forms.Label.1", "label" & idx, True)
   With lbl
    .Top = 40
    .Left = idx * 12.5 + 20
    .Width = 12.5
    .Height = 24
    .Font.Name = "MS ゴシック"
    .Font.Size = 24
    .Caption = Mid(mondai(m_idx), idx, 1)
    End With
   Next idx
  c_idx = 1
  Controls("loglbl").Caption = ""
  logstr = ""
End Sub
'===============================================
Private Sub CommandButton2_Click()
  Controls("loglbl").Caption = logstr
End Sub
'===============================================
Private Sub UserForm_Initialize()
'ここでは、コントロールのプロパティを設定していますが、
'これは、事前設定で可能です

  With Me
   .Width = 350
   .Height = 250
   End With
  btncap = Array("問題表示", "ログ表示")
  For idx = 1 To 2
   With Controls("commandbutton" & idx)
    .TabStop = False
    .TakeFocusOnClick = False
    .Caption = btncap(idx - 1)
    .Left = (idx - 1) * 78 + 32.5
    .Top = Me.Height - 100
    .Width = 78
    .Height = 36
    End With
   Next
  Set lbl = Controls.Add("Forms.Label.1", "loglbl", True)
  With lbl
   .Top = 80
   .Left = 32.5
   .Width = 250
   .Height = 28
   .Font.Name = "MS ゴシック"
   .Font.Size = 24
   .BackColor = &HFFFFFF
   .SpecialEffect = 2
   End With
  mondai = Array("cat", "dog", "cow", "lion", "tiger", "monkey")
  m_idx = -1
End Sub
'=====================================================================
Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  If m_idx > -1 Then
   If Mid(mondai(m_idx), c_idx, 1) = Chr(KeyAscii) Then
     Controls("label" & c_idx).ForeColor = &HFF0000
     If c_idx <= Len(mondai(m_idx)) Then c_idx = c_idx + 1
     End If
   logstr = logstr & Chr(KeyAscii)
   End If
End Sub


以上です。mainを実行して試してみて下さい。

>そこから時間を計ったり、いろいろと発展させていこうと考えてます。

これが少しでも参考になればよいのですが・・。
ちょっと前に、子供に試させたら
「つまんない!!絵もないし、音もない」って言われました!!
0 hits

【21974】タイピングソフトについて 佐藤 05/2/5(土) 16:20 質問
【21975】Re:タイピングソフトについて おさる 05/2/5(土) 17:11 回答
【21979】Re:タイピングソフトについて IROC 05/2/5(土) 18:56 回答
【21981】Re:タイピングソフトについて pi 05/2/6(日) 10:48 回答
【21989】Re:タイピングソフトについて 佐藤 05/2/6(日) 16:26 お礼
【21988】Re:タイピングソフトについて 佐藤 05/2/6(日) 16:25 お礼
【21987】Re:タイピングソフトについて 佐藤 05/2/6(日) 16:23 お礼
【21983】Re:タイピングソフトについて ちゃん 05/2/6(日) 13:07 回答
【21985】Re:タイピングソフトについて ちゃん 05/2/6(日) 13:57 発言
【21990】Re:タイピングソフトについて 佐藤 05/2/6(日) 16:32 お礼
【21991】Re:タイピングソフトについて 佐藤 05/2/6(日) 16:37 お礼
【21984】Re:タイピングソフトについて ichinose 05/2/6(日) 13:34 発言
【21992】Re:タイピングソフトについて 佐藤 05/2/6(日) 16:42 お礼

59443 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free