• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:これ以上省略することは出来ないですか?)

VBAで文字列の置換を省略する方法はありますか?

このQ&Aのポイント
  • VBAで文字列の置換を行う際、配列を一つずつ増やしていく方法で行うことができます。
  • ただし、より効率的な方法を模索するのも一つの手段です。
  • 省略する方法を探すために、withステートメントのような構文を使用することもできるでしょう。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >IF文をvbaで記載しているのですが これは、何のVBAでしょうか。IF文ではなくて、IIf関数を使っているわけで、VBAの場合は、IIf を使ったら、IIf 関数内のエラーは回避できません。また、IIf 関数内の判定をすべてが通っていきますから、ExcelのワークシートのIF関数とは違います。だから、VBAでは、確実で簡単な内容でなければ、IIf は多用できません。また、深いネストは、処理しにくいので、VBAでは使いません。 初心者の方のようですから、あまり追及しませんが、変数に、2バイト文字はなるべく使わないようにしてください。 なお、この種のコードでは、配列の添え字については、Ubound と同時に、Lbound も付け加えたほうが安全のような気がします。しかし、あえて、配列変数を使わなくても、Mid 関数でループしても十分だと思います。 '------------------------------------------- Sub MacroTest()   Dim mStr As String '文字列 mは、ローカル,Str は、String の略   Dim ret As String '置換 ret は、Return の略   Dim i As Long 'i は、increment の頭文字   Dim ar_A As Variant 'A配列 ar は、Array の略   Dim ar_B As Variant 'B配列   '-------------------------------------------   ar_A = Split("A,B,C,D,E,F,G,H,I,J,K,L,M,N", ",")   ar_B = Split("1,2,3,4,5,6,7,8,9,10,11,12,13,14", ",")   '-------------------------------------------   mStr = "BBC" '文字列   For i = LBound(ar_A) To UBound(ar_A)     If InStr(1, mStr, ar_A(i), 0) > 0 Then       ret = ar_B(i)       Exit For     End If   Next i   MsgBox ret End Sub

fdshjs
質問者

お礼

アクセスのvbaです。 なんだか初心者過ぎて訳わかってません 泣 せっかく丁寧なご回答をいただいたのですが 理解するのに時間がかかりそうです。 でもがんばって解読してみます。 有難うございます。

その他の回答 (2)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

A配列とB配列は同じ数ですか? UBound(A配列)で、 ≪以下ヘルプから引用≫ 配列の指定された次元で使用できる添字の最大値を、長整数型 (Long) の値で返します。 For i = 0 To UBound(A配列)  ・・・A配列(i)・・・・・B配列(i)・・・ Next といった感じにできます。

fdshjs
質問者

お礼

>A配列とB配列は同じ数ですか? そうです。 ありがとうございました。参考になりました。

回答No.1

VBA詳しくないのですが、単純に考えてFOR NEXTで可能なのでは? http://sigoto.co.jp/excel/statement/state06.htm

fdshjs
質問者

お礼

有難うございます。使ってみます。

関連するQ&A