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

回答編集履歴

1

最終行対応版

2018/05/17 01:46

投稿

ttyp03
ttyp03

スコア17002

answer CHANGED
@@ -37,4 +37,38 @@
37
37
  Next
38
38
  End Sub
39
39
 
40
+ ```
41
+
42
+ 最終行の処理が足りていませんでしたので修正してみました。
43
+ 処理済みかどうかの判定をフラグに変更しました。
44
+ なんか無駄が多いですが、基本的な作りとしてはこんな感じかと思います。
45
+ 配列に代入する3行を関数化したりすれば多少は見やすくなりますかね。
46
+ そこらへんはご自分で調整願います。
47
+ ```VBA
48
+ Sub Add(ByRef tree() As String, ByRef extree() As String, depth As String)
49
+ ReDim extree(1 To UBound(tree, 1) + 1, 1 To UBound(tree, 2))
50
+ Dim ti As Integer
51
+ Dim eti As Integer
52
+ Dim f As Boolean
53
+ eti = 1
54
+ f = False
55
+ For ti = 1 To UBound(tree, 1)
56
+ If depth < tree(ti, 3) And f = False Then
57
+ extree(eti, 1) = CStr(eti)
58
+ extree(eti, 2) = tree(ti - 1, 2)
59
+ extree(eti, 3) = depth
60
+ eti = eti + 1
61
+ f = True
62
+ End If
63
+ extree(eti, 1) = CStr(eti)
64
+ extree(eti, 2) = tree(ti, 2)
65
+ extree(eti, 3) = tree(ti, 3)
66
+ eti = eti + 1
67
+ Next
68
+ If f = False Then
69
+ extree(eti, 1) = CStr(eti)
70
+ extree(eti, 2) = tree(ti - 1, 2)
71
+ extree(eti, 3) = depth
72
+ End If
73
+ End Sub
40
74
  ```