■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#877-0テキストファイルに出力する際…匿名8772004-01-18(日) 03:18
     #878-0RE#877:テキストファイルに出力する際…ラーネッド2004-01-18(日) 09:47
     #879-0RE#878:テキストファイルに出力する際…bata2004-01-18(日) 12:01
     #880-1RE#879:テキストファイルに出力する際…bata2004-01-18(日) 13:58
     #881-1RE#880:テキストファイルに出力する際…匿名8812004-01-18(日) 14:36
     #883-1RE#881:テキストファイルに出力する際…bata2004-01-18(日) 15:43
     #885-1RE#883:テキストファイルに出力する際…ラーネッド2004-01-18(日) 19:29
     #886-1RE#883:テキストファイルに出力する際…匿名8862004-01-18(日) 19:56
     #888-1RE#886:テキストファイルに出力する際…bata2004-01-19(月) 03:01
     #889-1RE#888:テキストファイルに出力する際…ラーネッド2004-01-19(月) 10:05
     #897-1RE#889:テキストファイルに出力する際…bata2004-01-19(月) 12:07
     #904-1RE#897:テキストファイルに出力する際…ラーネッド2004-01-19(月) 16:20
     #906-1RE#904:テキストファイルに出力する際…bata2004-01-19(月) 17:26
     #908-1RE#906:テキストファイルに出力する際…ラーネッド2004-01-19(月) 22:22
     #909-1RE#908:テキストファイルに出力する際…bata2004-01-20(火) 03:41
     #910-0RE#909:テキストファイルに出力する際…匿名9102004-01-20(火) 10:15
     #912-1RE#909:テキストファイルに出力する際…ラーネッド2004-01-20(火) 11:15
     #925-1RE#912:テキストファイルに出力する際…bata2004-01-20(火) 13:08
     #936-1RE#925:テキストファイルに出力する際…ラーネッド2004-01-20(火) 15:14
     #944-1RE#910:テキストファイルに出力する際…bata2004-01-20(火) 19:49
     #943-1RE#936:テキストファイルに出力する際…bata2004-01-20(火) 19:49
     #948-0RE#943:テキストファイルに出力する際…ラーネッド2004-01-20(火) 22:27
     #950-1RE#948:テキストファイルに出力する際…bata2004-01-21(水) 02:23
     #951-0RE#950:テキストファイルに出力する際…ラーネッド2004-01-21(水) 08:14
     #958-1RE#951:テキストファイルに出力する際…bata2004-01-21(水) 15:49
     #963-1RE#958:テキストファイルに出力する際…ラーネッド2004-01-21(水) 23:52
     #964-1RE#963:テキストファイルに出力する際…bata2004-01-22(木) 00:21
     #965-1RE#964:テキストファイルに出力する際…ラーネッド2004-01-22(木) 10:08
     #983-1RE#965:テキストファイルに出力する際…bata 2004-01-23(金) 01:12
     #985-1RE#983:テキストファイルに出力する際…ラーネッド2004-01-23(金) 10:24
     #997-1RE#985:テキストファイルに出力する際…bata2004-01-24(土) 02:28
     #998-1RE#997:テキストファイルに出力する際…匿名9982004-01-24(土) 03:53
     #999-1RE#997:テキストファイルに出力する際…ラーネッド2004-01-24(土) 13:34
     #1002-1RE#999:テキストファイルに出力する際…bata2004-01-25(日) 00:44
     #1003-0RE#997:テキストファイルに出力する際…匿名10032004-01-25(日) 02:44
     #1004-1RE#1003:テキストファイルに出力する際…bata2004-01-25(日) 12:24
     #1005-1RE#1004:テキストファイルに出力する際…匿名10052004-01-25(日) 13:07
     #1006-1RE#1005:テキストファイルに出力する際…bata2004-01-25(日) 15:14
     #1007-1RE#1006:テキストファイルに出力する際…匿名10072004-01-25(日) 16:09
     #1008-1RE#1007:テキストファイルに出力する際…bata2004-01-26(月) 02:22
#877-0
テキストファイルに出力する際…
こんばんわ、実は下記のようなプログラムを作成し…
(長いです、掲示板のルールに反している気がして何度も自分で削除し、
自分で考えようと思ったのですが、全く上手くできません。アドバイスを下さいm(_ _)m)

Private X(1 To 7) As String
Private Y(1 To 9) As String

'反応時間を測るための変数を宣言
Private l時計スタート As Long
Private l時計ストップ As Long


Private Sub Form_Load()
question = 1
character = 1
      X(1) = "質問1:"
      X(2) = "質問2:"
      X(3) = "質問3:"
      X(4) = "質問4:"
      X(5) = "質問5:"
      X(6) = "質問6:"
      X(7) = "質問7:"

    Y(1) = "アンパンマン"
    Y(2) = "ドラえもん"
    Y(3) = "となりのトトロ"
    Y(4) = "ミッキーマウス"
    Y(5) = "アバレンジャー"
    Y(6) = "セーラームーン"
    Y(7) = "魔法使い"
    Y(8) = "サンタクロース"
    Y(9) = "幽霊"
    
    
Me.Show
質問のシャッフル
Show_no (question)
刺激シャッフル
Show_Character (character)

'刺激の提示時間の設定
Rem Text1(0).Text = Y(1)


End Sub

Private Sub Form_()
End Sub
Private Sub Show_Character(i As Integer)
Text1(0).Text = Y(i)
End Sub

Private Sub Show_no(i As Integer)
Label1.Caption = X(i)
End Sub



Sub 質問のシャッフル()  '質問7つをシャッフルする
Rem    Me.Show
Rem    Dim i As Integer, a As Integer, p As String, X(1 To 7) As String
Dim i As Integer, a As Integer, p As String
     
    Randomize
    
    For i = 1 To 7

    a = Int(Rnd * 7) + 1
Rem Debug.Print a
      p = X(a)

      X(a) = X(i)

      X(i) = p

    Next i
   
    End Sub
 
'刺激シャッフル
Sub 刺激シャッフル()  '9つの刺激をシャッフルする
   
    Dim i As Integer, b As Integer, p As String

    Randomize
    
    For i = 1 To 9
      b = Int(Rnd * 9) + 1
      
      
      p = Y(b)

      Y(b) = Y(i)

      Y(i) = p

    Next i
    
    
    End Sub



Private Sub Form_MouseDown(button As Integer, Shift As Integer, X As Single, Y As Single)

'反応時間を測定する
    If i試行 <> 0 Then
    
        l時計ストップ = GetTickCount
        
        l反応時間(i試行) = l時計ストップ - l時計スタート
        
    Rem i得点 (i試行)
        
    End If

    If i試行数 >= n総試行数 Then
    
        統計処理
    
    End If
    
End Sub

Private Sub Form_MouseUp(button As Integer, Shift As Integer, X As Single, Y As Single)

'シャッフルして次の試行に移る

    If character < 9 Then
         character = character + 1
        Show_Character (character)
    
        l時計スタート = GetTickCount
        i試行 = i試行 + 1
        
    Else
    
        If question < 7 Then
            刺激シャッフル
            question = question + 1
            Show_no (question)
            character = 1
            Show_Character (character)
        
            l時計スタート = GetTickCount
            i試行 = i試行 + 1
            
        Else
'実験を終わる
            Load 結果フォーム
    
        End If
    End If
    Debug.Print "no = "; question; "; Char = "; character;
    
End Sub

Private Function 判断(button As Integer) As Integer
Dim i得点 As interger

    Select Case button
    Case vbKeyLButton
    If yesno判断(i試行) = 1 Then
    
            i得点 = 1
    Else
            i得点 = 0
    End If
    
    Case vbKeyRButton
    If yesno判断(i試行) = 0 Then
    
            i得点 = 1
    Else
            i得点 = 0
    End If
    End Select
    
    判断 = i得点
    
