質問編集履歴

4

エラー修正

2022/09/18 00:58

投稿

nkym771
nkym771

スコア29

test CHANGED
File without changes
test CHANGED
@@ -45,14 +45,14 @@
45
45
  WS1.Sort.SetRange WS1.Range("A1").CurrentRegion
46
46
  WS1.Sort.Header = xlNo
47
47
  WS1.Sort.Apply
48
- ★★★追加希望(C列に、"変数" & 行数 を入れたい)★★★
48
+ WS1.Cells(1, 3).Resize(zenkakuVals.Count, 1).Formula = "=""変数"" & Row()"
49
49
 
50
- '日本語変数と変数Noを文字列長順に配列に代入する★★★編集★★★
50
+ '日本語変数と変数Noを文字列長順に配列に代入する
51
51
  Dim tempHensu() As Variant
52
52
  tempHensu = WS1.Cells(1, 2).Resize(zenkakuVals.Count, 2).Value
53
53
 
54
54
 
55
- 'プログラムの各行で、文字列長の長い順に日本語変数を検索し、出現すれば、一時置換用の文字列に置き換える★★★編集★★★
55
+ 'プログラムの各行で、文字列長の長い順に日本語変数を検索し、出現すれば、一時置換用の文字列に置き換える
56
56
  For cnt = 1 To myDic.Count
57
57
  For i = UBound(tempHensu) To 1 Step -1
58
58
  If InStr(myDic(cnt), tempHensu(i, 1)) > 0 Then
@@ -61,7 +61,7 @@
61
61
  Next
62
62
  Next
63
63
 
64
- '一時置換用の文字列が出現すれば、対応する日本語変数に"[ ]"付きで変換する★★★編集★★★
64
+ '一時置換用の文字列が出現すれば、対応する日本語変数に"[ ]"付きで変換する
65
65
  For cnt = 1 To myDic.Count
66
66
  For i = UBound(tempHensu) To 1 Step -1
67
67
  If InStr(myDic(cnt), tempHensu(i, 2)) > 0 Then
@@ -121,9 +121,3 @@
121
121
  [[日本語変数]旧]=4
122
122
 
123
123
  ```
124
- エクセルシートにC列に "変数" & 行数の文字列を追加したいです。
125
- ||A(文字列長)|B|C|
126
- |:--|:--:|:--|:--:|
127
- |1|5|日本語変数|変数1|
128
- |2|6|日本語変数旧|変数2|
129
- |3|6|日本語変数新|変数3|

3

不明点の追記

2022/09/17 07:54

投稿

nkym771
nkym771

スコア29

test CHANGED
File without changes
test CHANGED
@@ -6,6 +6,7 @@
6
6
 
7
7
  1行で複数の変数を宣言することはありません。
8
8
  エクセルのバージョンは2013です。
9
+
9
10
 
10
11
  ```VBA
11
12
  Option Explicit
@@ -35,13 +36,36 @@
35
36
  cnt = cnt + 1
36
37
  Loop
37
38
  Close #1
38
-
39
+
39
- 'プログラムの各行で日本語変数が出てくれば"[ ]"で囲む
40
+ '日本語変数をエクセルシート上に貼り付け、文字列長にソートする★★★編集★★★
41
+ WS1.Cells(1, 2).Resize(zenkakuVals.Count, 1).Value = Application.Transpose(zenkakuVals.Keys)
42
+ WS1.Cells(1, 1).Resize(zenkakuVals.Count, 1).Formula = "=Len(B1)"
43
+ WS1.Sort.SortFields.Clear
44
+ WS1.Sort.SortFields.Add Key:=WS1.Range("A1"), Order:=xlAscending
45
+ WS1.Sort.SetRange WS1.Range("A1").CurrentRegion
46
+ WS1.Sort.Header = xlNo
47
+ WS1.Sort.Apply
48
+ ★★★追加希望(C列に、"変数" & 行数 を入れたい)★★★
49
+
50
+ '日本語変数と変数Noを文字列長順に配列に代入する★★★編集★★★
40
- Dim line1 As Variant
51
+ Dim tempHensu() As Variant
52
+ tempHensu = WS1.Cells(1, 2).Resize(zenkakuVals.Count, 2).Value
53
+
54
+
55
+ 'プログラムの各行で、文字列長の長い順に日本語変数を検索し、出現すれば、一時置換用の文字列に置き換える★★★編集★★★
41
56
  For cnt = 1 To myDic.Count
