今、VBAで任意の範囲にあるデータをコピーする関数を作っています。
以下がそのプログラムです。
VBA
1Function コピー関数() 2Dim input_rg As Range 3Dim output_rg As Range 4Set input_rg = Application.InputBox("コピーするセルを選択してください", Title:="入力フォーム", Type:=8) 5Set output_rg = Application.InputBox("貼り付け先を選択してください", Title:="出力フォーム", Type:=8) 6 7If input_rg = False Or output_rg = False Then 8 End 9End If 10 11input_rg.Copy Destination:=output_rg 12 13 14End Function
これを実行すると、「型が一致しません」というエラーを吐き出します。
場所は[Set input_rg = Application.InputBox("コピーするセルを選択してください", Title:="入力フォーム", Type:=8)]の場所です。
このエラーメッセージを受けて
以下の様にしました。
VBA
11.イミディエイトウィンドウでセルのアドレスと型を調べました。 2?input_rg.address 3$C$3:$F$3 4?typename(input_rg) 5Range 6?typename(output_rg) 7Range 8?output_rg.address 9$C$10:$F$10 10 112.型をrange型からVariant形に変更しましたが、同じエラーを吐き出します。 12
回答の程、宜しくお願いします。
回答を受けて
まず、回答ありがとうございます。コメント欄に書こうか迷ったのですが、長文になりそうなのでこちらに書かせていただきます。
回答をいただいて、改めて実行した所、エラーを吐き出すことなく実行できました。
ただ、application
のinputbox
のダイアログボックスでキャンセルを選択すると、再び[型が一致しません]というエラーを吐き出します。
調べたところ、inputboxのキャンセルの戻り値はFalseらしいです。
回答を頂いて恐縮ですが、この点を踏まえて、再度回答をしていただけると嬉しいです。
回答2件
あなたの回答
tips
プレビュー