質問するログイン新規登録

回答編集履歴

1

コード追加

2019/10/13 05:24

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -10,4 +10,29 @@
10
10
 
11
11
  現状のテキストボックスのコントロールソースを下記のように変更します。
12
12
 
13
- `=IIf([P1]>0 And [P2]>[P1],Mid([係名],[P1]+1,[P2]-[P1]-1),Left([係名],InStr(1,[係名] & "部","部",0)))`
13
+ `=IIf([P1]>0 And [P2]>[P1],Mid([係名],[P1]+1,[P2]-[P1]-1),Left([係名],InStr(1,[係名] & "部","部",0)))`
14
+
15
+ 同様の処理が他にもあったり、変更の可能性があるなら、ユーザー定義関数を作成しておくといいでしょう。
16
+ 標準モジュールに下記の関数を作成します。
17
+
18
+ ```vba
19
+ Public Function get係名(v As Variant) As String
20
+
21
+ If IsNull(v) Then Exit Function
22
+
23
+ Dim P1 As Long: P1 = InStr(1, v, "(", vbBinaryCompare)
24
+ If P1 > 0 Then
25
+ Dim P2 As Long: P2 = InStr(1, v, ")", vbBinaryCompare)
26
+ If P1 < P2 Then
27
+ get係名 = Mid(v, P1 + 1, P2 - P1 - 1)
28
+ Exit Function
29
+ End If
30
+ End If
31
+
32
+ get係名 = Left(v, InStr(1, v & "部", "部", vbBinaryCompare))
33
+
34
+ End Function
35
+ ```
36
+ テキストボックスのコントロールソースに下記の式を設定
37
+
38
+ `=get係名([係名])`