|
▼℃素人 さん:
>ですが、未だになぜfunctionではだめなのかがわかりません。
いいえ、単純に値を返す必要がなくなったからです。
Functionは何か値を返すときに使います。
今回は、値を返したいものが2つになってしまったので、Functionではなく
ByRefの引数で設定するようにしました。
(ByRefの引数を使わないで「ユーザ定義型」の値を返すFunctionにすることも可能)
>それと、Blueさんにいただいた通りにコピーして貼り付けて実行しました結果。
>なぜか、すべての送り先会社名が()を含む会社名に変わってしまいます。
>
>本当に申し訳ございません。
>そして、私の説明ミスに気づきました。
>送り先の会社名は
>単純に「株式会社ABC」という形式と私がしつこくいっている「株式会社ABC(DFG株式会社様向け)」という二つの形式があります。
単純に「株式会社ABC」のパターンのときはB列にはなにが入りますか?
空でイイのであれば、GetCompanyInfo関数の先頭で、fromCompany と toCompany を初期化するような記述を入れておきましょう。
' 文字列の後の括弧を元に、会社名を取得する関数
Private Sub GetCompanyInfo(ByVal text As String, _
ByRef fromCompany As String, _
ByRef toCompany As String)
Dim startPos As Long
Dim endPos As Long
' 初期化
fromCompany = text
toCompany = ""
' 終了括弧の位置
endPos = InStrRev(text, ")")
If endPos <> 0 Then
' 開始括弧の位置
startPos = InStrRev(text, "(", endPos)
If startPos <> 0 Then
' 括弧の中身を取得
toCompany = Mid$(text, startPos + 1, endPos - startPos - 1)
' 括弧の前を取得
fromCompany = Left$(text, startPos - 1)
End If
End If
End Sub
|
|