Excel VBA質問箱 IV

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

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


10415 / 13646 ツリー ←次へ | 前へ→

【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 お礼[未読]

【21974】タイピングソフトについて
質問  佐藤  - 05/2/5(土) 16:20 -

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

といった感じのマクロがあれば、それをベースに勉強できるのですが、どなたか作ってくれませんか?
そこから時間を計ったり、いろいろと発展させていこうと考えてます。
よろしくお願い致します。

【21975】Re:タイピングソフトについて
回答  おさる  - 05/2/5(土) 17:11 -

引用なし
パスワード
   >どなたか作ってくれませんか?

お金を払ってプログラマに依頼してください。

【21979】Re:タイピングソフトについて
回答  IROC  - 05/2/5(土) 18:56 -

引用なし
パスワード
   簡単なヒントだけ。

TextBoxを配置して、そこに入力させるようにし
KeyDownやKeyPressのイベントを利用してキーを判定してください。

これさえできれば後は発想だけです。

【21981】Re:タイピングソフトについて
回答  pi  - 05/2/6(日) 10:48 -

引用なし
パスワード
   ▼佐藤 さん 初めまして
僕の場合は
Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long

と、chr を使ってなんとか作りました。
でも、これはあまりお勧めできないです。

【21983】Re:タイピングソフトについて
回答  ちゃん  - 05/2/6(日) 13:07 -

引用なし
パスワード
   >・最後に終わるボタンを押すと間違ったアルファべットがでてくる
これ以外の条件をそろえたのをつくったことがあるのですが、
この条件を今から加えてみるので
できましたら、さしあげましょうか?

【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を実行して試してみて下さい。

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

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

【21985】Re:タイピングソフトについて
発言  ちゃん  - 05/2/6(日) 13:57 -

引用なし
パスワード
   ttp://michael-jordan13.hp.infoseek.co.jp/cgi-bin/obj/obj28_1.zip
こんなんどうでしょう?

【21987】Re:タイピングソフトについて
お礼  佐藤  - 05/2/6(日) 16:23 -

引用なし
パスワード
   ▼おさる さん:
>>どなたか作ってくれませんか?
>
>お金を払ってプログラマに依頼してください。
 
こんにちは、おさるさん。
確かにそうですよね。教えて君ですみませんでした。

【21988】Re:タイピングソフトについて
お礼  佐藤  - 05/2/6(日) 16:25 -

引用なし
パスワード
   ▼IROC さん:
>簡単なヒントだけ。
>
>TextBoxを配置して、そこに入力させるようにし
>KeyDownやKeyPressのイベントを利用してキーを判定してください。
>
>これさえできれば後は発想だけです。


発想がむすがしかったです。

【21989】Re:タイピングソフトについて
お礼  佐藤  - 05/2/6(日) 16:26 -

引用なし
パスワード
   ▼pi さん:
>▼佐藤 さん 初めまして
>僕の場合は
>Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
>
>と、chr を使ってなんとか作りました。
>でも、これはあまりお勧めできないです。

お勧めできない例を教えてくださって有難うございます。

【21990】Re:タイピングソフトについて
お礼  佐藤  - 05/2/6(日) 16:32 -

引用なし
パスワード
   ▼ちゃん さん:
>ttp://michael-jordan13.hp.infoseek.co.jp/cgi-bin/obj/obj28_1.zip
>こんなんどうでしょう?

ttp://michael-jordan13.hp.infoseek.co.jp/cgi-bin/obj/obj28_1.zip
にhを入れてアドレスにコピーしましたが、上手くいきませんでした。
操作がおかしいのかな・・・

【21991】Re:タイピングソフトについて
お礼  佐藤  - 05/2/6(日) 16:37 -

引用なし
パスワード
   ▼ちゃん さん:
>>・最後に終わるボタンを押すと間違ったアルファべットがでてくる
>これ以外の条件をそろえたのをつくったことがあるのですが、
>この条件を今から加えてみるので
>できましたら、さしあげましょうか?

無理を言って申し訳ありません。
いろんな例をみたいとおもっているので、ぜひいただけないでしょうか?
よろしくお願いします。

【21992】Re:タイピングソフトについて
お礼  佐藤  - 05/2/6(日) 16:42 -

引用なし
パスワード
   ▼ichinose さん:
>▼佐藤 さん:
>こんにちは。
>
>>ユーザーホームでタイピングソフトを作ろうと思っているんですが、なにせ初心者ですのでどういった手順でマクロを組んでいいのかわかりません。
>>・スタートボタンを押すと問題文がでる
>>・文字を打ち、あっていればその文字の色がかわり、間違っていれば別の色にかわり、その先には進めない
>>・問題文の種類は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を実行して試してみて下さい。
>
>>そこから時間を計ったり、いろいろと発展させていこうと考えてます。
>
>これが少しでも参考になればよいのですが・・。
>ちょっと前に、子供に試させたら
>「つまんない!!絵もないし、音もない」って言われました!!

実行できました。今後はエンターを押したら次ぎへ進む。タイマー機能をつくる。
タイピング結果を表示できるようにする。
といったことをしていきたいと思ってます。
ありがとうございました。

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