Access VBA質問箱 IV

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

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


543 / 2272 ツリー ←次へ | 前へ→

【11202】afterupdateとIIfの組み合わせ方について HQ 09/9/30(水) 23:25 質問[未読]
【11204】Re:afterupdateとIIfの組み合わせ方につい... 小僧 09/10/1(木) 10:09 回答[未読]
【11206】Re:afterupdateとIIfの組み合わせ方につい... HQ 09/10/1(木) 23:10 お礼[未読]

【11202】afterupdateとIIfの組み合わせ方について
質問  HQ  - 09/9/30(水) 23:25 -

引用なし
パスワード
   VBA初心者の大学職員です。

T_時間割というテーブルにセメスター、コマ数算入学期区分というフィールドがあります。コマ数算入学期区分は1と2で、1は1s,3s,5s,7sで2は2s,4s,6s,8sです(1sは1セメスター)。

このテーブルをもとにフォームを作成し、セメスターが変更されたらコマ数算入学期区分も自動で変更できるよう設定しようとしています。

セメスターのプロパティの更新後処理のコードビルダで
 Private Sub セメスター_AfterUpdate()
 Me.コマ数算入学期区分 = IIf([セメスター],1s,1,IIf([セメスター],2s,2))
 End Sub
と入力し1sのデータを2sに変更し移動すると、構文が正しくありませんと表示されます。
この場合、IIfではないということでしょうか?

よろしくお願いいたします。

【11204】Re:afterupdateとIIfの組み合わせ方につ...
回答  小僧  - 09/10/1(木) 10:09 -

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

> VBA初心者
> IIf([セメスター],1s,1,IIf([セメスター],2s,2))

まずは基本的な VBA の使い方として
文字列と変数の違いについて学習されてみて下さい。


> 1sのデータを2sに変更し移動すると、
> 構文が正しくありませんと表示されます。
> この場合、IIfではないということでしょうか?

IIF関数を使って実現は可能ですね。
ただし使い方が間違っておられるので
ヘルプをご覧になられた方が良いと思われます。

IIF関数の第1引数は評価(True か False を返す式)が必要ですし、
引数が4つになる事はありません。


IIF関数は基本的には True の場合、Falseの場合 で値を返す関数なので
今回の様に 1s だったら、2s だったら、 3s だったら…
という様な判定をするには長い式になってしまいます。

Select Case文や Switch関数が良さそうですね。

また蛇足になりますが
ユーザが予期しない値を入れた場合の対応も必要になってきますね。

【11206】Re:afterupdateとIIfの組み合わせ方につ...
お礼  HQ  - 09/10/1(木) 23:10 -

引用なし
パスワード
   ▼小僧 さん:
こんばんは。
ご回答ありがとうございます。

>IIF関数を使って実現は可能ですね。
>ただし使い方が間違っておられるので
>ヘルプをご覧になられた方が良いと思われます。
>
IIFの使い方を1から勉強してみます。

>IIF関数は基本的には True の場合、Falseの場合 で値を返す関数なので
>今回の様に 1s だったら、2s だったら、 3s だったら…
>という様な判定をするには長い式になってしまいます。
>
クエリで使用する関数とは違うわけですね。
ご指摘の通り、1s〜8sなので、結構長くなります。

>Select Case文や Switch関数が良さそうですね。
>
こちらも併せて学習してみます。

>ユーザが予期しない値を入れた場合の対応も必要になってきますね。
>
思いつかない点でした。
ご助言ありがとうございます。

時間がかかるとは思いますが、今後ともよろしくお願いいたします

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