|
▼ひげくま さん:
下記解説ありがとうございます。
↓を踏まえ下記のようにしてみたのですが
どうしてもsheet2のK[11]が右へ行かず下改行してしまいます。
下記の説明ですと
Case 11
If Snm = "Sheet1" Then
が重複してしまうのでまずいと思うのですがいかがですか?
Sub JumpCell3()
Dim Snm As String
If TypeName(Selection) <> "Range" Then Exit Sub
Snm = ActiveSheet.Name
With ActiveCell
Select Case .Column
Case 3, 8, 9, 10
If Snm = "Sheet1" Or Snm = "Sheet2" Then
.Offset(, 1).Select
Else
.Offset(1).Select
End If
Case 4, 6
If Snm = "Sheet1" Or Snm = "Sheet2" Then
.Offset(, 2).Select
Else
.Offset(1).Select
End If
Case 11
If Snm = "Sheet1" Then
.Offset(1, -8).Select
Else
.Offset(1).Select
End If
Case 1, 2, 5, 6, 7, 12, 13, 14, 15, 16, 17, 18, 19
If Snm = "Sheet2" Then
.Offset(, 1).Select
Else
.Offset(1).Select
End If
Case 20
If Snm = "Sheet2" Then
.Offset(, 2).Select
Else
.Offset(1).Select
End If
Case 22
If Snm = "Sheet2" Then
.Offset(1, -21).Select
Else
.Offset(1).Select
End If
Case 129
If .Row = 14 Then
If Snm = "Sheet1" Or Snm = "Sheet2" Then
.Offset(40, -3).Select
Else
.Offset(1).Select
End If
Else
.Offset(1).Select
End If
Case 126
Select Case .Row
Case 54, 56, 58, 60
If Snm = "Sheet1" Or Snm = "Sheet2" Then
.Offset(, 11).Select
Else
.Offset(1).Select
End If
Case Else: .Offset(1).Select
End Select
Case Else
.Offset(1).Select
End Select
End With
End Sub
>>ありがとうございます。F8で確認しました確かに飛んでしまいます。
>
>Select Case 構文では、「飛んでしまう」のが異常な動作なのではなく、「飛ぶ」のが当たり前なのです。
>そういうコードを書いているのです。
>
>なので、たとえば
>
> x = 1
> Select Case x
> Case 1
> y = 10
> Case 1
> y = 20
> Case 1
> y = 30
> End Select
>
>のように Case 1 をたくさん書いても、最初の Case 1 の y = 10 しか実行されずに、y の値は 10 になります。
>
>これは理解していますか?
|
|