2017-06-22 22 views
0

文字列から部分文字列を選択しようとしています。文字列の部分文字列

例:「T」から始まる下の文字列からテーブルnoを選択します。テーブルT682(SAPテーブル)で

変更

テーブルの開始位置は全く同じ、すなわち17の位置ではありませんが、テーブル名の文字が一定ではありません。だから私は基本的にそれがスペースを見つけるまで17番目の位置から選ぶ部分文字列が欲しいです。私は以下のコードを使用していますが、動作していないようです。ここで

Position = InStr(1, A, " ") 
TableNo = Mid(A, 17, Position) 
+0

を行う前になりますそれはスペースの後に常に開いた括弧を持っていますか? –

+0

@ DarrenBartrup-Cookはいそれは –

+0

私はあなたがブラケットにINSTRを使用することができると言うつもりだったが、文字18の後の最初のスペースだけでも動作します。 –

答えて

1

は、あなたが何をする必要があるかです:

Dim A As String 
Dim StartPosition As Integer 
Dim EndPosition As Integer 

A = "Changes in table T682 (SAP TABLE)" 
StartPosition = InStr(1, A, "T") 
EndPosition = InStr(StartPosition, A, " ") 
tableno = Mid(A, StartPosition, EndPosition - StartPosition) 
0

スペースT682は、文字17文字18のテーブル開始する前に、私たちはその直後のスペースを見つける必要があります。

GetTable関数をワークシート関数として使用することもできます。セルB1に=GetTable(A1)を入力してT682を返します。
1. INSTRの最初のパラメータは
2.半ばの最後のパラメータがありますが、出発点の後の最初のスペースを見つけたい18のようになります。

Sub Test() 

    Debug.Print GetTable("Changes in table T682 (SAP TABLE)") 

End Sub 

Public Function GetTable(Target As Range) As String 

    GetTable = Mid(Target, 18, InStr(18, Target, " ") - 18) 

End Function 
1

は、あなたのコード内の2つのミスがあります文字

の数は、だからあなたのコードは次のようになります。

Position = InStr(18, a, " ") 
TableNo = Mid(a, 18, Position - 18) 
+0

「プロシージャコールまたは引数が無効です」というエラーが表示されます。 –

+0

負の量の文字を取得するなど、何か無効な操作をしようとすると起こります。コードの各ステップの値を見てください。ここでは推測していますが、VBEのデバッグの可能性について学ぶ必要があると思います – Sam

0

別の方法

s = "Changes in table T682 (SAP TABLE)" 
Debug.Print Trim(Split(Split(s, "(")(0), "T")(1)) 

私は次のことを仮定しています。文字列の形式は、唯一の1 (

  • T*があります
  • (前に、他の資本 Tございませんつまり

    1. 一定になる(
    関連する問題