商品の一覧を表す、エクセルの表の内、ある行の商品の注文が中止になったとします。その時の表示の方法として、図形描画の直線で、取り消しラインを引いてあるとします。セルの書式の取り消しを使ってくれれば、簡単にその行を特定できるのでは?と思いますが、書式の取り消しラインは、文字の上しか取り消しラインを引かないので、わかりにくため、描画を使っているそうです。(これは、相手方のルールなので、変更はできないとします。)
で、セルの上に図形描画のラインが引かれているセルを特定することって出来るのでしょうか?当然、ラインは、必ずしも水平直角に引かれているとは限りません。どなたか?詳しい方がいらっしゃいましたら、教えて頂けないでしょうか?(もしかして、数学の幾何学のカテゴの方がいいのかなぁ?)
さらに、難しことを考えると切りが無いのですが、できれば、複数行にまたがったセル範囲に対して、斜めのラインで消している場合についても教えて頂ければ幸いに存じます。
宜しくお願い致します。
No.4ベストアンサー
- 回答日時:
こんばんは。
オートシェープのラインだけ拾うなら。
Sub TestProc()
Dim L As Line
Dim rRet As Range, rTmp As Range
For Each L In ActiveSheet.Lines
Set rTmp = Range(L.TopLeftCell, L.BottomRightCell)
If rRet Is Nothing Then
Set rRet = rTmp
Else
Set rRet = Union(rRet, rTmp)
End If
Set rTmp = Nothing
Next
If Not rRet Is Nothing Then rRet.Select
Set rRet = Nothing
End Sub
ご回答ありがとうございます。
早速試してみました。
何をやっているのかを解析するのに時間がかかったのと、仕事の時間になってしまい。返事が大変遅くなりました。すみませんでした。
サンプルファイルまで作って頂き本当にありがとうございます。
ありがたく、活用させて頂きたく存じます。
ヘルプで調べれば、Rangeに引数が2つあり、サンプルでも同じような使用方法が紹介されているのですが、実際に自分が作りたいものに使用できないものだなぁ!って痛感しました。発想のレベルが違うんですね?今後とも、よろしくお願いいたします。
No.3
- 回答日時:
ジャンプ機能を使ってオブジェクトを選択する方法があります。
1) メニューバーの「編集」→「ジャンプ」を選択します。
2) 「セル」ダイアログの「セル選択」ボタンを押します。
3) 「選択オプション」ダイアログで、「オブジェクト」のラジオボタンをオンにして「Ok」を押します。
4) シートに挿入されているオートシェイプを含むすべての「オブジェクト」が選択されます。
No.2
- 回答日時:
直線を指定することで、その直線が引かれているセル範囲をプログラム的に知りたいとして、ユーザ定義関数を作ってみました。
ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入します。出てきたコードウインドウに下記マクロをコピーして貼り付けます。
水平な直線、垂直な直線、複数行にまたがった斜めの直線について、その直線の先端と終端のセル位置を返す関数です。直線の左の方が先端、右の方が終端です。
また、斜めの直線の場合は、左上から右下に向かう直線の場合は左上が先端、右下が終端。
左下から右上に向かう直線の場合は、表示方法が異なるので、確かめてください。
斜めの場合は、その直線を含む矩形範囲のセルの左上から右下に向けてのセル位置を表示します。(分かりにくい?)
これはユーザ定義関数ですが引数は、「直線 1」を調べる場合は、=Line2Cell("Line 1") のようにします。
「直線 1」は名前ボックスで分かるはずです。
'// 直線の先端を終端位置のセル座標を返す関数
Function Line2Cell(LineName As String)
Dim TopCell As String '// 先端セル
Dim BottomCell As String '// 終端セル
With ActiveSheet.Shapes(LineName)
'// 先端セル
TopCell = Cells(.TopLeftCell.Row, .TopLeftCell.Column).Address(0, 0)
'// 終端セル
BottomCell = Cells(.BottomRightCell.Row, .BottomRightCell.Column).Address(0, 0)
Line2Cell = TopCell & ":" & BottomCell
End With
End Function
このようにセル座標を求めることはできますが、どのように使うのでしょう?
ということで、下は直線が引かれた範囲を順に表示していきます。ご参考に。
'// 直線が引かれた範囲を表示していく
Sub Line2CellPrint()
Dim sp As shape
Dim TopCell As String '// 先頭セル
Dim BottomCell As String '// 最終セル
For Each sp In ActiveSheet.Shapes
With sp
TopCell = Cells(.TopLeftCell.Row, .TopLeftCell.Column).Address(0, 0)
BottomCell = Cells(.BottomRightCell.Row, .BottomRightCell.Column).Address(0, 0)
MsgBox TopCell & ":" & BottomCell
End With
Next
End Sub
ご回答ありがとうございます。
自分のマクロにどのように活用できるか、考えてみたいと思います。
本当にありがとうございました。
今後ともよろしくお願いいたします。
No.1
- 回答日時:
罫線でない(罫線ならセルの角を必ず使っている)、
フォントの取り消しでない、なら
図形描画で書いてある線だと思います。
オートシェイプの選択、で近くをクリックすれば
線の両端に丸印が付くので、すぐわかると思います。
早速の回答ありがとうございます。
私の質問の仕方が悪かったのですが、VBAで捕まえようとしていました。質問者は、自分の意図するものを確実に相手に使えることについて注意を払うべきだと感じました。本当に、ご迷惑をお掛け致しました。これに懲りずに、今後とも、よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Excel(エクセル) エクセルにおいてセル内の文字を出来るだけ大きく表示する方法を教えてください。 4 2022/07/30 08:08
- Excel(エクセル) エクセルの数式について教えてください。 7 2023/06/18 10:16
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Excel(エクセル) エクセルで重複データを行ごとに抽出したい 4 2022/12/05 08:18
- Excel(エクセル) Excelで数式をそのままコピーしたい どうすればいいですか? 4 2022/09/16 02:16
- Excel(エクセル) Excelのセル上の日付の不具合 3 2022/05/22 18:20
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- Excel(エクセル) 重複データの抽出について 2 2023/07/21 14:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セルをクリック⇒そのセルに入力...
-
対象セル内(複数)が埋まった...
-
エクセル 足して割る
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
Excelのチェックボックスの使い...
-
エクセル オートフィルタで絞...
-
Excelで住所を2つ(町名迄と番...
-
セルに特定の色が付いていたら...
-
枠に収まらない文字を非表示に...
-
Excel:指定セル以下全てのセル...
-
貼り付けで複数セルに貼り付けたい
-
EXCEL VBA セルに既に入...
-
excelの特定のセルの隣のセル指...
-
エクセルの一つのセルに複数の...
-
Excelで、「特定のセル」に入力...
-
Excelでのコメント表示位置
-
【Excel】 セルの色での判断は...
-
エクセルで縦に1112223...
-
セルの高さ(行高)を求めるには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
Excelで数式内の文字色を一部だ...
-
セルをクリック⇒そのセルに入力...
-
Excelでのコメント表示位置
-
エクセル 足して割る
-
excelのCOUNTIF関数で、『範囲=...
-
EXCEL VBA セルに既に入...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
Excel2003 の『コメント』の編...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
複数のセルのいずれかに数字が...
-
枠に収まらない文字を非表示に...
-
excelの特定のセルの隣のセル指...
おすすめ情報