42
- For Each zenkakuval In zenkakuVals
57
+ For i = UBound(tempHensu) To 1 Step -1
43
- If InStr(myDic(cnt), zenkakuval) > 0 Then
58
+ If InStr(myDic(cnt), tempHensu(i, 1)) > 0 Then
59
+ myDic(cnt) = Replace(myDic(cnt), tempHensu(i, 1), tempHensu(i, 2))
60
+ End If
61
+ Next
62
+ Next
63
+
64
+ '一時置換用の文字列が出現すれば、対応する日本語変数に"[ ]"付きで変換する★★★編集★★★
65
+ For cnt = 1 To myDic.Count
66
+ For i = UBound(tempHensu) To 1 Step -1
67
+ If InStr(myDic(cnt), tempHensu(i, 2)) > 0 Then
44
- myDic(cnt) = Replace(myDic(cnt), zenkakuval, "[" & zenkakuval & "]")
68
+ myDic(cnt) = Replace(myDic(cnt), tempHensu(i, 2), "[" & tempHensu(i, 1) & "]")
45
69
  End If
46
70
  Next
47
71
  Next
@@ -66,7 +90,7 @@
66
90
  buf = Replace(buf, word, "")
67
91
  Next
68
92
  henkan = buf
69
- '変数が全角の場合に、リストに追加する
93
+ '変数が全角の場合に、リストに追加する
70
94
  If InStr(buf, "Dim") > 0 Then
71
95
  buf = Trim(Replace(buf, "ReDim", ""))
72
96
  buf = Trim(Replace(buf, "Dim", ""))
@@ -97,3 +121,9 @@
97
121
  [[日本語変数]旧]=4
98
122
 
99
123
  ```
124
+ エクセルシートにC列に "変数" & 行数の文字列を追加したいです。
125
+ ||A(文字列長)|B|C|
126
+ |:--|:--:|:--|:--:|
127
+ |1|5|日本語変数|変数1|
128
+ |2|6|日本語変数旧|変数2|
129
+ |3|6|日本語変数新|変数3|

2

質問追記

2022/09/16 23:14

投稿

nkym771
nkym771

スコア29

test CHANGED
File without changes
test CHANGED
@@ -3,6 +3,10 @@
3
3
  一方が他方に含まれるような関係だと、処理がうまくいきません。
4
4
  どのようにすればよいでしょうか。
5
5
  よろしくお願いします。
6
+
7
+ 1行で複数の変数を宣言することはありません。
8
+ エクセルのバージョンは2013です。
9
+
6
10
  ```VBA
7
11
  Option Explicit
8
12
 

1

修正

2022/09/16 13:40

投稿

nkym771
nkym771

スコア29

test CHANGED
File without changes
test CHANGED
@@ -31,11 +31,6 @@
31
31
  cnt = cnt + 1
32
32
  Loop
33
33
  Close #1
34
-
35
- Dim zenkakuval As Variant
36
- For Each zenkakuval In zenkakuVals
37
- Debug.Print zenkakuval
38
- Next
39
34
 
40
35
  'プログラムの各行で日本語変数が出てくれば"[ ]"で囲む
41
36
  Dim line1 As Variant
@@ -67,7 +62,7 @@
67
62
  buf = Replace(buf, word, "")
68
63
  Next
69
64
  henkan = buf
70
- '変数が全角の場合に、リストに追加する
65
+ '変数が全角の場合に、リストに追加する
71
66
  If InStr(buf, "Dim") > 0 Then
72
67
  buf = Trim(Replace(buf, "ReDim", ""))
73
68
  buf = Trim(Replace(buf, "Dim", ""))