tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルコンボボックスについて
記事No11398
投稿日: 2008/02/12(Tue) 15:42
投稿者だめおやじ
 フォームに一個のコンボボックスをおいて、複数回使用したいと考えております、
プログラムを起動してコンボボックスを呼び出すと、クリックするまでイベントは起
きないのですが、2回目にコンボボックスを呼び出すとクリック前に次のプログラムへ進んでしまいます。
 素人考えですが同じコンボボックスを使用すると前回クリックしたことが記録
されているのでは?。この、クリックされた記録を消去すると使用できるのでは
ないかと思っています。
 コンボボックスを複数回使用できるのでしょうか。ご指導お願いします。

[ツリー表示へ]
タイトルRe: コンボボックスについて
記事No11399
投稿日: 2008/02/12(Tue) 16:24
投稿者
> クリックするまでイベント?
どんなイベントですか?
> 2回目にコンボボックスを呼び出すとクリック前に次のプログラムへ進んでしまいます。
次のプログラムってなんでしょう?

もう少し詳しく教えてください。

[ツリー表示へ]
タイトルRe^2: コンボボックスについて
記事No11400
投稿日: 2008/02/12(Tue) 18:10
投稿者だめおやじ
> もう少し詳しく教えてください。
< 早速みていただきありがとうございます。
 コードはおおむね以下のとおりです。

Private Sub ken() ’はじまり
'変数にデータ取得
  call kennab'1回目
end sub

Private Sub syo()
'変数にデータ取得
call kennab'2回目
end sub

Private Sub kennab() '_Click()
'list にtext 貼付
Combo17.Visible = True'コンボボックスの表示
  Combo17.AddItem kenna(3)




End Sub

Private Sub combo17_Click()
'1回目はここでコンボボックスから選択できる。
'2回目ははここでコンボボックスから選択できない。
 fkenna = Combo17

If hata = "県" Then
    skenna = fkenna
    fkenna = ""
    MsgBox skenna & "県です。"
    Call syo ’1回目syoプログラム実行
Else
End If

If hata = "署" Then
    syonna = fkenna
    fkenna = ""
    MsgBox syona & "署です。"'2回目はコンボボックスで選択できずにここまで進みます。
    Call zimunaa
Else
End If
End Sub

[ツリー表示へ]
タイトルたすけてください
記事No11404
投稿日: 2008/02/12(Tue) 20:52
投稿者だめおやじ
>たすけーーーーてーーーーー
 この問題が解決しないと、選択肢が多く何百ものコンボボックスを作り、クリック命令を作成することとなります。

[ツリー表示へ]
タイトルRe: たすけてください
記事No11408
投稿日: 2008/02/13(Wed) 07:36
投稿者花ちゃん
助けて上げたいけど、何をしたいのか? 何をやろうとしているのか? 全然読めません

前回の質問から推測すると、コードは殆ど作り直す必要があるかと思うのですが、

一度、やりたい事を簡単に(1個だけの)動作をするコードを書いて、コードのすべてを
投稿して見て下さい。
(Form1 に表示されているコードを Option Explicit の部分〜)

コードには、各行にやりたい事をコメントで書いておいて下さい。
(省略や抜粋したコードでは解らないので)


>'2回目ははここでコンボボックスから選択できない。
> fkenna = Combo17
上記は、何をしようとしているのか? 単なる間違いか判断できない。
(多分、間違いとは思うが)

投稿されるコードは、実際に動かした物を、コピー&ペーストして下さい。

[ツリー表示へ]
タイトルRe: たすけてください
記事No11419
投稿日: 2008/02/13(Wed) 11:49
投稿者
コードを貼り付けてもらったらお役に立てるかもしれませんが
現状ではちょっと何がしたいのかわかりません。
 

[ツリー表示へ]
タイトル恥ずかしい
記事No11425
投稿日: 2008/02/13(Wed) 21:02
投稿者だめおやじ
> コードを送信します。VB始めて3ヶ月笑わないでください。現在の実力です。
> やりたいことは、一個のコンボボックスを繰り返し使用したいだけです。
> それぞれの階層に沢山のフォルダーが存在するためにdirを取得してそれを選択して、
  次の階層のdirを取得して最後にはファイル名を取得したいと考えています。
>これが全てのコード」です。
Option Explicit
Dim MyFile, MyPath, MyName
Dim MyFile1 As String
Dim MyFile2 As String
Dim MyFile3 As String
Dim MyFile4 As String
Dim MyFile5 As String
Dim MyFile6 As String
Dim MyFile7 As String
Dim MyFile8 As String
Dim MyFile9 As String
Dim kenna(20)
Dim fkenna As String
Dim hata As String
Dim skenna As String
Dim i
Dim kihon
Dim sss(300) As String
Private Sub Command1_Click()
  はじめ
  MyFile1 = "(""R:\ロータス\ロータス\基礎\データ\" '固定的なパス
  MyFile5 = "基本テキ1\" '固定的なパス
  MyFile7 = "*.sim"")" 'ファイル名を取り込むことが最終目的
  MyFile8 = "\"
