|
試してみてください。
メッセージボックスがでる場合、最初に提示した
> シート名『1』のセルA5に数字「1」を入力するとシート名『A』のセルB20の
> 値をシート名『1』のセルA6に貼り付ける。
> シート名『1』のセルA5に数字「2」を入力するとシート名『B』のセルB20の
> 値をシート名『1』のセルA6に貼り付ける。
が間違っています。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Sh As String
With Target
' A5以外の変更は何もしない
If .Address(0, 0) <> "A5" Then Exit Sub
' セルの数が1で無い場合も何もしない
If .Cells.Count > 1 Then Exit Sub
' セルの値で切り分け
Select Case .Value
Case 1: Sh = "A"
Case 2: Sh = "B"
' 1, 2ではない
Case Else
MsgBox "1か2じゃねぇよ。"
Exit Sub
End Select
Application.EnableEvents = False
On Error Resume Next
' 指定のシートのB20の値をA6に入れる
.Offset(1).Value = Worksheets(Sh).Range("B20").Value
If Err.Number <> 0 Then
MsgBox "'" & Sh & "'ってシートないじゃん。"
End If
On Error GoTo 0
Application.EnableEvents = True
End With
End Sub
ついでに、類似スレ
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=38974;id=excel
も参考にしてください。
|
|