mid関数とmidステートメントの違いを教えてください

このQ&Aのポイント
  • mid関数とmidステートメントについての違いを教えてください。
  • mid関数とmidステートメントは、文字列の中から指定した文字数分の文字を返すために使用されます。
  • midステートメントは、文字列の一部を別の文字列で置き換えることもできます。
回答を見る
  • ベストアンサー

mid関数とmidステートメントの違いを教えてくだ

Sub test1() MsgBox Mid("abc", 2) End Sub は、mid関数ですか?midステートメントですか? ヘルプを見ると、 --------------------------------------------------------- Mid ステートメントの使用例 次の例は、Mid ステートメントを使って、 文字列変数の中にある指定した文字数分の文字を他の文字列に置き換えます。 Dim MyString, FirstWord, LastWord, MidWords MyString = "Mid Function Demo" ' 文字列を定義します。 FirstWord = Mid(MyString, 1, 3) ' "Mid" を返します。 LastWord = Mid(MyString, 14, 4) ' "Demo" を返します。 MidWords = Mid(MyString, 5) ' "Function Demo" を返します。 --------------------------------------------------------- も --------------------------------------------------------- Mid 関数の使用例 次の例は、Mid 関数を使って、 文字列の中から指定した文字数分の文字を返します。 Dim MyString, FirstWord, LastWord, MidWords MyString = "Mid Function Demo" ' 文字列を定義します。 FirstWord = Mid(MyString, 1, 3) ' "Mid" を返します。 LastWord = Mid(MyString, 14, 4) ' "Demo" を返します。 MidWords = Mid(MyString, 5) ' "Function Demo" を返します。 --------------------------------------------------------- も同じです。 mid関数とmidステートメントの違いを教えてください。 ご回答よろしくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>Mid ステートメントの使用例 単なるヘルプの間違いです。(よくあることです) (使用例の説明書きは合ってます。サンプルマクロが間違っているだけです。) Midステートメントの正しい使用例: sub macro1()  dim s as string  s = "abcde"  mid(s, 3, 1) = "z"  debug.print s end sub

hguryt3
質問者

お礼

ヘルプの間違いなんてあるのですね。 ヘルプを過信しすぎてはいけませんね。 頂いたサンプルマクロは、3文字目をzに置き換えるという事でしょうか? 中々難しいですが理解できるように頑張ります。 ありがとうございました。