End Function
--------------------------------------------------------------------------------
これをテキストファイルに出力する際

Private Sub Form_Load()  '結果の表示
    Me.Show
    
    Dim s実験結果 As String
    
s実験結果 = App.Path & "\" & "結果.txt."

Open s実験結果 For Output As #1

For i = 1 To n総試行数

    Print #1, i, question, character, yesno判断(i), l反応時間(i)
        
Next i

Close #1

End Sub
------------------------------------------------------------------------------
というプログラムを作成したのですが、question, character, yesno判断(i), が表示されません。
questionは・charcterは7,9と表示され、yesno判断では0としか表示されません。
これはどこがおかしいのでしょうか?

このほかに標準モジュールには'反応数時間測定のために API関数の宣言

Declare Function GetTickCount Lib "kernel32" () As Long


'定数と変数のグローバルな宣言
Public Const n総試行数 = 63


Public i試行 As Integer

Public yes反応数 As Integer
Public no反応数 As Integer


Public yesno判断(1 To n総試行数) As Integer

Public l反応時間(1 To n総試行数) As Long

Public i得点(1 To n総試行数) As Integer

Public yes反応時間 As Double
Public no反応時間 As Double
Public yesヒット数 As Integer
Public noヒット数 As Integer

Public question As Integer
Public character As Integer



Sub 試行間(l待ち時間 As Long) 'ミリ秒単位で待ち時間を設ける
    
    Dim l開始時間 As Long
    
    l開始時間 = GetTickCount
    
    Do
    
        DoEvents
        
    Loop Until GetTickCount - l開始時間 > l待ち時間
    
End Sub


Sub 統計処理()  '実験結果の出力

For i = 1 To i試行  '途中で集計するかもしれないから"i試行までを処理"

    If yesno判断(i) = 1 Then
        
        yes反応時間 = yes反応時間 + l反応時間(i)
        
        yesヒット数 = yesヒット数 + i得点(i)
        
        yes反応数 = yes反応数 + 1
     Else
  
        no反応時間 = no反応時間 + l反応時間(i)
        
        noヒット数 = noヒット数 + i得点(i)
        
        no反応数 = no反応数 + 1
        
    End If
  
  Next i
  
'実験の結果を出力するフォームをロード
    Load 結果フォーム
    
  End Sub
  
と書きました。
ほんとにわからないので、だれかアドバイスをお願いしますm(_ _)m
#878-0
RE#877:テキストファイルに出力する際…
> これをテキストファイルに出力する際
> 
> Private Sub Form_Load()  '結果の表示
>     Me.Show
>     
>     Dim s実験結果 As String
>     
> s実験結果 = App.Path & "\" & "結果.txt."
> 
> Open s実験結果 For Output As #1
> 
> For i = 1 To n総試行数
> 
>     Print #1, i, question, character, yesno判断(i), l反応時間(i)
>         
> Next i
> 
> Close #1
> 
> End Sub
> ------------------------------------------------------------------------------
> というプログラムを作成したのですが、question, character, yesno判断(i), が表示されません。
> questionは・charcterは7,9と表示され、yesno判断では0としか表示されません。
> これはどこがおかしいのでしょうか?
> 
この処理が実行される条件が
 question=7
  character=9
だからデス。
また、yesno判断()に値を入れてる箇所が見あたりませんが・・・。
#879-0
RE#878:テキストファイルに出力する際…
こんにちわ、#877で投稿した者です。
ラーネッドさん、返信ありがとうございますm(_ _)m 

> > questionは・charcterは7,9と表示され、yesno判断では0としか表示されません。
> > これはどこがおかしいのでしょうか?
> > 
> この処理が実行される条件が
>  question=7
>   character=9
> だからデス。

えっと、自分のなかではこの値をこのプログラムを動かしたときの値にしたいのですが、
これはどこを修正すればよいのでしょうか?
途中の
Debug.Print "no = "; question; "; Char = "; character; 
ではきちんと表示されるのですが…

> また、yesno判断()に値を入れてる箇所が見あたりませんが・・・。

Private Function 判断(button As Integer) As Integer
Dim i得点 As interger

    Select Case button
    Case vbKeyLButton
    If yesno判断(i試行) = 1 Then
    
            i得点 = 1
    Else
            i得点 = 0
    End If
    
    Case vbKeyRButton
    If yesno判断(i試行) = 0 Then
    
            i得点 = 1
    Else
            i得点 = 0
    End If
    End Select
    
    判断 = i得点
    
End Function
の部分を表示したいのですが…その場合はi得点(i)といれればいいのでしょうか?
#880-1
RE#879:テキストファイルに出力する際…
こんにちは、自己レスですf^^;

> 
> > また、yesno判断()に値を入れてる箇所が見あたりませんが・・・。
> 
-----------------中略----------------
> の部分を表示したいのですが…その場合はi得点(i)といれればいいのでしょうか?

実際にi得点(i)と入れたところ、同じように0としか出ませんでした。f^^;
これも、どこか間違っている部分があるのでしょうか?

えっと、さらにこのcharacterが呈示される際、今はボタンをクリックしないと
次に進まないのですが、クリックしなくても0.5秒間隔でcharacter名が
変わるようにしたいのですが…
誰か、アドバイスをお願いしますm(_ _)m
#881-1
RE#880:テキストファイルに出力する際…
> > > また、yesno判断()に値を入れてる箇所が見あたりませんが・・・。

> Public yesno判断(1 To n総試行数) As Integer

yesno判断 は配列として定義されているので値は0で初期化されています。

yesno判断(?) = ? 

としている部分がない(値を入れている部分がない)ので、

yesno判断(i)

は0のままです。

yesno判断(?) には何の値が入るのでしょう?
#883-1
RE#881:テキストファイルに出力する際…
匿名881さん、返信ありがとうございます。

> > > > また、yesno判断()に値を入れてる箇所が見あたりませんが・・・。
> 
> > Public yesno判断(1 To n総試行数) As Integer
> 
> yesno判断 は配列として定義されているので値は0で初期化されています。
> 
> yesno判断(?) = ? 
> 
> としている部分がない(値を入れている部分がない)ので、
> 
> yesno判断(i)
> 
> は0のままです。
> 
> yesno判断(?) には何の値が入るのでしょう?


僕の中では

Private Function 判断(button As Integer) As Integer
Dim i得点 As interger

    Select Case button
    Case vbKeyLButton
    If yesno判断(i試行) = 1 Then
    
            i得点 = 1
    Else
            i得点 = 0
    End If
    
    Case vbKeyRButton
    If yesno判断(i試行) = 0 Then
    
            i得点 = 1
    Else
            i得点 = 0
    End If
    End Select
    
    判断 = i得点
    
End Function

ここの出力結果がほしいのですが…
つまり、1or0という判定が欲しいんですけど…
これはどこを直すべきなのでしょうか?

理想では 
「試行数、質問番号、キャラクター番号、1or0の判断結果、反応時間」
とテキストファイルに書き込みたいのですが…


#885-1
RE#883:テキストファイルに出力する際…
> 僕の中では
> 
> Private Function 判断(button As Integer) As Integer
> Dim i得点 As interger
> 
>     Select Case button
>     Case vbKeyLButton
>     If yesno判断(i試行) = 1 Then
>     
>             i得点 = 1
>     Else
>             i得点 = 0
>     End If
>     
>     Case vbKeyRButton
>     If yesno判断(i試行) = 0 Then
>     
>             i得点 = 1
>     Else
>             i得点 = 0
>     End If
>     End Select
>     
>     判断 = i得点
>     
> End Function
> 
> ここの出力結果がほしいのですが…
> つまり、1or0という判定が欲しいんですけど…
> これはどこを直すべきなのでしょうか?
> 
しつこいようですが、yesno判断()に値を入れる記述を追加して下さい。
でないと、If文を書いている意味が無いですよ。

