|
こんにちは。かみちゃん です。
>最初のInputBoxのキャンセルの処理コード
>教えて下さい。キャンセルなら中止
>OKなら継続したいのですが
InputBoxメソッドの戻り値がどのようになるかをヘルプでしっかり確認してくださる
とわかると思います。
Sub Sample2_1()
Dim i As String
'InoutBoxのType引数を省略すると戻り値は文字列になる
i = Application.InputBox("数値を入力してください。")
MsgBox i & vbCrLf & TypeName(i)
End Sub
そこで、以下のようにしてはいかがでしょうか?
Sub Sample2()
Dim rng As Range
' Dim i As Variant
Dim i As Long
Dim A As String
ActiveSheet.Unprotect
Range("BN12:BN27").Select
Selection.ClearContents
Range("BN11").Select
' i = Application.InputBox( _
' Title:="BN列の何行目までですか【エンドまでの行数】", _
' Prompt:="行数を入力しなさい。", _
' Default:=10, _
' Left:=500, _
' Top:=350, _
' Type:=1)
i = Val(Application.InputBox( _
Title:="BN列の何行目までですか【エンドまでの行数】", _
Prompt:="行数を入力しなさい。", _
Default:=10, _
Left:=500, _
Top:=350, _
Type:=1))
' If Not rng Is Nothing Then
' ★★この辺のキャンセルの処理がよくわからないのですが
'どう書けばいいのでしょうか。★★
' MsgBox "キャンセルしました"
If i = 0 Then
MsgBox "行指定をキャンセルしました"
Exit Sub
End If
' On Error Resume Next
A = ActiveCell.Address
On Error Resume Next
Set rng = Application.InputBox( _
Prompt:="コピー元セルは?", _
Default:=A, _
Left:=500, _
Top:=350, _
Type:=8)
On Error GoTo 0
If Not rng Is Nothing Then
If rng.Count = 1 Then
rng.Resize(i + 1).Formula = rng.Formula
Else
MsgBox "複数のセルは指定できません"
End If
Else
MsgBox "キャンセルしました"
End If
Application.Goto Reference:="R11C67"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
End Sub
|
|