関連するQ&A

  • midステートメント セルを指定したい

    エクセルなのですが、 Sub N文字目を置換する1() Dim N As Long Range("a1").Value = "abcde" N = 2 '置換する文字の位置 ’start(省略不可) Mid(Range("a1").Value, N) = "X" MsgBox Range("a1").Value End Sub このように、セルを指定することはできないのでしょうか? このコードを実行しようとすると、 Mid(Range("a1").Value, N) = "X"の部分で「変数が必要です」とコンパイルエラーになります。 Sub N文字目を置換する2() Dim moji As String Dim N As Long Range("a1").Value = "abcde" moji = Range("a1").Value N = 2 Mid(moji, N) = "X" MsgBox moji End Sub このように、セルの値を一度変数に入れると問題なく実行できますが、 なぜダイレクトにmidステートメントでセルを指定できないのかわからないので教えてください。 よろしくお願いします。

  • OpenOffice,Basic,Mid()関数にて「無効なプロシージ

    OpenOffice,Basic,Mid()関数にて「無効なプロシージャの呼び出し」のエラー? OpenOffice Basicの初心者です. 「指定ユーザ数の、指定文字数のランダム文字列(a-z,A-Z,0-9)を生成するプログラム」 を作成したのですが, 以下のスクリプトを実行すると,下から6行目にて 「アクションは支援されません。無効なプロシージャーの呼び出し。」 というエラーが,出力されます. 出力されるタイミングは定まっておらず, プログラムが正常に動くときもあれば, 実行初期段階でエラーが出るときもあれば, 実行途中でエラーが出るときもあります. 色々と自分で原因究明してみましたが,原因が分かりません. (どうも Mid()関数 のところでひっかかっているようなのですが・・・.) どなたか、ご教授頂けませんでしょうか? (※添付画像は,出力されるエラー画面です.) ----- 自作スクリプト ここから ----- Sub Main dim doc as object dim sheet as object dim cell as object dim i, j as integer ' for文制御用 dim m, n as integer ' m:何人分か, n:何文字分か dim rand, maxRand as integer dim pw as string '文字列格納用変数 ' 初期化 rand = 0 maxRand = 63 ' 63未満の乱数生成する m= 20 ' 何人分の文字列か n = 15 ' 何文字分の文字列か doc = thiscomponent sheet = doc.sheets (0) smallString = "abcdefghijklmnopqrstuvwxyz" largeString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" numberString = "0123456789" rootString = smallString + largeString + numberString cell = sheet.getcellbyposition(0,0) cell.string = "生成した文字列" for i = 1 to m    pw = ""    for j = 1 to n       rand = int(maxRand * Rnd()) ' 乱数の生成       pw = pw + Mid(rootString, rand, 1)    next    cell = sheet.getCellByPosition(0,i)    cell.string = pw next End Sub ----- 自作スクリプト ここまで -----

  • Excelユーザー定義関数が書き込まれているセルアドレス

    Excelのユーザー定義関数で、自分自身が書き込まれているセルのアドレスって取得出来るのでしょうか? 例えば、 Function test(MyString As String) As String test = "入力された文字は、「" & MyString & "」です" End Function とユーザー定義関数を作り A1のセルに =test("てすと") と書くと 入力された文字は、「てすと」ですと出てきます。 そこで、ユーザー定義関数のなかで、ユーザー定義関数を呼び出した式が入力されている(上記の例ですと、「A1」)アドレスを取得する方法ってありますか? どなたか、詳しい方いらっしゃいましたら教えてください。

  • エクセル MID関数

    MID関数で表示した文字列が、数字として認識されません。 MID関数で表示された数字が10とします。セルはA1とします。 その後、IF式で =if(A1<5,10,0) とすると、結果は0になるはずなのに、常に真の値、10になってしまいます。 原因は、MID関数で表示された数字が文字列として認識しているからと考えられますが、対象方法をご存知の方がおりましたら教えてください。 よろしくお願いします。

  • 文字列の置き換え

    こんばんは。 VB6を使用しています。 mystring1 = "abcdefghij" mystring2 = "1234567890" という2つの文字列があります。 この文字列の一部(mystring1)をmystring2の一部で 置き換えたいのですが どのようにプログラムを組んだらいいのでしょうか? 例: c1 = Mid(mystring1, 5, 3)(="efg")を c2 = Mid(mystring2, 1, 3) (="123")で置き換えて mystring1 = "abcd123hij" と置き換えを行うことをしたい。 とても初歩的な質問ですがよろしくお願いします。

  • ifステートメントで、[が含まれるかどうかを調べた

    ifステートメントで、[が含まれるかどうかを調べたいのですが ****************************** Sub test1() Dim myStr As String myStr = "[aaa]" If myStr Like "*[*" Then MsgBox "[を含んでいます。" End If End Sub ****************************** をやろうとすると 「実行時エラー93 パターン文字列が不正です」 となってしまいます。 ヘルプを見ると ************************************************************ 検索の Like 演算子で指定されているパターン文字列が無効です。 エラーの原因と対処方法を次に示します。 たとえば、文字リスト式 [a-b は、右かっこ (]) がないため、無効です。 リスト式の文字を確認します。 詳細については、目的の項目を選択して F1 キー (Windows) または Help キー (Macintosh) を押してください。 ************************************************************ との事なので、 If myStr Like "*[*]" Then としたら、問題なくできましたが、 [だけが含まれているかどうかを調べることは不可能なのでしょうか?

  • Mid関数の記述

    いつもAccessでは、Mid関数を使っているんですけど、 ASPファイルで文字列の一部を取得したいんで、 SUBSTRINGを代わりに使ったんですが、 プロシージャーのエラー が出るので、 response.writeで、対象の文字列を表示させてみたら取得出来てるみたいなのに、 うまくいきません。どうして???

  • EXCELのMID関数について教えてください

    abcd+cd+EFのような文字列で右から3番目の 「d」を取り出したい場合、 EXCELのMID関数ですと左からしか数えられないので 右から数えられる、もしくは文字列の並びを 逆転できる方法を探しています。 ご存知の方どうぞよろしくお願いします。

  • RSetとString関数の質問

    String(3,255)という変換の結果は何ですか。 Dim MyString MyString = "0123456789" ' 文字列を初期化します。 Rset MyString = "Right->" ' MyString に " Right->" を格納します。 "0123"が空白になりますか。助けてください。お願いします。

  • 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

専門家に質問してみよう