アクセスのVBAに初めて挑戦していますが、なかなかうまく動いてくれません。どうか、教えてください。
有給休暇の年次更新を作っているのですが、
フォームのテキストボックス[職位](=コンボボックス選択式です) の値が”社長”なら、有休取得はゼロ、という一文がうまくゆきません。
これ↓が、その記述です。
'職位が役員(社長)なら 取得 は ゼロ
If [Forms]![フォーム基本情報]![職位].Value = "社長" Then
[Forms]![フォーム基本情報]![有休取得] = 0
End If
エラーは出ないのですが、このIFに引っ掛かってくれないのです。
フォームも含めて、どこをチェックすればいいでしょうか?
No.5ベストアンサー
- 回答日時:
MsgBox [Forms]![フォーム基本情報]![職位].Value
If [Forms]![フォーム基本情報]![職位].Value = "社長" Then
[Forms]![フォーム基本情報]![有休取得] = 0
End If
新しいMDBを作り、その中で新しいフォームを作り
ボタン1つとテキストボックス2つを貼り付け、それぞれの名前を
上記のコードで使う名前にしました。
そしたら、ちゃんと動きました。
ということで、上記の文は問題ないと思われます。
該当のIF文の直前に、ブレイクポイントを設定されていて、
その値が社長や文字数が2であるのであれば、考えづらいですが
その前後のソースなどで、値の変更ってされていないですか?
もしくは、その前後のソースの提示をされるか。
<m(__)m>
loop_dog様 そして DexMachina様
このアホな私をお許しください。
原因がわかりました。
No.5で頂戴したアドバイスそのまんま、ここでせっかく代入した0に、
その下の文で、計算値を代入していました。
お手間取らせて、ほんとうに申し訳ございません。
わざわざ、シミュレートまでさせちゃって、ほんとにごめんなさい。
End If の前に、End Sub を書き加えましたところ、
すんなり抜けてくれました。
お二方のご親切なアドバイスに、改めて御礼申し上げます。
ほんとうにありがとうございました。
また、困ったときには宜しくお願いいたします。<m(__)m>
No.3
- 回答日時:
No.2です。
> はて?なにが間違っているのでしょうか?
考えられるのは、前後のSpace、でしょうか。
とりあえず、MsgBox関数部分を
MsgBox "職位= 【" & [Forms]![フォーム基本情報]![職位].Value & "】",,"確認"
とすれば、確認できるかと思います。
(「【社長】」なら原因不明(汗)ですが、「【 社長】」や「【社長 】」と表示されれば、
前後のSpaceが原因で等しいと判断されていない、と;
かなり見づらいですが(汗))
或いはLen関数を使って文字数を確認した方がスマートかもしれません。
(「MsgBox "字数= " & Len([Forms]![フォーム基本情報]![職位].Value)」として、
2よりも大きい数字が出れば、前後のどちらかに不要なSpaceがある、と)
重ねてのアドバイス、誠にありがとうございます。<m(__)m>
さっそく試してみました。
結果は、「2」でした。
ためしに「課長代理」で実行してみると「4」。
余計なスペースがある、ということではないような感じです。
フォームのコントロール側の設定などで、疑ってみるポイントはありますでしょうか?
No.2
- 回答日時:
> [職位](=コンボボックス選択式です)
とのことなので、もしかしたら『職位』コンボボックスには「社長」という
テキストではなく、それに割り当てたIDか何かが入っているのでは
ないかと思います。
自分で組んだコードがうまく動かなかった場合に、私がよくやるのは、
MsgBox "職位= " & [Forms]![フォーム基本情報]![職位].Value,,"確認"
If [Forms]![フォーム基本情報]![職位].Value = "社長" Then
[Forms]![フォーム基本情報]![有休取得] = 0
End If
というように、実際の値が何になっているかを、MsgBoxで表示させる、
という方法です。
(デバッグウィンドウは使い慣れていないもので・・・)
よければお試し下さい。
早速のアドバイス、ありがとうございます。
早速やってみました。
小さいウインドウがでて、職位=社長と表示されました。
社長という文字列が入っているのは確かなようです。
はて?なにが間違っているのでしょうか?
No.1
- 回答日時:
If [Forms]![フォーム基本情報]![職位].Value = "社長" Then
この行にブレイクポイントを設定します。(茶色い●)
実行し、その行で止まったら、イミディエイトウインドウに
キーボードで直に
? [Forms]![フォーム基本情報]![職位].Value
と入力し、エンターキーを押します。
そしたら、その下に、その値が出ると思います。
アドバイス、ありがとうございます。
この方法もやってみました。
イミディエイトウインドウの、
? [Forms]![フォーム基本情報]![職位].Value の下に
社長と表示されました。
やはり、社長という文字列が入っているのは確かなようです。
でも、どこか、おかしいんでしょうね。どこだろ?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
イオン110番の社内相談窓口に電...
-
仕事が遅いと言われてしまいま...
-
肩書きにつける「元」とか「前...
-
仕事の取引先の人にプライベー...
-
主人の上司(社長)に妻からの...
-
初出勤に社長に怒られる
-
会社に配達された、個人宛の郵...
-
祝い袋の書き方
-
建築会社で一人事務をされてる方!
-
社外宛の訃報の通知文について
-
HPにスタッフの顔って嫌がる...
-
記念写真の席順がわからない
-
名代と代理の意味合いの違い
-
社長の父親が亡くなった時
-
半年前に異動して半年後にまた...
-
ホームページに写真とフルネー...
-
所長さんをお願いしますor所...
-
普段おとなしい後輩が異常にキ...
-
パートを体調不良で休むことが...
-
社長の親族の葬儀に社員はどう...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パートを体調不良で休むことが...
-
イオン110番の社内相談窓口に電...
-
社長の親族の葬儀に社員はどう...
-
肩書きにつける「元」とか「前...
-
仕事の取引先の人にプライベー...
-
HPにスタッフの顔って嫌がる...
-
仕事が遅いと言われてしまいま...
-
前の職場の社長さんの御香典に...
-
社外宛の訃報の通知文について
-
会社に配達された、個人宛の郵...
-
アルバイト先の本社にクレーム...
-
取引先って何であんなに上から...
-
所長さんをお願いしますor所...
-
名代と代理の意味合いの違い
-
ホームページに写真とフルネー...
-
サービス業で土日毎週どちらか...
-
女将や若女将は敬称?
-
転職時の前職調査はどんな事を...
-
建築会社で一人事務をされてる方!
-
面接の合否連絡の期日を守らな...
おすすめ情報