#この変数の意味や、
#どの様な条件の時に1となるのかは、私たちには分かりませんので、
#これ以外回答のしようがありません。
#886-1
RE#883:テキストファイルに出力する際…
yesno判断(1) = 1

としない限り、

Print yesno判断(1)

で 1 が表示されることはありません。

どこかで yesno判断 に値を入れてください。
わかりますか?
#888-1
RE#886:テキストファイルに出力する際…
匿名886さん、ラーネッドさん再び返信ありがとうございますm(_ _)m
> どこかで yesno判断 に値を入れてください。
> わかりますか?

ようやく分かりました。
自分のかん違いで、実は右クリックをすれば1を
左クリックを押せば0を出力できるようになればよかったのですf^^;
ほんとに何度も聞いてしまい、もうしわけありませんでした。
Private Function 判断(Button As Integer) As Integer

    Select Case Button
    Case vbKeyLButton
    
            i得点(i試行) = 1
    
    Case vbKeyRButton
            
            i得点(i試行) = 0
    
    End Select
    
    判断 = i得点(i試行)
    
End Function
このようにかえて、多少操作したら、なんとかできました。
ありがとうございました。

えっと…あとは質問番号とキャラ番号が出力されるようにしたいのですが…
以前、ラーネッドさんに

> この処理が実行される条件が
>  question=7
>   character=9
> だからデス。

と指摘されたのですが、どこを修正すれば解決できるのか、わからない状態です。
なにかアドバイスをもらえたら幸いですm(_ _)m
#889-1
RE#888:テキストファイルに出力する際…
> えっと…あとは質問番号とキャラ番号が出力されるようにしたいのですが…
> 以前、ラーネッドさんに
> 
> > この処理が実行される条件が
> >  question=7
> >   character=9
> > だからデス。
> 
> と指摘されたのですが、どこを修正すれば解決できるのか、わからない状態です。
> なにかアドバイスをもらえたら幸いですm(_ _)m
>
どの様に出力したいのかイマイチ判らないのですが、
こんな感じでしょうか?

    For i = 1 To n総試行数
        Print #1, i, (i - 1) \ 9 + 1, (i - 1) Mod 9 + 1, i得点(i), l反応時間(i)
    Next i
#897-1
RE#889:テキストファイルに出力する際…
ラーネッドさん、何度も返信していただき本当にありがとうございますm(_ _)m

> > えっと…あとは質問番号とキャラ番号が出力されるようにしたいのですが…
> > 以前、ラーネッドさんに
> > 
> > > この処理が実行される条件が
> > >  question=7
> > >   character=9
> > > だからデス。
> > 
> > と指摘されたのですが、どこを修正すれば解決できるのか、わからない状態です。
> > なにかアドバイスをもらえたら幸いですm(_ _)m
> >
> どの様に出力したいのかイマイチ判らないのですが、
> こんな感じでしょうか?
> 
>     For i = 1 To n総試行数
>         Print #1, i, (i - 1) \ 9 + 1, (i - 1) Mod 9 + 1, i得点(i), l反応時間(i)
>     Next i

えっと、これだと質問が1〜7が順番に、キャラクター番号が1〜9の順番に表示されていますね。
イメージ的にはかなり近いのですが、
このプログラムで質問番号・キャラクター番号がランダムに表示されるようになっています。
その番号を出力したいのですが…

    Debug.Print "no = "; question; "; Char = "; character;
    
で出力されるのが、そのままテキストファイルに出力されればよいのですが…f^^;
あと、以前に少し書き込んだのですが、この質問・キャラクター名が表示されるときに
クリックしても変わり、かつ0.5秒ごとにキャラクター名が変わるようにしたいのですが…
これはTimerオブジェクトを使用すると出来るのでしょうか?
(実際に自分で試したら、できなくて…(-.-;))
ほんと、申し訳ありません。教えてもらえると助かります。
#904-1
RE#897:テキストファイルに出力する際…
> このプログラムで質問番号・キャラクター番号がランダムに表示されるようになっています。
> その番号を出力したいのですが…
> 
>     Debug.Print "no = "; question; "; Char = "; character;
>     
> で出力されるのが、そのままテキストファイルに出力されればよいのですが…f^^;

    Debug.Print "no = "; question; "; Char = "; character;
    Open "text.txt" For Append As #1    ← 3行追加
    Print #1, i試行, question, character
    Close #1
とした場合、bataさんの期待通りの値が出力がされていますか?

> あと、以前に少し書き込んだのですが、この質問・キャラクター名が表示されるときに
> クリックしても変わり、かつ0.5秒ごとにキャラクター名が変わるようにしたいのですが…
> これはTimerオブジェクトを使用すると出来るのでしょうか?
> (実際に自分で試したら、できなくて…(-.-;))
> ほんと、申し訳ありません。教えてもらえると助かります。
>
タイマーコントロールを使用すれば、簡単です。
Timer1_Timer()イベントでform_mousedown,form_mouseupイベントを順に
Callしてやれば良いかと。(引数を忘れずに)
#906-1
RE#904:テキストファイルに出力する際…
ラーネッドさん、返信ありがとうございますm(_ _)m

> > このプログラムで質問番号・キャラクター番号がランダムに表示されるようになっています。
> > その番号を出力したいのですが…
> > 
> >     Debug.Print "no = "; question; "; Char = "; character;
> >     
> > で出力されるのが、そのままテキストファイルに出力されればよいのですが…f^^;
> 
>     Debug.Print "no = "; question; "; Char = "; character;
>     Open "text.txt" For Append As #1    ← 3行追加
>     Print #1, i試行, question, character
>     Close #1
> とした場合、bataさんの期待通りの値が出力がされていますか?

それが、前にラーネッドさんが教えてくださった

    For i = 1 To n総試行数
        Print #1, i, (i - 1) \ 9 + 1, (i - 1) Mod 9 + 1, i得点(i), l反応時間(i)
    Next i

と同じ結果になってしまいまして…
これは何が原因なんでしょう?(-_-;)
現在、ドツボにはまっています(泣)

個人的には標準モジュールが
Public yesno判断(1 To n総試行数) As Integer

Public l反応時間(1 To n総試行数) As Long

Public i得点(1 To n総試行数) As Integer

Public yes反応時間 As Double
Public no反応時間 As Double
Public yesヒット数 As Integer
Public noヒット数 As Integer

Public question As Integer
Public character As Integer

となっているからquestionとcharacterが読み込めていないのかと…
ここをうまく変えることができればいいのかな?
なにかアドバイスがあったらお願いしますm(_ _)m
> 
> > あと、以前に少し書き込んだのですが、この質問・キャラクター名が表示されるときに
> > クリックしても変わり、かつ0.5秒ごとにキャラクター名が変わるようにしたいのですが…
> > これはTimerオブジェクトを使用すると出来るのでしょうか?
> > (実際に自分で試したら、できなくて…(-.-;))
> > ほんと、申し訳ありません。教えてもらえると助かります。
> >
> タイマーコントロールを使用すれば、簡単です。
> Timer1_Timer()イベントでform_mousedown,form_mouseupイベントを順に
> Callしてやれば良いかと。(引数を忘れずに)

???えっと…これは

Private Sub Timer1_Timer()

    Call Form_MouseUp()
 
    Call Form_Mousedown()
    
End Sub

