A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんなのはいかがでしょうか?
'☆ 判定のみで良い場合
'
' 「If 条件クリア(ss.Cells(rw + 10, 11).Value) Then …」のような使い方になります。
Function 条件クリア(セル内容 As String) As Boolean
Dim 全角表示 As String
Dim 位置 As Long
Dim 数位置 As Long
Dim 終 As Long
全角表示 = StrConv(セル内容, vbWide)
For 位置 = 1 To 5
If Mid(セル内容, 位置, 1) <> Mid(全角表示, 位置, 1) Then Exit For
Next
Select Case 位置
Case 1, 6
条件クリア = False
Case Else
終 = 位置 + 3
For 数位置 = 位置 To 終
If Mid(セル内容, 数位置, 1) = Mid(全角表示, 数位置, 1) Then Exit For
If Not IsNumeric(Mid(セル内容, 数位置, 1)) Then Exit For
Next
Select Case 数位置 - 位置
Case 0, 4 '数字部分が4桁以上もOKならば「Case 0」のみにして下さい。
条件クリア = False
Case Else
条件クリア = True
End Select
End Select
End Function
'☆ 後でどんな文字列かも使う場合
'Dim 文字列 As String
' 文字列 = 抽出文字(ss.Cells(rw + 10, 11).Value)
' If 文字列 <> "" Then … ← 判定はこのように行います。
' MsgBox (文字列) ← 結果利用はこのように行います。
Function 抽出文字(セル内容 As String) As String
Dim 全角表示 As String
Dim 位置 As Long
Dim 数位置 As Long
Dim 終 As Long
全角表示 = StrConv(セル内容, vbWide)
For 位置 = 1 To 5
If Mid(セル内容, 位置, 1) <> Mid(全角表示, 位置, 1) Then Exit For
Next
Select Case 位置
Case 1, 6
抽出文字 = ""
Case Else
終 = 位置 + 3
For 数位置 = 位置 To 終
If Mid(セル内容, 数位置, 1) = Mid(全角表示, 数位置, 1) Then Exit For
If Not IsNumeric(Mid(セル内容, 数位置, 1)) Then Exit For
Next
Select Case 数位置 - 位置
Case 0, 4 '数字部分が4桁以上もOKならば「Case 0」のみにして下さい。
抽出文字 = ""
Case Else
If 数位置 >= 終 Then
抽出文字 = Left(セル内容, 終 - 1)
Else
抽出文字 = Left(セル内容, 数位置 - 1)
End If
End Select
End Select
End Function
No.2
- 回答日時:
>vbaのif関数が設定できません・・・
If 関数はワークシート上で、VBAでは、If 構文だったような気がしますが……。
>全角1~4文字 + 半角数字1~3桁
このパターンに限る場合は、
"^[^\x01-\x7E]{1,4}\d{1,3}$"
その後に続く 「あいう12a」でも可の場合は、
"^[^\x01-\x7E]{1,4}\d{1,3}"
'----------------
Sub Test1()
Dim a
a = "あいうえ12"
If CheckStr(a) Then
MsgBox "実行!"
Else
MsgBox "失敗", vbCritical
End If
End Sub
'//標準モジュール
Function CheckStr(ByVal strTxt As String) As Boolean
Dim RegEx As Object
Dim Ms
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
.Pattern = "^[^\x01-\x7E]{1,4}\d{1,3}$" ' [^ -~。-゜] 本来はこうでもよいが、/゚。~-^/は半角のみ
Set Ms = .Execute(strTxt)
If Ms.Count > 0 Then
CheckStr = True
End If
End With
End Function
//
正規表現のパターンは、' [^ -~。-゜]でよいのですが、全角が混じることがあるので、文字コードで[^\x01-\x7E] と表現しました。意味は、半角以外のもの、ということです。
No.1
- 回答日時:
念のため確認しますが、数値部分だけ考えた場合は次のどちらでしょうか?
① 1文字目が半角数字ならば4桁以上の数値でも問題ない
② 1~3桁の半角数字で、そのすぐ後は半角数字ではない
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Visual Basic(VBA) 指定列最終行までのスペースを改行するVBAについて 2 2022/06/01 19:50
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/04/01 09:10
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) エクセルのマイナス表示 3 2022/03/28 16:35
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Excel(エクセル) 条件式書式の設定 3 2023/07/04 05:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
対象セル内(複数)が埋まった...
-
貼り付けで複数セルに貼り付けたい
-
エクセル 足して割る
-
Excelで数式内の文字色を一部だ...
-
セルをクリック⇒そのセルに入力...
-
エクセルのセルの枠を超えて文...
-
エクセル オートフィルタで絞...
-
Excelでのコメント表示位置
-
excelのCOUNTIF関数で、『範囲=...
-
エクセルの一つのセルに複数の...
-
(Excel)数字記入セルの数値の後...
-
【Excel】 セルの色での判断は...
-
エクセルで第2、第4土曜日を抽...
-
EXCELで優先順位をつけて表示
-
枠に収まらない文字を非表示に...
-
エクセルvba (ByVal Targ...
-
EXCEL VBA セルに既に入...
-
エクセル 数字の前の「00」を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
対象セル内(複数)が埋まった...
-
エクセル 足して割る
-
Excelで数式内の文字色を一部だ...
-
貼り付けで複数セルに貼り付けたい
-
Excelでのコメント表示位置
-
セルをクリック⇒そのセルに入力...
-
EXCEL VBA セルに既に入...
-
excelのCOUNTIF関数で、『範囲=...
-
【Excel】 セルの色での判断は...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
Excelで、「特定のセル」に入力...
-
エクセルの一つのセルに複数の...
-
複数のセルのいずれかに数字が...
-
excelの特定のセルの隣のセル指...
-
数式を残したまま、別のセルに...
-
ハイパーリンクの参照セルのズ...
おすすめ情報