質問: -Len(TextBox2.Text) + 1 End If End Sub ```
回答: > > 2. InStrの第一引数 > > > リファレンスの記載にありますが、検索開始位置です。 > > 1. これは何をしているのか?(特に"-(マイナス)"がつく理由) > > > 上のコードを見た限りでは意味不明ですね... `p = -Len(TextBox2.Text) + 1` 無駄な計算に見えてもそこに何かの意図があるならそれがくみ取れると思うのですがご質問のコードの断片だけをみるとそこには大した意味はくみ取れない気がします。 教科書の前後にあるコード、説明などをよくみると何か手がかりがあるかも知れません。 例えばInStrを使ってs1の中から連続してs2を探すループ処理があったとします。pを最後に見つかった位置と考えると次の位置からs2を探すならこのようなコードになります。 `p = InStr(p + Len(s2), s1, s2)` これでInStrを繰り返し呼び出すと、次々にpにs2が見つかった位置が入るわけですが、そのループを開始する際に一番最初の検索位置の初期値を与えるとすると `p = -Len(s2) + 1` で与えればよいことになります。しかし上のコードではループしてないのでこんなコードを書いても冗長なだけです。 ひょっとしたらこのコードを最初に提示して次のサンプルでループを使って何かするようなものが書いてありそのベースとするためにわざわざこんなコードにしてあるのでしょうか・・・ 追記: VB.NETのstaticの意味がわからないのですが、staticといってるぐらいなのでこのサブルーチンの局所変数ではなく大域的に「p=-Len(s2)+1 の初期化だけが行われている」と解釈すべきなら上の述べたようにサブルーチンが呼び出される度にあらたな検索位置に対してフォーカスを充てるというような処理になるのだと思います。スミマセン自分はstaticの意味を正確に知らないので自信ありません。