VBAコードの問題点は何ですか?

このQ&Aのポイント
  • VBAコードにおける問題点を教えてください。
  • VBAコードの正常な動作が期待できない問題が発生しています。
  • 関数(Function)の使用方法に関してアドバイスをいただきたいです。
回答を見る
  • ベストアンサー

Function

Sub test1() Debug.Print 全角("aaa") End Sub Public Function 全角(mystr) mystr = StrConv(mystr, vbWide) End Function このVBAコードはどこがおかしいですか? 私の理想としては Public Function 全角(mystr) のmystrの中に半角の「aaa」が入り mystr = StrConv(mystr, vbWide) で全角の「aaa」になり その結果が Sub test1()に戻った時に Debug.Printに吐き出される予定だったのですが 何も表示されません。 関数(Function)を使うべきではないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Public Function 全角(mystr) 全角 = StrConv(mystr, vbWide) End Function

gknlhrsf
質問者

お礼

回答頂きありがとうございました。

関連するQ&A

  • \はエクセルでは全角?

    半角文字の\はエクセル(VBA)では全角扱いなのでしょうか? 添付のマクロを実行すると結果は"全角だろう"になります。 \はStrConvでvbWideを指定しても全角になりません。 全角の¥はStrConv/vbNarrowで半角になります。 どういう理由でこうなっているのでしょうか? \以外にもこのような文字があるのでしょうか? ご存知の方、教えていただけないでしょうか。 Sub Macro1() ch1 = "\" ch2 = StrConv(ch1, vbWide) If ch1 = ch2 Then Debug.Print "全角だろう" Else Debug.Print "半角だろう" End If End Sub

  • 「ぺ」って何?

    エクセルVBAなのですが、半角にできない文字があったのにで調べてみたのですが よくわかりません。 Sub a() Debug.Print StrConv("ぺ", vbNarrow) End Sub をしても半角になりません。 でも Sub b() Debug.Print StrConv("ペ", vbNarrow) End Sub なら半角になります。 Sub a1() Debug.Print Asc("ぺ") End Sub Sub b2() Debug.Print Asc("ペ") End Sub のように文字コードを調べてみたのですが -32040 -31879 が返りました。 半角にできないほうの-32040 は、なんなのでしょうか? カタカナではないのですか?

  • ブレークポイントで止らない

    下記のソースでaaaをウォッチウィンドウで内容確認したいです。 aaa = "2"の行にブレークポイントを設定し、ステップイン[F8]しました。 ブレークポイントで止らず完了してしましました。 何故でしょうか。どなたか教えて下さい>< 環境はwindows xp sp2,access2000です。 Sub test()     dim aaa    aaa = "1" Debug.Print aaa aaa = "2" Debug.Print aaa aaa = "3"   Debug.Print aaa End Sub

  • VBA 複数の文字のコードを一気に返すには

    Sub test1() Dim myStr As String myStr = "abc" Debug.Print Asc("a") Debug.Print Asc(myStr) End Sub このコードは、どちらも97が返るのですが、 myStrは3文字です。 3文字全ての文字コードを返すには、 Sub test2() Dim myStr As String myStr = "abc" Debug.Print Asc(Mid(myStr, 1, 1)) & Asc(Mid(myStr, 2, 1)) & Asc(Mid(myStr, 3, 1)) End Sub のようにするしかないのでしょうか?

  • ファンクション内でファンクション名を取得するには

    Function aaa() debug.print function.name End Function 例のように表示する組み込み関数やAPIはありますでしょうか。

  • InStr関数を使う際は

    エクセルvbaなのですが、InStr関数を使う際は、どの比較モードを使えばいいのでしょうか? Sub あ() Dim myStr As String myStr = "あいうえお" Debug.Print InStr(1, myStr, "い", vbBinaryCompare) Debug.Print InStr(1, myStr, "い", vbTextCompare) Debug.Print InStr(1, myStr, "い", vbUseCompareOption) 'エラーになる Debug.Print InStr(1, myStr, "い", vbDatabaseCompare) 'エラーになる End Sub vbBinaryCompareとvbTextCompareならエラーになりませんが この二つの違いが判りません。

  • vba カタカナのみ全角にするには?

    ひらがな・英字・数字・記号が組み合わさったランダムな文字を カタカナのみ全角にしたいです。 Sub test() Dim moji As String moji = "あああ123AAAアアア<>()" MsgBox StrConv(moji, vbWide) End Sub これだと全て全角になってしまいます。 moji に格納される文字列は規則はなくランダムです。 この状態でカタカナのみ全角にする方法はありますか?

  • Functionとsub どちらを使った方がいいで

    Functionとsub どちらを使った方がいいですか? VBA初心者です。 ------------------------ Sub test1() MsgBox "testです" End Sub Function test2() MsgBox "testです" End Function ------------------------ どちらのコードも結果は同じです。 基本的に、マクロを組む時は、Functionとsubとどちらを使った方が良いのでしょうか? ------------------------ Sub tset3() MsgBox test4 End Sub Function test4() test4 = "testです" End Function ------------------------ のように戻り値・返り値がある場合のみFunctionを使うべきなのでしょうか? ご回答よろしくお願いします。

  • 【VBA】半角カタカナのみを全角にするには?

    http://bekkoame.okwave.jp/qa8979427.html こちらのページを参考にしたのですが カタカナのみ全角にしたいのですが 平仮名がカタカナになってしまいます。 正規表現と言うのがよくわからないので コピペで使ってますが Sub Sample2() Dim myStr As String Dim Match As Object, Matches As Object Dim CW As String With CreateObject("VBScript.RegExp") .Pattern = "[\uFF61-\uFF9F]+" '---(1) .Global = True myStr = "あああイイイ" If Len(myStr) > 0 Then Set Matches = .Execute(myStr) 'マッチしたすべての文字列を置換 For Each Match In Matches myStr = Replace(myStr, Match.Value, _ StrConv(Match.Value, vbWide)) '---(2) Next Match CW = myStr End If End With End Sub だと「あああ」は平仮名のままなのですが myStr = "のののノノノ" にすると、ひらがなの「ののの」が全角カタカナになってしまいます。 Sub test() Call KanaJisF("あああイイイ") End Sub Function KanaJisF(ByVal sSrc As String) As String Dim sTempW As String Dim sTempN As String Dim i As Long ' ' 全角カナに相当する文字コードを総当たりでループ For i = -31852 To -31936 Step -1 sTempW = Chr(i) ' 全角カナ変数に格納 sTempN = StrConv(sTempW, vbNarrow) ' 半角カナに変換して変数に格納 ' ' 半角カナ各文字が、文字列に含まれている場合、全角カナに置換 If InStr(1, sSrc, sTempN) Then sSrc = Replace(sSrc, sTempN, sTempW) Next i ' ' 半角長音、文字列に含まれている場合、全角長音に置換 sTempN = Chr(176) If InStr(sSrc, sTempN) Then sSrc = Replace(sSrc, sTempN, "ー") KanaJisF = sSrc End Function こちらのコードは、「あああ」も全角カタカナになりました。 "のののノノノ"も同様です。 平仮名は平仮名のままにしたいのですが そのような方法はありますか?

  • VBA(Excel2003)で文字列の切り出し

    下のプロシージャーで全角半角混じりの文字列を切り出し、別の文字列で結合しようと思いますがうまくいく場合といかない場合があります。 イミディエイト・ウィンドウ上とCell上で動作が違います。 Cell上でうまく表示させるにはどうしたらいいでしょうか? Sub Test() Dim myString(2) As String Dim i As Integer myString(0) = "airueo" myString(1) = "かきくけこ" myString(2) = "さシすせそ" For i = 0 To 2 Debug.Print MidMbcs(myString(i), 1, 5) & "...テスト" Cells(i + 1, 1).Value = MidMbcs(myString(i), 1, 5) & "...テスト" Next i End Sub Function LenMbcs(ByVal str As String) LenMbcs = LenB(StrConv(str, vbFromUnicode)) End Function Function MidMbcs(ByVal str As String, start, length) MidMbcs = StrConv(MidB(StrConv(str, vbFromUnicode), start, length), vbUnicode) End Function

専門家に質問してみよう