2011-12-20 8 views
1

MS Accessの文字列または列フィールドの特定の文字を置換するために、元々は置換機能(VBA)を使用するこのコードがあります。コードはモジュール内にあります。特定の文字または列の単語を囲むスペースを整えるためにVBAにアクセスする

特定の文字の周囲のスペースをトリムするようにコードを修正する必要があります。例:thのように表示されている場合は、スペースを左側からトリミングして数字に合わせます。右側に複数のタブ(スペース)がある場合は、右側に1つのタブスペースしかないようにトリミングします。 アベニューと同じですが、1つのタブスペースが左右にあるように調整します。ここで

は、私が書いたものです:

Public Function TrmSpace(RemoveSpace As String) As String 
Dim UserEntry As Variant, CorrectedEntry As Variant 
Dim i As Long 
ExpectedEntry = Array("th ", " th", " th ", "TH") 

CorrectedEntry = Array("th", "th", "th", "th") 
TrmSpace = RemoveSpace 
For i = 0 To 3 
    TrmSpace = Trim(TrmSpace, ExpectedEntry(i), CorrectedEntry(i), Compare:=vbTextCompare) 
Next 
End Function 

私はトリムするために交換するから機能を変更するが、私はそれが間違ってやっています。

ありがとうございました!

ガイ

+1

このSQLにタグを付けましたが、純粋なVBA回答を受け入れました。この関数はクエリで使用できますか? – Fionnuala

答えて

1

トリムだけで、あなたの文字列の先頭と末尾から先頭と末尾のスペースを削除します。簡単な解決策は次のようになります:

Public Function TrmSpace(RemoveSpace As String) As String 

RemoveSpace = Replace(RemoveSpace, " ", " ") 
RemoveSpace = Replace(RemoveSpace, " ", " ") 
RemoveSpace = Replace(RemoveSpace, " ", " ") 
RemoveSpace = Replace(RemoveSpace, " th", "th") 
RemoveSpace = Replace(RemoveSpace, " TH", "th") 

TrmSpace = RemoveSpace 
End Function 

これは、最大8つのスペースを削除します。データにスペースが含まれていない実際のタブ文字がある場合は、 ""をvbTabに変更する必要があります。& vbTab & vbTab & vbTab。


「スクイーズ」にコードの一行従って、これに上記の還元に関係なく、ケースのthための主要なスペースを削除するために、1つの空間と相互にスペースを繰り返し、任意の数:

Public Function TrmSpace(RemoveSpace As String) As String 
    TrmSpace = Replace$(Replace$(Replace$(RemoveSpace, Chr$(32), Chr$(32) & Chr$(22)), _ 
        Chr$(22) & Chr$(32), vbNullString), Chr$(22), vbNullString) 

    TrmSpace = Replace$(TrmSpace, " th", "th", , , vbTextCompare) 
End Function 
+0

ありがとう!完璧に動作します!良い休日をお過ごしください! – Asynchronous

+0

OPには "th"と "avenue"の両方が記述されているため、検索する文字列を関数に渡すこともできます。 – Fionnuala

2

Jesseの答えに追加するだけです。

Public Function TrmSpace(RemoveSpace As String) As String 

    RemoveSpace = Excel.Application.WorksheetFunction.Trim(RemoveSpace) 
    RemoveSpace = Replace(RemoveSpace," th","th",,,vbTextCompare) 

    TrmSpace = RemoveSpace 

End Function 

機能TrimTrimとは異なります。代わりにこれほど多くの置き換えを行うのは、単に(エクセルを参照して)、次が行うことができます。 Trimは、先頭と末尾にあるすべてのスペース、および文字列内の任意の2重/ 3重/ 3スペースを削除します。置換機能にvbTextCompareを使用すると、 "th"の組み合わせが問題にならないので、 "TH"または "tH"か "Th"などのように心配する必要はありません。

+0

うまくやったジョンは、ws関数を使うとは思わなかった。 – Jesse

+0

タイトルに「Access VBA」と表示されていますので、ms-accessタグを追加しました。 – Fionnuala

+0

Remou、トリム機能がないのですか? – Jon49

関連する問題