回答編集履歴
4
this_sheet\.Activateを追加(マトリクス順次入力シート以外がアクティブな場合にエラーとなるため)
answer
CHANGED
@@ -50,6 +50,7 @@
|
|
50
50
|
Next
|
51
51
|
|
52
52
|
'入力領域を範囲選択
|
53
|
+
this_sheet.Activate
|
53
54
|
this_sheet.Range(Cells(2 + 1, 6 + 1), Cells(2 + UBound(Files_1), 6 + UBound(Files_2))).Select
|
54
55
|
|
55
56
|
'自動アクティベート
|
3
表現を一部修正
answer
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
マトリクスを作成した後、**入力領域を範囲選択し**(←ここが大事です)、入力→TAB押下→入力...と操作を繰り返していけば、普通に順番に入力できると思います。
|
4
4
|
|
5
5
|
**追記:**
|
6
|
-
**アクティベートを自動で行う処理を追加しました。**
|
6
|
+
**不要とは思いましたが、念のためアクティベートを自動で行う処理を追加しました。**
|
7
7
|
**仕組みとしては、マクロの最後で10秒に1回TABキーを押下するPowerShellコマンドを実行しています。**
|
8
8
|
**入力領域が範囲選択されていることが前提となりますので、方向キーなどで範囲選択を解除しないようにご注意下さい。**
|
9
9
|
|
2
アクティベートを自動で行う処理を追加しました。
answer
CHANGED
@@ -2,7 +2,12 @@
|
|
2
2
|
|
3
3
|
マトリクスを作成した後、**入力領域を範囲選択し**(←ここが大事です)、入力→TAB押下→入力...と操作を繰り返していけば、普通に順番に入力できると思います。
|
4
4
|
|
5
|
+
**追記:**
|
6
|
+
**アクティベートを自動で行う処理を追加しました。**
|
7
|
+
**仕組みとしては、マクロの最後で10秒に1回TABキーを押下するPowerShellコマンドを実行しています。**
|
8
|
+
**入力領域が範囲選択されていることが前提となりますので、方向キーなどで範囲選択を解除しないようにご注意下さい。**
|
9
|
+
|
5
|
-
|
10
|
+
質問者様のVBAコードを一部修正したものも載せておきます。
|
6
11
|
(修正したのは最後の処理のみで、あとはインデントを付けただけです)
|
7
12
|
|
8
13
|
```VBA
|
@@ -46,5 +51,32 @@
|
|
46
51
|
|
47
52
|
'入力領域を範囲選択
|
48
53
|
this_sheet.Range(Cells(2 + 1, 6 + 1), Cells(2 + UBound(Files_1), 6 + UBound(Files_2))).Select
|
54
|
+
|
55
|
+
'自動アクティベート
|
56
|
+
Call 連続キー押下("{TAB}", UBound(Files_1) * UBound(Files_2))
|
49
57
|
End Sub
|
58
|
+
|
59
|
+
Sub 連続キー押下(ByVal keyString As String, ByVal cnt As Long, Optional ByVal interval As Integer = 10)
|
60
|
+
Dim command As String
|
61
|
+
command = ""
|
62
|
+
|
63
|
+
'PowerShellコマンド生成
|
64
|
+
' 初期処理
|
65
|
+
command = command & "[void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');"
|
66
|
+
command = command & "$keyString='" & keyString & "';"
|
67
|
+
command = command & "$cnt=" & cnt & ";"
|
68
|
+
command = command & "$interval=" & interval & ";"
|
69
|
+
|
70
|
+
' PowerShellウィンドウが表示されフォーカスが移るため、Alt+Tab押下でExcelにフォーカスを戻す
|
71
|
+
command = command & "[System.Windows.Forms.SendKeys]::SendWait('%{TAB}');"
|
72
|
+
|
73
|
+
' 連続キー押下
|
74
|
+
command = command & "for($i=0;$i -lt $cnt;$i++){"
|
75
|
+
command = command & " sleep -s $interval;"
|
76
|
+
command = command & " [System.Windows.Forms.SendKeys]::SendWait($keyString);"
|
77
|
+
command = command & "}"
|
78
|
+
|
79
|
+
'PowerShellコマンド実行
|
80
|
+
Call CreateObject("Wscript.Shell").Exec("powershell -command """ & command & """")
|
81
|
+
End Sub
|
50
82
|
```
|
1
修正箇所を明記
answer
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
|
3
3
|
マトリクスを作成した後、**入力領域を範囲選択し**(←ここが大事です)、入力→TAB押下→入力...と操作を繰り返していけば、普通に順番に入力できると思います。
|
4
4
|
|
5
|
-
念のため
|
5
|
+
念のため、質問者様のVBAコードを一部修正したものも載せておきます。
|
6
|
+
(修正したのは最後の処理のみで、あとはインデントを付けただけです)
|
6
7
|
|
7
8
|
```VBA
|
8
9
|
Sub test_マトリクス順次入力()
|