Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルフォームの表示/非表示をVBAで
記事No16789
投稿日: 2011/06/10(Fri) 11:55
投稿者はな
OS:windows7
Access Version:2007

いつも勉強させてもらっています。
ありがとうございます。

最近,VBAに悩んでいます。
事前に類似問題を検索して試したのですが上手くいきませんので,ここで質問させてください。

フォームにおいて[テキスト1]に1を入れた場合,[テキスト2]は可視状態で入力可能,
[テキスト1]に2を入れた場合,[テキスト2]は不可視状態で入力不可能としたいです。

最初は条件書式で対応していましたが,
テキスト数が多くなりすぎて全体的に相当動きが悪くなってきましたのでVBAの導入を考えています。

ご指導お願いします。

タイトルRe: フォームの表示/非表示をVBAで
記事No16790
投稿日: 2011/06/10(Fri) 12:47
投稿者パーフェクトジオング
条件付書式で対応されているとすると帳票型フォームではないかと
推測します。

帳票型の場合はレコード移動時にフィールドの値を判断して
可視や使用可能の制御をされるのがよろしいかと思います。

タイトルRe^2: フォームの表示/非表示をVBAで
記事No16791
投稿日: 2011/06/10(Fri) 13:15
投稿者はな
返信ありがとうございます。

単票型でも帳票型でもありません。

Private Sub Form_Current()
   If テキスト2 = 2 Then
     テキスト1.Visible = False
   Else
     テキスト1.Visible = True
   End If
End Sub

こんな感じを考えていましたが,全然動きません。
まだまだVBAを理解していませんので恥ずかしいのですが,宜しくお願いします。

タイトルRe^3: フォームの表示/非表示をVBAで
記事No16792
投稿日: 2011/06/10(Fri) 13:20
投稿者Moko
> 単票型でも帳票型でもありません。

じゃあ、何なのよ?

タイトルRe^3: フォームの表示/非表示をVBAで
記事No16793
投稿日: 2011/06/10(Fri) 13:23
投稿者Hank
> > [テキスト1]に2を入れた場合,[テキスト2]は不可視状態で入力不可能としたいです。
> Private Sub Form_Current()
    If テキスト2 = 2 Then           '  [テキスト2]に2を入れた場合???
     テキスト1.Visible = False     ' テキスト1は不可視???
    Else
     テキスト1.Visible = True
    End If
> End Sub
> 
> こんな感じを考えていましたが,全然動きません。

テキスト1(?)の更新後処理イベントプロシージャにも
  Call Form_Current()
が必要なのでは?

タイトルRe^4: フォームの表示/非表示をVBAで
記事No16795
投稿日: 2011/06/10(Fri) 14:12
投稿者はな
Hank様


ありがとうございます。

お陰様で動作するようになりました。

更新後処理イベントプロシージャにも必要というのは大変勉強になりました。

上乗せの質問になり悪いのですが,最終的には複数これを繰り返したいのですが動きません(;_;)

Private Sub Form_Current()
If [テキスト1] = 99 Then
[テキスト2].Visible = False
Else
[テキスト2].Visible = True

End If

If [テキストA] = 99 Then
[テキストB].Visible = False
Else
[テキストB].Visible = True
End If

End Sub

教えてくださいm(_ _)mおねがいします。

タイトルRe^5: フォームの表示/非表示をVBAで
記事No16798
投稿日: 2011/06/10(Fri) 15:01
投稿者Hank
> 最終的には複数これを繰り返したい
ちょっと意味が分かりません。
何をしたいのか具体的に書いて下さい。

タイトルRe^6: フォームの表示/非表示をVBAで
記事No16799
投稿日: 2011/06/10(Fri) 15:17
投稿者はな
Hank様


ご返信ありがとうございます。

ご指摘どおり,説明不足ですみません。

帳票や単票ではなく独立したテキストが沢山あります。

はなの必要としていることとしては,その独立したテキスト全てに対して

[テキスト1]で入力した値を判断して[テキスト2]の表示/非表示を
[テキストA]で入力した値を判断して[テキストB]の表示/非表示を
[テキストあ]で入力した値を判断して[テキストい]の表示/非表示を



としたいと思っています。(フォームにて)

因みに,入力する値は1か2のみ−つまり,表示か非表示のみです。

ご教授のほどお願いしますm(_ _)m

タイトルRe^7: フォームの表示/非表示をVBAで
記事No16800
投稿日: 2011/06/10(Fri) 15:44
投稿者JUN
アクセスの使い方間違えてるよ
エクセルで作ったら?

タイトルRe^7: フォームの表示/非表示をVBAで
記事No16802
投稿日: 2011/06/10(Fri) 16:11
投稿者Hank
> 帳票や単票ではなく独立したテキストが沢山あります。
非連結フォームと言うことですね。
フォームビューの種類でいえば、単票と言うことになります。

> [テキスト1]で入力した値を判断して[テキスト2]の表示/非表示を
> [テキストA]で入力した値を判断して[テキストB]の表示/非表示を
> [テキストあ]で入力した値を判断して[テキストい]の表示/非表示を

入力するテキストボックス  コントロールするテキストボックス
テキスト1          テキスト1C
テキストA          テキストAC
テキストあ          テキストあC
 :             :
のようにしておき、入力するテキストボックスのTagプロパティには判定値を書き込んでおきます。

フォームモジュールに

Function Ctl_AfterUpdate()
 With Me.ActiveControl
   Me(.Name & "C").Visible = .Value <> .Tag
  End With
End Function
を組んでおき、

フォームのレコード移動時
Private Sub Form_Current()
  Dim ctl As Control

  For Each ctl In Me.Controls
      If ctl.ContolType = acTextBox And ctl.Tag <> "" Then
         Me(ctl.Name & "C").Visible = ctl.Value <> ctl.Tag
       End If
  Next ctl
End Sub

入力するテキストボックスを一括選択しておき、更新後処理イベントプロパティに
 = Ctl_AfteUpdate()

タイトルRe^8: フォームの表示/非表示をVBAで
記事No16803
投稿日: 2011/06/10(Fri) 16:22
投稿者Hank
     
> のようにしておき、入力するテキストボックスのTagプロパティには判定値を書き込んでおきます。
全てが同じ値なら必要ないですが、プロシージャの内容が変わります。

タイトルRe^6: フォームの表示/非表示をVBAで
記事No16801
投稿日: 2011/06/10(Fri) 16:06
投稿者はな
2度目の説明になりますが,ご容赦ください。

1.男性か女性か(1か2か)の質問
2.男性であれば1で終了
3.1で女性であれば月経の有無を質問
4.3で有であれば更年期の有無を質問

こんな具合に重ねていきたいのですが,
フォームでの入力ミスを防ぐために表示/非表示を取り入れたいです。

他の質問との兼ね合いもあり,単票や帳票ではありませんが。

再びよろしくお願いしますm(_ _)m

タイトルRe^3: フォームの表示/非表示をVBAで
記事No16794
投稿日: 2011/06/10(Fri) 13:48
投稿者hatena
> 単票型でも帳票型でもありません。

帳票フォームでも単票フォームでもない、
ということは、データシートビューですか。

だとしたら、VBAでは無理ですね。条件付き書式しかないです。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る