Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


35994 / 76738 ←次へ | 前へ→

【45931】Re:ファイル名で使用できない文字の排除
お礼  ボビー  - 07/1/18(木) 10:42 -

引用なし
パスワード
   ▼Hirofumi さん:
>こんなので善いのかな?
>TextBox1は、不正な文字を"_"に置き換えます
>TextBox2は、不正な文字を反転表示し、警告を出します

教えて頂いたロジックを参考に実行しました。
思った通りの処理になりましたが、私のVBA理解レベルではメンテナンス発生時に苦労しそうです。
もう少し理解・知識を深めたらこのロジックを使ってみたいと思います。
ありがとうございました。

>
>Option Explicit
>
>Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
>
>  With TextBox1
>    If .Text <> "" Then
>      .Text = NameLetter(.Text)
>    End If
>  End With
>  
>End Sub
>
>Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
>
>  Dim lngPos As Long
>  
>  With TextBox2
>    If .Text <> "" Then
>      lngPos = LetterCheck(.Text)
>      If lngPos > 0 Then
>        Cancel = True
>        .SelStart = lngPos - 1
>        .SelLength = 1
>        MsgBox Mid(.Text, lngPos, 1) & "の文字が不正です", vbInformation
>      End If
>    End If
>  End With
>  
>End Sub
>
>Private Function NameLetter(ByVal strName As String) As String
>
>'  ファイル名のチェック
>  
>  Dim i As Long
>  Dim vntLetter As Variant
>  Dim lngPos As Long
>  
>  'ファイル名として使用不可能な文字の一覧を作成
>  vntLetter = Array(":", "\", "?", "[", "]", "/", "*")
>  
>  '一覧全てに就いて
>  For i = 0 To UBound(vntLetter, 1)
>    '引数の文字列に一覧の文字が含まれるか探索
>    lngPos = InStr(1, strName, vntLetter(i), vbTextCompare)
>    '引数の文字列に一覧の文字が無くなるまで繰り返し
>    Do Until lngPos = 0
>      '有る場合、"_"に置換
>      strName = Left(strName, lngPos - 1) _
>            & "_" & Mid(strName, lngPos + 1)
>      '引数の文字列に一覧の文字が含まれるか探索
>      lngPos = InStr(1, strName, vntLetter(i), vbTextCompare)
>    Loop
>  Next i
>  
>  '戻り値として、置換後の文字列を返す
>  NameLetter = strName
>  
>End Function
>
>Private Function LetterCheck(strName As String) As Long
>
>  
>  Dim i As Long
>  Dim vntLetter As Variant
>  Dim lngPos As Long
>  
>  'ファイル名として使用不可能な文字の一覧を作成
>  vntLetter = Array(":", "\", "?", "[", "]", "/", "*")
>  
>  '一覧全てに就いて
>  For i = 0 To UBound(vntLetter, 1)
>    '引数の文字列に一覧の文字が含まれるか探索
>    lngPos = InStr(1, strName, vntLetter(i), vbTextCompare)
>    If lngPos > 0 Then
>      Exit For
>    End If
>  Next i
>  
>  '戻り値として、不正文字の位置を返す
>  LetterCheck = lngPos
>  
>End Function

0 hits

【45906】ファイル名で使用できない文字の排除 ボビー 07/1/17(水) 18:48 質問
【45913】Re:ファイル名で使用できない文字の排除 ぱっせんじゃー 07/1/17(水) 19:20 発言
【45930】Re:ファイル名で使用できない文字の排除 ボビー 07/1/18(木) 10:38 お礼
【45934】Re:ファイル名で使用できない文字の排除 ボビー 07/1/18(木) 11:48 質問
【45937】Re:ファイル名で使用できない文字の排除 Blue 07/1/18(木) 11:57 回答
【45946】Re:ファイル名で使用できない文字の排除 ボビー 07/1/18(木) 14:27 お礼
【45952】Re:ファイル名で使用できない文字の排除 Kein 07/1/18(木) 17:51 回答
【45953】Re:ファイル名で使用できない文字の排除 ichinose 07/1/18(木) 20:43 発言
【45957】Re:ファイル名で使用できない文字の排除 Blue 07/1/19(金) 9:50 発言
【45917】Re:ファイル名で使用できない文字の排除 Hirofumi 07/1/17(水) 20:07 回答
【45931】Re:ファイル名で使用できない文字の排除 ボビー 07/1/18(木) 10:42 お礼
【45958】Re:ファイル名で使用できない文字の排除 ボビー 07/1/19(金) 11:26 お礼

35994 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free