- ベストアンサー
Access 2013環境でVBAを使用してFunctionの使い方が分からない
- Access 2013環境でVBAを使用してFunctionの使い方が分からず困っています。
- 二つのテキストボックスに入力された文字を組み合わせて文字列を生成するプロシージャを作成していますが、うまく行きません。
- 現在のコードはSelect Case文が長くなり、複数のボタンに同じコードが記述されているため、Accessの起動が遅くなっています。Functionを使用してコードを短縮し、モジュールから呼び出す方法を知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
戻り値かえしてないんじゃないかな その"関数名"に代入する形で、値を返します。 Function moji() '~処理~ moji = "結果" '←戻り値 End function 一応、Subでも引数に代入することで値を返すことはできますが、Functionなら式に組み込めます。違いはそのくらい。
その他の回答 (2)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
If Then - Else文、Select Case文は次のように論理式に置き換えることもできます。 Public Function GetKanaRow(ByVal S As String) As String Dim N As Integer N = (S Like "[ア-オ]*") * 1 N = N + (S Like "[カ-ゴ]*") * 2 N = N + (S Like "[サ-ゾ]*") * 3 N = N + (S Like "[タ-ド]*") * 4 N = N + (S Like "[ナ-ノ]*") * 5 N = N + (S Like "[ハ-ポ]*") * 6 N = N + (S Like "[マ-モ]*") * 7 N = N + (S Like "[ヤ-ヨ]*") * 8 N = N + (S Like "[ラ-ロ]*") * 9 N = N + (S Like "ワ*") * 10 GetKanaRow = Mid(Chr(0) & "アカサタナハマヤラワ", Abs(N) + 1, 1) End Function 【お願い】Like文の対応は確認されて下さい!
- NotFound404
- ベストアンサー率70% (288/408)
日本語で先頭の一文字目が拗音、促音、撥音は無いでしょうから hatena さんの http://hatenachips.blog34.fc2.com/blog-entry-262.html でオッケーかと思います。 ※旧仮名遣いの「ゐゑ」がちと心配。
補足
「ゐ、ゑ」は無いのですが、拗音、促音、撥音には対応する形を取っています。 例えば後藤さん→カ行_後藤、パトリック→ハ行_パトリックなど。 問題になっているところなんですが、戻り値の設定の仕方が分かりません。 いろいろな事例がネットに出ているのですが、どのように使っているのか 理解が追いつかないのです。
お礼
呼び出しを Function moji(ByRef katakana As Integer) As String 戻り値を moji = sento ボタンの動作を sento = moji(katakana) に変えたら動きました。 ありがとうございました。
補足
書き換えましたが上手くいきません。 以下、型が一致しません。 Function moji() Dim katakana As Integer Dim sento As String Select Case katakana Case 12450 To 12458 sento = "ア行" Case 12459 To 12468 sento = "カ行" Case Else End Select moji = sento End Function Private Sub コマンド1_Click() Dim kanji As String Dim katakana As String Dim sento As String Dim hensuu As String kanji = Me.txt1 katakana = AscW(Left(Me.txt2, 1)) → sento = moji(katakana) hensuu = sento & "_" & kanji MsgBox hensuu End Sub → sento = moji(katakana) sento = moji()にすると、因数を要求されます。 他に試したところ、ボタンクリック後、MSGボックスが反応しなかったり Functionの計算部分がスキップ?されています。 どうしたらよいでしょうか。