「これはヤバかったな」という遅刻エピソード

Excel2010を使っています。

セルを斜めに選択してカットしたいのですが、
セルの数が少ない時には手動でやれば良いのですが
数が多くなると大変な作業になります。

簡単に斜め選択できる方法があれば教えてください。
オートシェイプで直角三角形をAltキー押しながら作成して
その下のセルをカットするみたいな機能はありませんよね??

マクロ使うしかないでしょうか?

A 回答 (4件)

斜めに「どの部分(上?下?)を」操作したいのか不明ですが。


また、具体的に「どこまで斜め(対角線にかかったセル)」を対象にしたいのかも曖昧です。


作成例:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

Sub macro1()
 Dim h As Range
 Dim x0 As Double, x1 As Double
 Dim y0 As Double, y1 As Double
 Dim res As Range
 if selection.areas.count > 1 then exit sub
 if selection.columns.count = 1 then exit sub
 With Selection.Cells(1)
  x0 = .Left + .Width
  y0 = .Top
 End With
 With Selection.Cells(Selection.Cells.Count)
  x1 = .Left + .Width
  y1 = .Top
 End With

 Set res = Selection.Cells(1)
 For Each h In Selection
 If h.Top >= (y1 - y0) * (h.Left + h.Width - x0) / (x1 - x0) + y0 Then
  Set res = Union(res, h)
 End If
 Next
 res.Select
End Sub

ファイルメニューから終了してエクセルに戻る

シート上で「斜めに」セル範囲を選択する
とりあえず矩形上に選択される
その状態からALT+F8を押し、マクロを実行する。


#作り直しはしませんので、「実は違ってました。こーでした」な時はご自分で工夫してみて下さい。
「セルを斜めに選択してカットする」の回答画像3
    • good
    • 1
この回答へのお礼

ありがとうございます。

ずばり、所望通りのことができました。

お礼日時:2014/10/11 12:05

No.2です。



>試してみたのですが
>右クリックしても何も起こらないのですが・・・・

(1)シートモジュールになっているのでしょうか?
(2)シートモジュールになっていて「何も起こらない」というコトであれば
範囲指定後、その選択されている範囲内で右クリックをしているかどうか?
他の場所で右クリックすると何も変化ありません。

↓の画像はB5~B10セルを範囲指定 → 範囲しているセル内で右クリック
これで右側のように選択されます。

前回書いたように1列のみ選択 → 右クリックしてみてください。

当方もExcel2010で前回のコードをシートモジュールとしてコピー&ペーストしてやってみると
ちゃんと↓のように選択できました。

※ No.3さんの方法とは異なり、1セルずつずらして選択しています。
※ すでに解決済みのようですので、参考程度で・・・m(_ _)m
「セルを斜めに選択してカットする」の回答画像4
    • good
    • 0
この回答へのお礼

ありがとうございます。

できました。
範囲指定したい行数の1列だけを範囲指定

範囲指定したい行数の1行だけを範囲指定
と勘違いしていました。

ただ、この方法だと選択できるのは行数だけで
選択する列数を選べないですよね・・・?

お礼日時:2014/10/11 12:56

こんばんは!



>セルを斜めに選択してカットしたいのですが
具体的な範囲が判らないので、勝手にやってみました。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り
斜めに範囲指定したい行数の1列だけを範囲指定 → 右クリックしてみてください。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 'この行から
Dim i As Long, j As Long, cnt As Long, myRng As Range
If Selection(1).Column = Selection(Selection.Count).Column Then
Set myRng = Selection(1)
For i = Selection(2).Row To Selection(Selection.Count).Row
cnt = cnt + 1
For j = Selection(1).Column To Selection(1).Column + cnt
Set myRng = Union(myRng, Cells(i, j))
Next j
Next i
myRng.Select
Cancel = True
End If
End Sub 'この行まで

※ 複数列を範囲指定した場合や2行以上範囲指定していない場合
何の変化もありません。

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。

試してみたのですが
右クリックしても何も起こらないのですが・・・・

バージョンは2010ですけど、
何が問題でしょうか?

No.3の回答でとりあえず解決したのですが
代替案を知っておきたいので一応教えていただけないでしょうか?

お礼日時:2014/10/11 12:06

簡単に斜め選択できる方法はありません。



マクロを使うしかないでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報