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

回答編集履歴

2

体裁修正

2019/11/18 09:57

投稿

TanakaHiroaki
TanakaHiroaki

スコア1065

answer CHANGED
@@ -1,6 +1,5 @@
1
- **<再回答>
1
+ **<再回答>**
2
- **
3
- 想定されるエラーでキャンセルを判定する方法です
2
+ 想定されるエラーでキャンセルを判定する方法を考えてみました
4
3
  ```VBA
5
4
  Function コピー関数()
6
5
  Dim input_rg As Range, output_rg As Range
@@ -26,8 +25,9 @@
26
25
  End Function
27
26
  ```
28
27
 
28
+
29
- **<以下回答は、キャンセルボタンでエラーとなり、解決できていませんでした。>
29
+ **<以下回答は、キャンセルボタンでエラーとなり、解決できていませんでした。>**
30
- **Inputboxのキャンセルの戻り値はFalseなので、Range型ではエラーとなります。
30
+ Inputboxのキャンセルの戻り値はFalseなので、Range型ではエラーとなります。
31
31
  好みでないかもしれませんが、Variant型とすればキャンセルを判定する方法があります。
32
32
  ```VBA
33
33
  Function コピー関数()

1

エラーとなるため再回答

2019/11/18 09:57

投稿

TanakaHiroaki
TanakaHiroaki

スコア1065

answer CHANGED
@@ -1,4 +1,33 @@
1
+ **<再回答>
2
+ **
3
+ 想定されるエラーでキャンセルを判定する方法です。
4
+ ```VBA
5
+ Function コピー関数()
6
+ Dim input_rg As Range, output_rg As Range
7
+
8
+ On Error GoTo myErr
9
+ Set input_rg = Application.InputBox("コピーするセルを選択してください", Title:="入力フォーム", Type:=8)
10
+ Set output_rg = Application.InputBox("貼り付け先を選択してください", Title:="出力フォーム", Type:=8)
11
+ On Error GoTo 0
12
+
13
+ 'hatena19さんの回答
14
+ If input_rg Is Nothing Or output_rg Is Nothing Then
15
+ Exit Function
16
+ End If
17
+ input_rg.Copy Destination:=output_rg
18
+
19
+ myErr:
20
+ If Err.Number = 424 Then
21
+ MsgBox "キャンセルされました。"
22
+ Err.Clear
23
+ Else
24
+ Err.Raise Err.Number
25
+ End If
26
+ End Function
27
+ ```
28
+
29
+ **<以下回答は、キャンセルボタンでエラーとなり、解決できていませんでした。>
1
- Inputboxのキャンセルの戻り値はFalseなので、Range型ではエラーとなります。
30
+ **Inputboxのキャンセルの戻り値はFalseなので、Range型ではエラーとなります。
2
31
  好みでないかもしれませんが、Variant型とすればキャンセルを判定する方法があります。
3
32
  ```VBA
4
33
  Function コピー関数()