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

回答編集履歴

5

コード修正

2021/09/09 02:39

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -7,12 +7,14 @@
7
7
 
8
8
  ```vba
9
9
  With Sheets(1).ListObjects(1)
10
+ .ListRows.Add '行追加
10
11
  Dim r As Long
11
12
  r = .ListRows.Count 'テーブルのデータ行数
13
+
12
14
  Dim ctrl As Control
13
15
  For Each ctrl In Me.Controls
14
16
  If ctrl.Tag <> "" Then
15
- With .ListColumns(ctrl.Tag).DataBodyRange(r + 1) 'テーブルの最終行の下の行
17
+ With .ListColumns(ctrl.Tag).DataBodyRange(r) 'の最終行
16
18
  Select Case TypeName(ctrl)
17
19
  Case "TextBox"
18
20
  .Value = ctrl.Value
@@ -23,6 +25,7 @@
23
25
  End If
24
26
  Next
25
27
  End With
28
+
26
29
  ```
27
30
 
28
31
  ---

4

コード修正

2021/09/09 02:39

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -6,7 +6,7 @@
6
6
  すると、下記のようなコードになります。
7
7
 
8
8
  ```vba
9
- With Sheets("Sheet4").ListObjects(1)
9
+ With Sheets(1).ListObjects(1)
10
10
  Dim r As Long
11
11
  r = .ListRows.Count 'テーブルのデータ行数
12
12
  Dim ctrl As Control

3

コード修正

2021/09/08 14:37

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -6,19 +6,21 @@
6
6
  すると、下記のようなコードになります。
7
7
 
8
8
  ```vba
9
- With Sheets(1).ListObjects(1)
9
+ With Sheets("Sheet4").ListObjects(1)
10
10
  Dim r As Long
11
11
  r = .ListRows.Count 'テーブルのデータ行数
12
12
  Dim ctrl As Control
13
13
  For Each ctrl In Me.Controls
14
+ If ctrl.Tag <> "" Then
14
- With .ListColumns(ctrl.Tag).DataBodyRange(r + 1) 'テーブルの最終行の下の行
15
+ With .ListColumns(ctrl.Tag).DataBodyRange(r + 1) 'テーブルの最終行の下の行
15
- Select Case TypeName(ctrl)
16
+ Select Case TypeName(ctrl)
16
- Case "TextBox"
17
+ Case "TextBox"
17
- .Value = ctrl.Value
18
+ .Value = ctrl.Value
18
- Case "OptionButton"
19
+ Case "OptionButton"
19
- If ctrl.Value Then .Value = ctrl.Caption
20
+ If ctrl.Value Then .Value = ctrl.Caption
20
- End Select
21
+ End Select
21
- End With
22
+ End With
23
+ End If
22
24
  Next
23
25
  End With
24
26
  ```

2

コード修正

2021/09/08 13:57

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -6,7 +6,7 @@
6
6
  すると、下記のようなコードになります。
7
7
 
8
8
  ```vba
9
- With Sheets("Sheet4").ListObjects(1)
9
+ With Sheets(1).ListObjects(1)
10
10
  Dim r As Long
11
11
  r = .ListRows.Count 'テーブルのデータ行数
12
12
  Dim ctrl As Control

1

追記

2021/09/08 13:49

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -21,4 +21,15 @@
21
21
  End With
22
22
  Next
23
23
  End With
24
- ```
24
+ ```
25
+
26
+ ---
27
+ 以下、蛇足ですが、参考までに。
28
+
29
+ > それと一部転記方法を指定する箇所があります。例えば「生年月日」と「年齢」を入力する項目があり、転記する際は生年月日の列に「生年月日(年齢)」と転記するような感じです。
30
+
31
+ これに関しては、年齢は入力する必要はないと思います。
32
+ 生年月日と現在日から計算することができますので。
33
+ シートには生年月日のみ格納して年齢は関数で計算するのがいいでしょう。
34
+ 年齢を入力してしまうと、1年後にそのシートを開いたとき、年齢は正確なデータではありません。
35
+ 関数で計算すればいつ開いても正確な年齢が表示できます。