End Sub
Private Sub はじめ()
  hata = "県" '頭初のフラッグたて。
  Call kennaa
End Sub

Private Sub ファイル() '最終目的ファイル名を取得したい

  MyFile10 = MyFile1 & MyFile2 & MyFile8 & MyFile3 & MyFile8 & MyFile4 & MyFile8 & MyFile5 & MyFile6 & MyFile8 & MyFile7
  MsgBox MyFile10

For i = 1 To 300
    If i = 1 Then
        MyFile = MyFile10
        sss(1) = MyFile
    Else
        MyFile = Dir
        sss(i) = MyFile
    If sss(i) = "" Then GoTo jp1
      
    End If
Next
jp1:
End Sub

Private Sub kennaa()

If hata = "県" Then
    MyPath = "R:\ロータス\ロータス\基礎\データ\"   ' 1回目のパスを設定します。
    MsgBox MyPath '動作確認済み
End If
If hata = "署" Then
    MyPath = "R:\ロータス\ロータス\基礎\データ\" & MyFile2 & "\" ' 2回目のパスを設定します。
    MsgBox MyPath 'msgboxでデレクトリーを取得していることは確認済み
End If
If hata = "事" Then '以下作動しないため動作未確認です
    MyPath = "R:\ロータス\ロータス\基礎\データ\" & MyFile2 & "\" & MyFile3 & "\" & MyFile4 & "\" ' 3回目のパスを設定します。
    MsgBox MyPath
End If
If hata = "基本" Then
    MyPath = "R:\ロータス\ロータス\基礎\データ\" & MyFile2 & "\" & MyFile3 & "\" & MyFile4 & "\" & "基本テキ1" & "\" & MyFile6 & "\" ' 4回目のパスを設定します。
    MsgBox MyPath
End If

Combo17.Clear 'コンボボックスのリスト消去

For i = 1 To 20
    kenna(i) = Empty '変数の値消去
Next

For i = 1 To 20

If i = 1 Then
    MyName = Dir(MyPath, vbDirectory)   ' 最初のフォルダ名を返します。
    kenna(i) = MyName
Else
    MyName = Dir
    kenna(i) = MyName                   'フォルダー名の取得
    MsgBox kenna(i)                     '動作確認済み
  If kenna(i) = "" Then GoTo jp1        'フォルダーをなくなったらジャンプ
  If kenna(i) = "森名" Then             '既定不要フォルダーのスキップ
     i = i - 1
  Else
  End If                  'なぜかこのプログラムではiが3からフォルダー名を取得するため
End If                    '自分では解決できないためやむを得ずのぬけみち
Next
skenna = i - 3  'フォルダー数

jp1:

Call kennab
If hata = "県" Then
    Combo17.Text = "所在県名"
    fkenna = ""
End If
If hata = "署" Then
    Combo17.Text = "署名"
    fkenna = ""
End If
If hata = "事" Then
    Combo17.Text = "事名"
    fkenna = ""
End If
If hata = "基本" Then
    Combo17.Text = "基本名"
    fkenna = ""
End If
If hata = "基本1" Then
    Combo17.Text = "基本1名"
    fkenna = ""
End If

End Sub

Private Sub kennab()

Combo17.Visible = True             'コンボボックスの表示

Combo17.FontName = "MS ゴシック"
Combo17.FontSize = 12
Combo17.AddItem kenna(3)           'kennaaで取得したフォルダー名をコンボのリストに設定
Combo17.AddItem kenna(4)
Combo17.AddItem kenna(5)
Combo17.AddItem kenna(6)
Combo17.AddItem kenna(7)
Combo17.AddItem kenna(8)
Combo17.AddItem kenna(9)
Combo17.AddItem kenna(10)
Combo17.AddItem kenna(11)

End Sub

Private Sub Combo17_Click()

    fkenna = Combo17      'コンボボックスドロップダウンよりクリックにより「fkenna」に値取得。
                          '<<<<####以下の部分が解決できない#####>>>>
                          '1回目ではこのコード<fkenna = Combo17> 部分で<fkenna>取得できるが、2回目以降はこの
                          'コードではコンボボックスよりドロップダウンによる値取得が出来ないで次の
If hata = "県" Then       'MsgBox MyFile3 & "署です。まで、実行されてしまいます。"
    MyFile2 = fkenna      'この「msgbox」がなければプログラムの最後まで実行されてしまいます。
    fkenna = ""
    MsgBox MyFile2 & "県です。"
    hata = "署"
    MsgBox hata
    MsgBox MyFile2 & "#$"
    Call kennaa           'Private Sub kennaaの2回目の処理進む
