M=Range("B4")     ' B4セルのデータを変数Mに代入する。
C=Left(M, 1)       ' 変数Mの、左から1番目の文字をCに代入する。
C2=Left(M, 2)       ' 変数Mの、左から2番目までの文字をC2に代入する。
C3=Right(M, 1)       ' 変数Mの、右から1番目の文字をC3に代入する。
C4=Right(M, 3)       ' 変数Mの、左から3番目までの文字をC4に代入する。
C5=Mid(M, 2, 3)      ' 変数Mの、左側2番目から3文字をC5に代入する。
strHin=Range("C4")   ' C4セルのデータを変数 strHin に代入する。
MJ="CD"         ' 検索条件列 CD を変数 MJ に代入する。
N=InStr(strHin, MJ)   ' 関数 [InStr] は文字列の中で、条件文字が何文字目にあるのかを算出して
              ' 変数 N に代入する。
strHin2=Range("C5")  ' C5セルのデータを変数 strHin2 に代入する。
MJ2="〜"        ' 検索条件文字列 " 〜 " を変数 MJ2 に代入する。
N1=InStr(strHin2, MJ2) ' " 〜 " が strHin2 の何文字目にあるのかを N1 に代入する。
S=Left(strHin2, N1-1)  ' N1 で算出した位置より、一つ前の文字を S に代入する。
              ' S=A1 である。

strHin3=Range("C6")  ' C6セルのデータを変数 strHin3 に代入する。
MJ3="〜"        ' 検索条件文字列 " 〜 " を変数 MJ3 に代入する。
N2=InStr(strHin3, MJ3) ' " 〜 " が strHin3 の何文字目にあるのかを N2 に代入する。
S2=Left(strHin3, N2-1)  ' N2で算出した位置より、一つ前の文字を S 2に代入する。
              ' S2=A10である。
● S=A1, S2=A10 で見るように N1−1 でも N2−1 でも、それより左側の文字は何文字あっても抽出され
  ることが分かる。
---------------------------------------------------------------------------------------------------------------------
● その他の検索方法
M2=Range("B8")                    ' M2=NK−12345である。
strOb="ー"
Point=Application.WorksheetFunction.Find(strOb, M2)  ' Point=3 である。
                             ' M2の中の " ー " の位置を調べてPointに
                             ' 代入する。

If Point=2 Then K=Left(M2, 1)              ' Point が 2 なら " ー " の前の記号を1文字
                             ' K に代入する。

If Point=3 Then K=Left(M2, 2)              ' Point が 3 なら " ー " の前の記号を2文字
                             ' K に代入する。

● この検索方法は、ハイフンの前の文字数が変化する場合で、ハイフンの前の文字列を、取り出したい
  時に有効である。
  尚、Application.worksheet Function はExcel の関数を VBA で使用するときに、定義する構文である。
●文字列の中から、特定位置の文字を抽出する。
 
基本的なマクロの習得
文字列の中から、特定位置の文字を抽出する。


実際に使っているシステムの内容で解説
  EXCEL VBA 講座