に文章を加えていけば良いのでしょうか?
引数をくわえるというのはf^^;
callステートメントがよくわかってないもので…(汗
#908-1
RE#906:テキストファイルに出力する際…
>     For i = 1 To n総試行数
>         Print #1, i, (i - 1) \ 9 + 1, (i - 1) Mod 9 + 1, i得点(i), l反応時間(i)
>     Next i
> 
> と同じ結果になってしまいまして…
> これは何が原因なんでしょう?(-_-;)
> 
それは、

> > > このプログラムで質問番号・キャラクター番号がランダムに表示されるようになっています。

と、思い違いをしているからです。
実際にランダムで表示されているのは、"質問1:"や"アンパンマン"などの文字列です。
質問番号(question)とキャラクター番号(character)が
ランダムに推移している訳ではありません。
また、"アンパンマン"が1、"ドラえもん"が2などの、キャラとキャラ番号の関連づけが無いため、
キャラ番号を出力したところで、どのキャラを示しているのか分かりません。
以上を念頭に置き、プログラムを見直して下さい。

> > タイマーコントロールを使用すれば、簡単です。
> > Timer1_Timer()イベントでform_mousedown,form_mouseupイベントを順に
> > Callしてやれば良いかと。(引数を忘れずに)
> 
> ???えっと…これは
> 
> Private Sub Timer1_Timer()
> 
>     Call Form_MouseUp()
>  
>     Call Form_Mousedown()
>     
> End Sub
> 
> に文章を加えていけば良いのでしょうか?
> 引数をくわえるというのはf^^;
> callステートメントがよくわかってないもので…(汗
>
Callする順番が逆(MouseDownが先)ですが、その方向でいいです。
引数については、MouseDown、MouseUpイベントのヘルプを見て下さい。
#909-1
RE#908:テキストファイルに出力する際…
ラーネッドさん、ほんとに親切にありがとうございますm(_ _)m

> 
> と、思い違いをしているからです。
> 実際にランダムで表示されているのは、"質問1:"や"アンパンマン"などの文字列です。
> 質問番号(question)とキャラクター番号(character)が
> ランダムに推移している訳ではありません。
> また、"アンパンマン"が1、"ドラえもん"が2などの、キャラとキャラ番号の関連づけが無いため、
> キャラ番号を出力したところで、どのキャラを示しているのか分かりません。
> 以上を念頭に置き、プログラムを見直して下さい。

(すいません、また長いですm(_ _)m)管理人さん申し訳ありません。

Private X(1 To 7) As String
Private Y(1 To 9) As String
Private Xの番号(1 To 7) As Integer
Private Yの番号(1 To 9) As Integer


'反応時間を測るための変数を宣言
Private l時計スタート As Long
Private l時計ストップ As Long



Private Sub Form_Load()
question = 1
character = 1
      X(1) = "質問1:"
      X(2) = "質問2:"
      X(3) = "質問3:"
      X(4) = "質問4:"
      X(5) = "質問5:"
      X(6) = "質問6:"
      X(7) = "質問7:"

    Y(1) = "アンパンマン"
    Y(2) = "ドラえもん"
    Y(3) = "となりのトトロ"
    Y(4) = "ミッキーマウス"
    Y(5) = "アバレンジャー"
    Y(6) = "セーラームーン"
    Y(7) = "魔法使い"
    Y(8) = "サンタクロース"
    Y(9) = "幽霊"
    
  For i = 1 To 7
    Xの番号(i) = i
  Next i
  For i = 1 To 9
    Yの番号(i) = i
  Next i
    
Me.Show
質問のシャッフル
Show_no (question)
刺激シャッフル
Show_Character (character)

'刺激の提示時間の設定
Rem Text1(0).Text = Y(1)


End Sub

Private Sub Form_()
End Sub
Private Sub Show_Character(i As Integer)
Text1(0).Text = Y(i)
End Sub

Private Sub Show_no(i As Integer)
Label1.Caption = X(i)
End Sub



Sub 質問のシャッフル()  '質問7つをシャッフルする
Rem    Me.Show
Rem    Dim i As Integer, a As Integer, p As String, X(1 To 7) As String
Dim i As Integer, a As Integer, p As String
Dim q As Integer
     
    Randomize
    
    For i = 1 To 7

    a = Int(Rnd * 7) + 1
Rem Debug.Print a
      p = X(a)

      X(a) = X(i)

      X(i) = p
      
        q = Xの番号(a)
        Xの番号(a) = Xの番号(i)
        Xの番号(i) = q

    Next i
   
    End Sub
 
'刺激シャッフル
Sub 刺激シャッフル()  '9つの刺激をシャッフルする
   
    Dim i As Integer, b As Integer, p As String
    Dim q As Integer

    Randomize
    
    For i = 1 To 9
      b = Int(Rnd * 9) + 1
      
      
      p = Y(b)

      Y(b) = Y(i)

      Y(i) = p
      
        q = Yの番号(b)
        Yの番号(b) = Yの番号(i)
        Yの番号(i) = q

    Next i
    
    
    End Sub

Private Sub Form_MouseDown(button As Integer, Shift As Integer, X As Single, Y As Single)

'反応時間を測定する
    If i試行 <> 0 Then
    
        l時計ストップ = GetTickCount
        
        l反応時間(i試行) = l時計ストップ - l時計スタート
    
        i得点(i試行) = 判断(button)
    
    Rem i得点 (i試行)
        
    End If

    If i試行数 >= n総試行数 Then
    
        統計処理
    
    End If
    
End Sub

Private Sub Form_MouseUp(button As Integer, Shift As Integer, X As Single, Y As Single)

'シャッフルして次の試行に移る

    If character < 9 Then
         character = character + 1
        Show_Character (character)
        question番号(i試行 + 2) = Xの番号(question)
        character番号(i試行 + 2) = Yの番号(character)
        l時計スタート = GetTickCount
        i試行 = i試行 + 1
        
    Else
    
        If question < 7 Then
            刺激シャッフル
            question = question + 1
            Show_no (question)
            question番号(i試行 + 2) = Xの番号(question)
            character = 1
            Show_Character (character)
            character番号(i試行 + 2) = Yの番号(character)
            
            l時計スタート = GetTickCount
            i試行 = i試行 + 1
            
        Else
'実験を終わる
            Load 結果フォーム
    
        End If
    End If
    Debug.Print "no = "; question; "; Char = "; character;
    
End Sub

Private Function 判断(button As Integer) As Integer

    Select Case button
    Case vbKeyLButton
    
            i得点(i試行) = 1
    
    Case vbKeyRButton
            
            i得点(i試行) = 0
    
    End Select
    
    判断 = i得点(i試行)
    
End Function


--------------------------------------------------------------------------

こんな感じでよいのでしょうか?(まあ、1番最初の文字が出てこないんですけどf^^;)
とりあえず出力はかなり理想に近づいたのですが…

あとは呈示時間ですが…

Private Sub Timer1_Timer()

     Call Form_MouseDown(button, Shift, X, Y)
     
     Call Form_MouseUp(button, Shift, X, Y)

 End Sub 

> Callする順番が逆(MouseDownが先)ですが、その方向でいいです。
> 引数については、MouseDown、MouseUpイベントのヘルプを見て下さい。
おそらく上記のようになる(ような気が…)と思ったのですが、これをどの様に指示を与えて
行けばよいのかが分かりません…(-.-;)
もう少しヒントをもらえないでしょうか?
(これも、エラーが発生していますし…)
#910-0
RE#909:テキストファイルに出力する際…
> '反応時間を測るための変数を宣言
> Private l時計スタート As Long
> Private l時計ストップ As Long

http://support.microsoft.com/default.aspx?scid=kb;ja;418924

「Visual Basic では、プロジェクト、コントロール、フォーム モジュール、
 クラス モジュール、標準モジュール、変数、定数、およびプロシージャの
 名前に日本語の文字を使用することができません。」

「Visual Basic でプロジェクト、コントロール、フォーム モジュールなどの
 名前に日本語の文字を使用した際に、予期しない動作をすることがあります。」
#912-1
RE#909:テキストファイルに出力する際…
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

'シャッフルして次の試行に移る
    question番号(i試行) = Xの番号(question)
    character番号(i試行) = Yの番号(character)
    
    If character < 9 Then
        character = character + 1
    Else
    
        If question < 7 Then
            刺激シャッフル
            question = question + 1
            character = 1
            Show_no question
            
        Else
'実験を終わる
            Timer1.Enabled = False
            Load 結果フォーム
            
        End If
    End If
    Show_Character character
    l時計スタート = GetTickCount
    i試行 = i試行 + 1
    
    'Debug.Print "no = "; question; "; Char = "; character;
End Sub
上記の様に変更してみました。
これ伴い、他の部分でも変更が必要ですが、それはご自分で修正してみて下さい。
 
> あとは呈示時間ですが…
> 
> Private Sub Timer1_Timer()
> 
>      Call Form_MouseDown(button, Shift, X, Y)
>      
>      Call Form_MouseUp(button, Shift, X, Y)
> 
>  End Sub 
> 
> > Callする順番が逆(MouseDownが先)ですが、その方向でいいです。
> > 引数については、MouseDown、MouseUpイベントのヘルプを見て下さい。
> おそらく上記のようになる(ような気が…)と思ったのですが、これをどの様に指示を与えて
> 行けばよいのかが分かりません…(-.-;)
> もう少しヒントをもらえないでしょうか?
> (これも、エラーが発生していますし…)
>
それぞれの引数がどの様な値を取るかはヘルプに書いてありますが、
新規プロジェクト(じゃなくても良いけど)で、

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Debug.Print Button, Shift, X, Y
    
End Sub

と記述しフォームをクリックしてみると、より分かりやすいかもしれません。
#925-1
RE#912:テキストファイルに出力する際…
こんにちは、ラーネッドさんアドバイスをありがとうございます。

> Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
> 
> 'シャッフルして次の試行に移る
>     question番号(i試行) = Xの番号(question)
>     character番号(i試行) = Yの番号(character)
>     
>     If character < 9 Then
>         character = character + 1
>     Else
>     
>         If question < 7 Then
>             刺激シャッフル
>             question = question + 1
>             character = 1
>             Show_no question
>             
>         Else
> '実験を終わる
>             Timer1.Enabled = False
>             Load 結果フォーム
>             
>         End If
>     End If
>     Show_Character character
>     l時計スタート = GetTickCount
>     i試行 = i試行 + 1
>     
>     'Debug.Print "no = "; question; "; Char = "; character;
> End Sub
> 上記の様に変更してみました。
> これ伴い、他の部分でも変更が必要ですが、それはご自分で修正してみて下さい。
  
  これはエラーが発生してしまうということですよね?
  インデックスが有効範囲にないってことは、どこかの値をかえるのでしょうか?
 Timer…を加えてあるということは、こちらも時間に関係が…?
 
>  
>
> それぞれの引数がどの様な値を取るかはヘルプに書いてありますが、
> 新規プロジェクト(じゃなくても良いけど)で、
> 
> Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
>     Debug.Print Button, Shift, X, Y
>     
> End Sub
> 
> と記述しフォームをクリックしてみると、より分かりやすいかもしれません。

Buttonが右クリック・左クリックを示しているといったことはわかったんですけど…
これをcallして…(汗
(すいません、もう少しよく考えますf^^;)
まだ、全然わかってないもので…
#936-1
RE#925:テキストファイルに出力する際…
>   これはエラーが発生してしまうということですよね?
そうです。

>   インデックスが有効範囲にないってことは、どこかの値をかえるのでしょうか?
エラーになった時のindex値とプログラムの流れを見て修正して下さい。
#カウンタ用の変数はキチンと初期化して下さいと言うこと。

>  Timer…を加えてあるということは、こちらも時間に関係が…?
これは取り敢えず削除してもOKです。

> > それぞれの引数がどの様な値を取るかはヘルプに書いてありますが、
> > 新規プロジェクト(じゃなくても良いけど)で、
> > 
> > Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
> >     Debug.Print Button, Shift, X, Y
> >     
> > End Sub
> > 
> > と記述しフォームをクリックしてみると、より分かりやすいかもしれません。
> 
> Buttonが右クリック・左クリックを示しているといったことはわかったんですけど…
> これをcallして…(汗
> (すいません、もう少しよく考えますf^^;)
> まだ、全然わかってないもので…
自作のSubプロシージャを呼ぶ(Callする)時と同じことです。
難しく考えてはいけません。
#944-1
RE#910:テキストファイルに出力する際…
こんにちは、匿名910さん、返信ありがとうございます。

> > '反応時間を測るための変数を宣言
> > Private l時計スタート As Long
> > Private l時計ストップ As Long
> 
> http://support.microsoft.com/default.aspx?scid=kb;ja;418924
> 
> 「Visual Basic では、プロジェクト、コントロール、フォーム モジュール、
>  クラス モジュール、標準モジュール、変数、定数、およびプロシージャの
>  名前に日本語の文字を使用することができません。」
> 
> 「Visual Basic でプロジェクト、コントロール、フォーム モジュールなどの
>  名前に日本語の文字を使用した際に、予期しない動作をすることがあります。」
えっと、これは上記2行に限らず、日本語は全部直したほうが良いんですか?
#943-1
RE#936:テキストファイルに出力する際…
> >   インデックスが有効範囲にないってことは、どこかの値をかえるのでしょうか?
> エラーになった時のindex値とプログラムの流れを見て修正して下さい。
> #カウンタ用の変数はキチンと初期化して下さいと言うこと。

えっと、これはiの値を初期化するということですか?
(どこを直してよいのか全然わからず…(-_-;))

> 
> > > それぞれの引数がどの様な値を取るかはヘルプに書いてありますが、
> > > 新規プロジェクト(じゃなくても良いけど)で、
> > > 
> > > Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
> > >     Debug.Print Button, Shift, X, Y
> > >     
> > > End Sub
> > > 
> > > と記述しフォームをクリックしてみると、より分かりやすいかもしれません。
> > 
> > Buttonが右クリック・左クリックを示しているといったことはわかったんですけど…
> > これをcallして…(汗
> > (すいません、もう少しよく考えますf^^;)
> > まだ、全然わかってないもので…
> 自作のSubプロシージャを呼ぶ(Callする)時と同じことです。
> 難しく考えてはいけません。

えっと、これは

    If i試行 <> 0 Then
    
        l時計ストップ = GetTickCount
        
        l反応時間(i試行) = l時計ストップ - l時計スタート
    
        i得点(i試行) = 判断(Button)
    
    Rem i得点 (i試行)
        
    End If

    If i試行数 >= n総試行数 Then
    
        統計処理
    
    End If

これはPrivate Sub Form_MouseDownをそのままコピーしたのですが、これをそのまま載せてよい
と言うことですか?

さらに、以前右クリックを押したら1、左クリックを押したら0になるようにしたいといって
自分でできたと思っていたのですが、実際にはできていませんでした。
(1と0は記録されるのですが、右クリックを連打しても全部1と出力されるわけでなく…)

Private Function 判断(Button As Integer) As Integer

    Select Case Button
    Case vbKeyRButton
    
            i得点(i試行) = 1
    
    Case vbKeyLButton
            
            i得点(i試行) = 0
    
    End Select
    
    判断 = i得点(i試行)
    
End Function

これはなにか原因があるのでしょうか?
また何かアドバイスをお願いしますm(_ _)m
#948-0
RE#943:テキストファイルに出力する際…
> > #カウンタ用の変数はキチンと初期化して下さいと言うこと。
> 
> えっと、これはiの値を初期化するということですか?
> (どこを直してよいのか全然わからず…(-_-;))
> 
iだけに限らず、question、character、i試行もカウンタ変数ではないですか?
  
> これはPrivate Sub Form_MouseDownをそのままコピーしたのですが、これをそのまま載せてよい
> と言うことですか?
> 
これはそーゆー意味ではなく、マウスの左釦や右釦を押したときにMouseDownイベントに
どの様な引数が渡されるかを実感してもらいたかったのです。
TimerイベントでMouseDownイベントをCallするとき、同様の引数を渡せばOKなんですね。
#引数X、Yは0にしておけば問題ないでしょう。

> さらに、以前右クリックを押したら1、左クリックを押したら0になるようにしたいといって
> 自分でできたと思っていたのですが、実際にはできていませんでした。
> (1と0は記録されるのですが、右クリックを連打しても全部1と出力されるわけでなく…)
> 
> Private Function 判断(Button As Integer) As Integer
> 
>     Select Case Button
>     Case vbKeyRButton
>     
>             i得点(i試行) = 1
>     
>     Case vbKeyLButton
>             
>             i得点(i試行) = 0
>     
>     End Select
>     
>     判断 = i得点(i試行)
>     
> End Function
> 
> これはなにか原因があるのでしょうか?
> また何かアドバイスをお願いしますm(_ _)m
>
多分毎回同じところで0になるのでは?
判断関数が呼ばれない時があるはずです。
   If character < 9 Then 
この行にブレイクポイントを設定して1行ずつステップ実行(F8)してみましょう。
#デバッグ方法の詳細はヘルプの
  VisualBasicドキュメント
   VisualBasic6.0活用ガイド
    項目別リンク先
     デバッグ、エラー処理、パフォーマンスの向上に関するトピック
      デバッグに関するトピック
       コードのデバッグおよびエラー処理
        デバッグツール
を参照して下さい。
#950-1
RE#948:テキストファイルに出力する際…
ラーネッドさん、再三にわたってありがとうございます。
この作品とともに、もっと精進します(笑
(自分の非力さを実感(-_-;))

> > > #カウンタ用の変数はキチンと初期化して下さいと言うこと。
> > 
> > えっと、これはiの値を初期化するということですか?
> > (どこを直してよいのか全然わからず…(-_-;))
> > 
> iだけに限らず、question、character、i試行もカウンタ変数ではないですか?

…そうですね。えっと…これを全部Private Sub Form_MouseUpのとこで初期化するということ
なんですか?(汗
初期化だから
例)
question(i試行) = i

ということですか?(変数は宣言されているわけだし…)



> TimerイベントでMouseDownイベントをCallするとき、同様の引数を渡せばOKなんですね。
> #引数X、Yは0にしておけば問題ないでしょう。
> 
えっと…スイマセンm(_ _)m
ここの2行を理解できてないようで…

Private Sub Timer1_Timer()

     Call Form_MouseDown(Button, Shift, X, Y)
     
     Call Form_MouseUp(Button, Shift, X, Y)

End Sub
こういうことでしょうか??

> > さらに、以前右クリックを押したら1、左クリックを押したら0になるようにしたいといって
> > 自分でできたと思っていたのですが、実際にはできていませんでした。
> > (1と0は記録されるのですが、右クリックを連打しても全部1と出力されるわけでなく…)
> > 
> 多分毎回同じところで0になるのでは?
> 判断関数が呼ばれない時があるはずです。
>    If character < 9 Then 
> この行にブレイクポイントを設定して1行ずつステップ実行(F8)してみましょう。

えっと、試したところ判断関数がどれも呼ばれないんですよね(汗
(それだと、なぜ1.0の数は表示されるのでしょうか?)
操作の仕方がまちがっているのでしょうか?

スイマセン、かなり頭がこんがらがってます。
(言ってることは簡単そうなんですが、理解できてないようで…)
ゆっくり考えながら(理解しながら)やってみようと思います。
ほんとにご迷惑おかけしますm(_ _)m
#951-0
RE#950:テキストファイルに出力する際…
> …そうですね。えっと…これを全部Private Sub Form_MouseUpのとこで初期化するということ
> なんですか?(汗
>
ハズレです。
毎回初期化してしまうと、カウンタの意味がありません。

> 初期化だから
> 例)
> question(i試行) = i
> 
> ということですか?(変数は宣言されているわけだし…)
> 
初期化とは、プログラムを組む上で都合の良い初期値を設定することです。
Form_Loadの
  question = 1
    character = 1
も、そういった意味で書いているわけですよね。
変数i試行に、その様な記述はありますか?

 
> Private Sub Timer1_Timer()
> 
>      Call Form_MouseDown(Button, Shift, X, Y)
>      
>      Call Form_MouseUp(Button, Shift, X, Y)
> 
> End Sub
> こういうことでしょうか??
> 
それぞれの引数、Button、Shift、X、Yを数値にすれば良いのです。

#958-1
RE#951:テキストファイルに出力する際…
こんにちは、ラーネッドさんほんとにありがとうございますm(_ _)m

> > ということですか?(変数は宣言されているわけだし…)
> > 
> 初期化とは、プログラムを組む上で都合の良い初期値を設定することです。
> Form_Loadの
>   question = 1
>     character = 1
> も、そういった意味で書いているわけですよね。
> 変数i試行に、その様な記述はありますか?

ようやく少し理解f^^;
i試行= 1 を加えたら動くに動いたのですが…
テキストファイルに0しか出力されないんですよね(汗
これはなぜでしょう??

> > 
> それぞれの引数、Button、Shift、X、Yを数値にすれば良いのです。
> 

Private Sub Timer1_Timer()

     Call Form_MouseDown(4, 6, 0, 0)
     
     Call Form_MouseUp(4, 6, 0, 0)
 
End Sub

これで動くに動いたのですが…(なんか不安なもので…

あとは判断ですね☆今日、冷静になってデバックをためしたら、
いくつか判断関数を通らない部分を見つけました。
これを修正していけばよいということですね?
(まぁ、具体策は何もありませんがf^^;)
#963-1
RE#958:テキストファイルに出力する際…
一つお詫びがあります。
#948で
>判断関数が呼ばれない時があるはずです。
>   If character < 9 Then 
>この行にブレイクポイントを設定して1行ずつステップ実行(F8)してみましょう。
でこんな事書いてましたが、全く的はずれでした。失礼致しました。

> i試行= 1 を加えたら動くに動いたのですが…
> テキストファイルに0しか出力されないんですよね(汗
> これはなぜでしょう??
> 
もし下記のタイマーイベントを使用しているとしたらそうなってしまいますね。

>      Call Form_MouseDown(4, 6, 0, 0)
> これで動くに動いたのですが…(なんか不安なもので…
> 
これは、"CtrlとAltを押しながら、マウスの中央ボタンをクリック"
と等価なんです。
右クリック、左クリックどちらでもありませんので、i得点=0となってしまいます。
普通に、左クリックや右クリックをした時の引数の値は?
 #以前の投稿で値の確認方法は提示しています。
 #ヘルプにも書いてありますけどね。

> あとは判断ですね☆今日、冷静になってデバックをためしたら、
> いくつか判断関数を通らない部分を見つけました。
> これを修正していけばよいということですね?
>
その通りです。

> (まぁ、具体策は何もありませんがf^^;)
>
そんな時は、一旦プログラム全体を見直し、余分な記述の削除や、
重複している処理の整理などをしてみると光が射すかも。
#964-1
RE#963:テキストファイルに出力する際…
bataです。ラーネッドさん、返信ありがとうございますm(_ _)m

> 一つお詫びがあります。
> #948で
> >判断関数が呼ばれない時があるはずです。
> >   If character < 9 Then 
> >この行にブレイクポイントを設定して1行ずつステップ実行(F8)してみましょう。
> でこんな事書いてましたが、全く的はずれでした。失礼致しました。

えと…その場合どこをブレイクポイントとして確認していけばよいのでしょう?
マウスのクリックしたときに設定したほうが良いのですか??

> 
> > i試行= 1 を加えたら動くに動いたのですが…
> > テキストファイルに0しか出力されないんですよね(汗
> > これはなぜでしょう??
> > 
> もし下記のタイマーイベントを使用しているとしたらそうなってしまいますね。
> 
> >      Call Form_MouseDown(4, 6, 0, 0)
> > これで動くに動いたのですが…(なんか不安なもので…
> > 
> これは、"CtrlとAltを押しながら、マウスの中央ボタンをクリック"
> と等価なんです。
> 右クリック、左クリックどちらでもありませんので、i得点=0となってしまいます。
> 普通に、左クリックや右クリックをした時の引数の値は?
>  #以前の投稿で値の確認方法は提示しています。
>  #ヘルプにも書いてありますけどね。

あっ、なるほど♪
えっと左クリックが1で右クリックが2ですね。
ということはこれを書き込む…と??

> 
> > あとは判断ですね☆今日、冷静になってデバックをためしたら、
> > いくつか判断関数を通らない部分を見つけました。
> > これを修正していけばよいということですね?
> >
> その通りです。
> 
> > (まぁ、具体策は何もありませんがf^^;)
> >
> そんな時は、一旦プログラム全体を見直し、余分な記述の削除や、
> 重複している処理の整理などをしてみると光が射すかも。

なるほど!ためしてみます☆
#965-1
RE#964:テキストファイルに出力する際…
> えと…その場合どこをブレイクポイントとして確認していけばよいのでしょう?
> マウスのクリックしたときに設定したほうが良いのですか??
> 
If i試行 <> 0 Then 辺りが適切かと。

> えっと左クリックが1で右クリックが2ですね。
> ということはこれを書き込む…と??
> 
全て左クリックならば、
      Call Form_MouseDown(vbLeftButton, 0, 0, 0)
      Call Form_MouseUp(vbLeftButton, 0, 0, 0)
の様にすれば良いです。

> > > あとは判断ですね☆今日、冷静になってデバックをためしたら、
> > > いくつか判断関数を通らない部分を見つけました。
> > > これを修正していけばよいということですね?
> > >
> > その通りです。
> > 
> > > (まぁ、具体策は何もありませんがf^^;)
> > >
> > そんな時は、一旦プログラム全体を見直し、余分な記述の削除や、
> > 重複している処理の整理などをしてみると光が射すかも。
> 
> なるほど!ためしてみます☆


あと、以前から言おうと思っていたのですが、
各モジュールの先頭に Option Explicit を書いて
変数宣言を強制した方が、良いですね。
#983-1
RE#965:テキストファイルに出力する際…
こんにちはbataです。(今日は見るのが遅かった…)
何はともあれ、ラーネッドさん返信ありがとうございます。

> > えと…その場合どこをブレイクポイントとして確認していけばよいのでしょう?
> > マウスのクリックしたときに設定したほうが良いのですか??
> > 
> If i試行 <> 0 Then 辺りが適切かと。

はい、やってみます。
> 
> > えっと左クリックが1で右クリックが2ですね。
> > ということはこれを書き込む…と??
> > 
> 全て左クリックならば、
>       Call Form_MouseDown(vbLeftButton, 0, 0, 0)
>       Call Form_MouseUp(vbLeftButton, 0, 0, 0)
> の様にすれば良いです。
> 
???また頭の中で混乱が…(笑
左クリックの引数が1だから…0または1で表示したい時はこれでよいってことですか??


> > > そんな時は、一旦プログラム全体を見直し、余分な記述の削除や、
> > > 重複している処理の整理などをしてみると光が射すかも。
> > 
> > なるほど!ためしてみます☆

えっと、試したものの未だ分からず(-.-;)
どこなのでしょう…
もう一度ゆっくり点検して見ます。

> 
> 
> あと、以前から言おうと思っていたのですが、
> 各モジュールの先頭に Option Explicit を書いて
> 変数宣言を強制した方が、良いですね。
F1でどんな機能かみてみました。さっそくやって見ます。

いぜん、テキストファイルに出力されるのが0になってしまうと話しましたが、
question番号(i); character番号(i); i得点(i); l反応時間(i)
全てが0としかでないようで…
これは初期値のやり方が間違えているのでしょうか?


#985-1
RE#983:テキストファイルに出力する際…
> > 全て左クリックならば、
> >       Call Form_MouseDown(vbLeftButton, 0, 0, 0)
> >       Call Form_MouseUp(vbLeftButton, 0, 0, 0)
> > の様にすれば良いです。
> > 
> ???また頭の中で混乱が…(笑
> 左クリックの引数が1だから…0または1で表示したい時はこれでよいってことですか??
> 
ここでの引数Buttonの値が、判断関数でも使用されているのですよね?
プログラムの流れ及び引数の使われ方をじっくり見て下さい。
 
> > > > そんな時は、一旦プログラム全体を見直し、余分な記述の削除や、
> > > > 重複している処理の整理などをしてみると光が射すかも。
> > > 
> > > なるほど!ためしてみます☆
> 
> えっと、試したものの未だ分からず(-.-;)
> どこなのでしょう…
特に何処がという意味の発言ではありませんが、
Remなどでコメントアウトしている行などがあると見づらいですよね。

> いぜん、テキストファイルに出力されるのが0になってしまうと話しましたが、
> question番号(i); character番号(i); i得点(i); l反応時間(i)
> 全てが0としかでないようで…
> これは初期値のやり方が間違えているのでしょうか?
> 
現状のソースを見ないと何とも・・・。 
#997-1
RE#985:テキストファイルに出力する際…
bataです。ラーネッドさん、またまた…返信ありがとうございます。

> > > 全て左クリックならば、
> > >       Call Form_MouseDown(vbLeftButton, 0, 0, 0)
> > >       Call Form_MouseUp(vbLeftButton, 0, 0, 0)
> > > の様にすれば良いです。
 
> ここでの引数Buttonの値が、判断関数でも使用されているのですよね?
> プログラムの流れ及び引数の使われ方をじっくり見て下さい。

これは、全て引数を1として呼びたいときは上記のようにすればいいってことですか?
vbRightButtonのときはどうなるのでしょう?
まず、下記の問題が解決しないとなんともいえないんですけどね…
> 
> > いぜん、テキストファイルに出力されるのが0になってしまうと話しましたが、
> > question番号(i); character番号(i); i得点(i); l反応時間(i)
> > 全てが0としかでないようで…
> > これは初期値のやり方が間違えているのでしょうか?
> > 
> 現状のソースを見ないと何とも・・・。 

えっと、すいませんまたソースを載せさせてもらいますm(_ _)m
call ステートメントはまだ未解決なので載せていません。

Private X(1 To 7) As String
Private Y(1 To 9) As String
Private Xの番号(1 To 7) As Integer
Private Yの番号(1 To 9) As Integer


'反応時間を測るための変数を宣言
Private lTimeスタート As Long
Private lTimeストップ As Long


Private Sub Form_Load()
question = 1
character = 1
      X(1) = "質問1:"
      X(2) = "質問2:"
      X(3) = "質問3:"
      X(4) = "質問4:"
      X(5) = "質問5:"
      X(6) = "質問6:"
      X(7) = "質問7:"

    Y(1) = "アンパンマン"
    Y(2) = "ドラえもん"
    Y(3) = "となりのトトロ"
    Y(4) = "ミッキーマウス"
    Y(5) = "アバレンジャー"
    Y(6) = "セーラームーン"
    Y(7) = "魔法使い"
    Y(8) = "サンタクロース"
    Y(9) = "幽霊"
    
  For i = 1 To 7
    Xの番号(i) = i
  Next i
  For i = 1 To 9
    Yの番号(i) = i
  Next i
    
Me.Show
質問のシャッフル
Show_no (question)
刺激シャッフル
Show_Character (character)

End Sub

Private Sub Show_Character(i As Integer)
Text1(0).Text = Y(i)
End Sub

Private Sub Show_no(i As Integer)
Label1.Caption = X(i)
End Sub



Sub 質問のシャッフル()
Dim i As Integer, a As Integer, p As String
Dim q As Integer
     
    Randomize
    
    For i = 1 To 7

    a = Int(Rnd * 7) + 1

      p = X(a)

      X(a) = X(i)

      X(i) = p
      
        q = Xの番号(a)
        Xの番号(a) = Xの番号(i)
        Xの番号(i) = q

    Next i
   
    End Sub
 
'刺激シャッフル
Sub 刺激シャッフル()  '9つの刺激をシャッフルする
   
    Dim i As Integer, b As Integer, p As String
    Dim q As Integer

    Randomize
    
    For i = 1 To 9
      b = Int(Rnd * 9) + 1
      
      
      p = Y(b)

      Y(b) = Y(i)

      Y(i) = p
      
        q = Yの番号(b)
        Yの番号(b) = Yの番号(i)
        Yの番号(i) = q

    Next i
    
    
    End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

'反応時間を測定する
    If i試行 <> 0 Then
    
        l時計ストップ = GetTickCount
        
        l反応時間(i試行) = l時計ストップ - l時計スタート
    
        i得点(i試行) = 判断(Button)
    
    Rem i得点 (i試行)
        
    End If

    If i試行数 >= n総試行数 Then
    
        統計処理
    
    End If
    
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Debug.Print i; Button; Shift; X; Y


    i試行 = 1
    question番号(i試行) = Xの番号(question)
    character番号(i試行) = Yの番号(character)


    If character < 9 Then
            character = character + 1

    Else
    
        If question < 7 Then
            刺激シャッフル
            question = question + 1

            character = 1
            Show_no question
        Else
'実験を終わる
            Timer1.Enabled = False
            Load 結果フォーム
            
        End If
    End If
    Show_Character character
    l時計スタート = GetTickCount
    i試行 = i試行 + 1

    

    
End Sub

Private Function 判断(Button As Integer) As Integer

    Select Case Button
    Case vbKeyRButton
    
            i得点(i試行) = 1
    
    Case vbKeyLButton
            
            i得点(i試行) = 0
    
    End Select
    
    判断 = i得点(i試行)
    
End Function
#998-1
RE#997:テキストファイルに出力する際…
> Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
>     Debug.Print i; Button; Shift; X; Y
> 
> 
>     i試行 = 1
>     question番号(i試行) = Xの番号(question)
>     character番号(i試行) = Yの番号(character)
> 

ここを通るたび、i試行 が 1 になりますが、正しいですか?
#999-1
RE#997:テキストファイルに出力する際…
一般的に下記のようなプログラムはiCounterを使って数をカウントしているので
iCounterをカウンタ変数と呼びます。

 例1
    Dim iCounter As Integer
    Dim iArray(100) As Integer
    
    iCounter = 1
    Do While iCounter <= 100
        iArray(iCounter) = iCounter
        iCounter = iCounter + 1
    Loop

iCounterの値が1,2,3…と変化することにより、
iArray(1),iArray(2),iArray(3)…にも順番に値が代入されていきます。
しかし、
    
 例2
    Do While iCounter <= 100
        iCounter = 1
        iArray(iCounter) = iCounter
        iCounter = iCounter + 1
    Loop

例2のようにに書いてしまうと、毎回iArray(1)=1となってしまい、
iArray(2)以降には何も代入されなくなってしまいます。
しかも無限ループに・・・。

匿名998さんも指摘しているように、カウンタ変数を初期化する位置に注意しないと、
全く意図しない結果となってしまうのです。
#1002-1
RE#999:テキストファイルに出力する際…
bataです。ラーネッドさん、匿名998さん返信ありがとうございます。


> 
> 匿名998さんも指摘しているように、カウンタ変数を初期化する位置に注意しないと、
> 全く意図しない結果となってしまうのです。

えっと…場所を

question = 1
character = 1
    i試行 = 1
    
に変えたら少し形になってきましたが…
まだ、判断がきちんとできず(そりゃ解決してないもんで(汗)
しかも、時間の判定がおかしく

 1  3  8  1  594234 
 2  3  9  0  0 
 3  3  6  1  594655 
 4  3  3  0  0 

のように一回ずつしか表示されず、しかも値がすごいんですよね。
これも、なにか原因があるのでしょうか?
#1003-0
RE#997:テキストファイルに出力する際…
宣言は lTimeスタート, lTimeストップ 、
下では l時計ストップ, l時計スタート となっていますが問題ありませんか?

モジュールの先頭に Option Explicit と記述しましょう。

分からなくなるとすぐに聞く癖がついている気がしますね。
デバッグの方法も教わっているのだからもう少し自分で考えましょう。
#1004-1
RE#1003:テキストファイルに出力する際…
bataです匿名1003さん、返信&御指摘ありがとうございます。

> 宣言は lTimeスタート, lTimeストップ 、
> 下では l時計ストップ, l時計スタート となっていますが問題ありませんか?

はい、大問題でした(汗

> 
> モジュールの先頭に Option Explicit と記述しましょう。
> 
…これは標準モジュールに記述すればよいのですか?

> 分からなくなるとすぐに聞く癖がついている気がしますね。
> デバッグの方法も教わっているのだからもう少し自分で考えましょう。

はい、ご指摘通りだと思いますm(_ _)m
あとすこしで何とかなりそうなので、がんばってみます
#1005-1
RE#1004:テキストファイルに出力する際…
> > 
> > モジュールの先頭に Option Explicit と記述しましょう。
> > 
> …これは標準モジュールに記述すればよいのですか?
> 
こういう質問も多いですね。やってみてから質問をしましょう。
宣言していない変数を使用して、コンパイル時にエラーが出なければ、
Option Explicit が効いていません。

標準モジュール、フォームモジュール、等、すべてのモジュールの先頭に書きます。
#1006-1
RE#1005:テキストファイルに出力する際…
bataです。匿名1005さん、返信ありがとうございます。

> > > 
> > > モジュールの先頭に Option Explicit と記述しましょう。
> > > 
> > …これは標準モジュールに記述すればよいのですか?
> > 
> こういう質問も多いですね。やってみてから質問をしましょう。

痛いところをつかれました(汗 
実はやってみると、いたるところにエラーがでてしまい…
やらないほうがいいのか不安に
おもったんですよね。

> 宣言していない変数を使用して、コンパイル時にエラーが出なければ、
> Option Explicit が効いていません。
> 

???エラーがでるということは?何か変数の使い方が間違っているということですか?
#1007-1
RE#1006:テキストファイルに出力する際…
> ???エラーがでるということは?何か変数の使い方が間違っているということですか?

それがエラーメッセージに書かれているんですよ。良く確認しましょう。
分からなければエラーメッセージの表示時に「ヘルプ」を押せば説明も出ます。

#1008-1
RE#1007:テキストファイルに出力する際…
bataです。匿名1007さん、返信ありがとうございます。

> > ???エラーがでるということは?何か変数の使い方が間違っているということですか?
> 
> それがエラーメッセージに書かれているんですよ。良く確認しましょう。
> 分からなければエラーメッセージの表示時に「ヘルプ」を押せば説明も出ます。
> 
はい、エラーを確認しながら修正しました。
とりあえず、正常に動いてくれそうです。
また、なにか問題が発生して、わからなくなったときは教えてくださいm(_ _)m

ラーネッドさんを始めとして教えてくれたみなさん(匿名の人がいるので)、
本当にありがとうございました。
このページと関連する記事:
#43175-0右クリックについて2001-05-18(金) 17:32
#3585-0マウスが押されている時間を計るには?1999-11-03(水) 15:08
#39906-0テキストボックスのポップアップメニューの無くし方。2001-03-06(火) 22:48
#542-3教えてくださいm(__)m2003-12-10(水) 14:49
#8133-0マウスイベントの動きが変なんです・・。1999-10-25(月) 11:38
#36906-0コンボボックスのポップアップを非表示にしたい2001-01-15(月) 12:29
#28566-0自機移動2002-05-08(水) 23:55
#8176-0オートリピートについて1999-10-25(月) 21:06
#17230-0実行時間を測る2000-12-20(水) 11:21
#21714-0コマンドボタンを押しつづけた時の処理2001-07-05(木) 18:23
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)