Else
End If

If hata = "署" Then
    MyFile3 = fkenna
    fkenna = ""
    MsgBox MyFile3 & "署です。"
    hata = "事"
    Call kennaa          'Private Sub kennaaの3回目の処理進む
Else
End If

If hata = "事" Then
    MyFile4 = fkenna
    fkenna = ""
    MsgBox MyFile4 & "事務所です。"
    hata = "基本"
    Call kennaa          'Private Sub kennaa4回目の処理進む
Else
End If
If hata = "基本" Then
    MyFile6 = fkenna
    fkenna = ""
    MsgBox MyFile6 & "です。"
    hata = "基本1"
    Call kennaa          'Private Sub kennaa5回目の処理進む
Else
End If
End Sub

Private Sub Form_Load()
Combo17.Visible = False
End Sub

[ツリー表示へ]
タイトルRe: 恥ずかしい
記事No11426
投稿日: 2008/02/14(Thu) 08:56
投稿者K・今川
プログラムをよく見てください。

>If hata = "県" Then
>    MyFile2 = fkenna
>    fkenna = ""
>    MsgBox MyFile2 & "県です。"
     hata = "署"                    '<<<<hataが"署"に書き換えられています。
>    MsgBox hata
>    MsgBox MyFile2 & "#$"
>    Call kennaa           'Private Sub kennaaの2回目の処理進む
>Else
>End If
>
If hata = "署" Then                '<<<<hataが"署"に書き換えられているので実行します。
>    MyFile3 = fkenna
>    fkenna = ""
>    MsgBox MyFile3 & "署です。"
     hata = "事"                    '<<<<hataが"事"に書き換えられています。
>    Call kennaa          'Private Sub kennaaの3回目の処理進む
>Else
>End If
>
If hata = "事" Then                '<<<<hataが"事"に書き換えられているので実行します。
>    MyFile4 = fkenna
>    fkenna = ""
>    MsgBox MyFile4 & "事務所です。"
     hata = "基本"                  '<<<<hataが"基本"に書き換えられています。
>    Call kennaa          'Private Sub kennaa4回目の処理進む
>Else
>End If
If hata = "基本" Then               '<<<<hataが"基本"に書き換えられているので実行します。
>    MyFile6 = fkenna
>    fkenna = ""
>    MsgBox MyFile6 & "です。"
>    hata = "基本1"
>    Call kennaa          'Private Sub kennaa5回目の処理進む
>Else
>End If

つまり、前のIf文でhataの内容が変わっているためにすべてのIf文内部が実行されます。


hataの内容を"基本"、"事"、"署"、"県"の順に調べるか
下のようにIf文をElseIfで繋げば正常に動くはずです。


If hata = "県" Then
    MyFile2 = fkenna
    fkenna = ""
    MsgBox MyFile2 & "県です。"
    hata = "署"
    MsgBox hata
    MsgBox MyFile2 & "#$"
    Call kennaa           'Private Sub kennaaの2回目の処理進む

ElseIf hata = "署" Then
    MyFile3 = fkenna
    fkenna = ""
    MsgBox MyFile3 & "署です。"
    hata = "事"
    Call kennaa          'Private Sub kennaaの3回目の処理進む

ElseIf hata = "事" Then
    MyFile4 = fkenna
    fkenna = ""
    MsgBox MyFile4 & "事務所です。"
    hata = "基本"
    Call kennaa          'Private Sub kennaa4回目の処理進む

ElseIf hata = "基本" Then
    MyFile6 = fkenna
    fkenna = ""
    MsgBox MyFile6 & "です。"
    hata = "基本1"
    Call kennaa          'Private Sub kennaa5回目の処理進む

End If

[ツリー表示へ]
タイトルRe: コンボボックスについて
記事No11423
投稿日: 2008/02/13(Wed) 14:21
投稿者ぶぶ
>  フォームに一個のコンボボックスをおいて、複数回使用したいと考えております、
> プログラムを起動してコンボボックスを呼び出すと、クリックするまでイベントは起
> きないのですが、2回目にコンボボックスを呼び出すとクリック前に次のプログラムへ進んでしまいます。
>  素人考えですが同じコンボボックスを使用すると前回クリックしたことが記録
> されているのでは?。この、クリックされた記録を消去すると使用できるのでは
> ないかと思っています。

何がしたいのかいまいちわかりませんが、コンボボックスの内容はcombo.clearで選択肢が消せます。
また、コンボボックスのメソッド等は、一通り目を通してみたら、何かヒントが
隠されているかもしれません。
Listindex等

[ツリー表示へ]