・▲または▼ボタンで10行ごと上下移動(挿入とコピペと行削除)します。
・(Application.Caller).TopLefで行番号を取得するマクロを書きました。
VBA
1Sub 上に行移動() 2 3Dim ssU As Object: Set ssU = ActiveSheet.Shapes ' 面倒なので変数に入れる 4Dim o As Integer 5Dim j As Integer: j = 1 6 7Application.ScreenUpdating = False 'チラついて五月蝿いのを防止 8 9 o = ssU(Application.Caller).TopLeftCell.Row 10 Debug.Print o 11 12 If o <> 8 Then 13 Range(o - 10 & ":" & o - 10).Select 14 For j = 1 To 10 15 Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 16 Next j 17 Rows(o + 10 & ":" & o + 19).Select 18 With Selection 19 .Cut Destination:=Rows(o - 10 & ":" & o - 1) 20 .EntireRow.Delete Shift:=xlUp 21 End With 22 End If 23 24Application.ScreenUpdating = True 25 26最上最下ボタン無効 27 28End Sub 29Sub 下に行移動() 30 31Dim ssD As Object: Set ssD = ActiveSheet.Shapes ' 面倒なので変数に入れる 32Dim p As Integer 33Dim j As Integer: j = 1 34 35Application.ScreenUpdating = False 'チラついて五月蝿いのを防止 36 37 p = ssD(Application.Caller).TopLeftCell.Row 38 39 Rows(p - 5 & ":" & p - 5).Select 40 For j = 1 To 10 41 Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 42 Next j 43 Rows(p + 15 & ":" & p + 24).Select 44 With Selection 45 .Cut Destination:=Rows(p - 5 & ":" & p + 4) 46 .EntireRow.Delete Shift:=xlUp 47 End With 48 49Application.ScreenUpdating = True 50 51最上最下ボタン無効 52 53End Sub 54```図は保存終了後閉じて、開き、▲を押下した際の現象です。18とか28を取得してほしいのですが、なぜか8を取得します。押下しても8の時は静止させているため当然変化はありません。 55 56また、時々([ファイル更新]の後だったり、[集計]の後だったり、▲▼ボタン押下の後だったりします)「""」というselectできないshapeが入り込み、例えば上図ではshape数は12ですが、▲▼ボタン押下後に13になったりすることがあります。そうなると正常に▲▼ボタンは動きません。 57 58素人があれこれいじっているため、私の気のつかないところ、書ききれないところに遠因があるのではとも疑い、ファイルをクラウド(リンク削除)に置き診ていただこうと思いました。 59「年間集計表」を開くと他の3つのファイルを読み込み、上図の状態を再現します。 60 61なにがしかご教授いただけますと幸いです。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/13 11:25
2017/11/13 14:29 編集
2017/11/14 00:32 編集
2017/11/14 04:35