[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『矢印の自動作成』(AKB)
あるセルの値が00のとき、そのセルの右上端に オートシェイプ上向き矢印↑を作成し、 また、別のセルの値が99のときは、そのセルの右下端に オートシェイプ下向き矢印下を作成するには、 どうしたらよいのでしょうか。 マクロで作成できるのでしょうか? どうかよろしくお願いします。
こんなことじゃないんでしょうが、一応ヒントだけってことで・・ Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) With Target Select Case .Value Case "00" With Me.Shapes.AddLine(.Left + .Width, .Top, .Left + .Width, .Offset(-2).Top).Line .EndArrowheadStyle = msoArrowheadTriangle .EndArrowheadLength = msoArrowheadLengthMedium End With Case 99 With Me.Shapes.AddLine(.Left + .Width, .Top + .Height, .Left + .Width, .Offset(3).Top).Line .EndArrowheadStyle = msoArrowheadTriangle .EndArrowheadLength = msoArrowheadLengthMedium End With End Select End With End Sub (SoulMan)
以前にも類似のものを書いていますが、このようなことは、どうでしょう? (LOOKUP)
1.B列とC列を列幅を狭めておきます。
2.B1のセル内に図の↑、B3に↓を貼り付けておきます。
3.挿入、名前、定義で、右上の名前を参照範囲=IF(Sheet1!$A$1=99,Sheet1!$B$1,Sheet1!$B$2)、 右下の名前で、=IF(Sheet1!$A$3=99,Sheet1!$B$3,Sheet1!$B$4)を各、登録します。
4.C1をコピーして、A1のセルを選択し、編集、Shiftを押しながら図のリンク貼り付け。 同様にC3空白セルをA3に図の貼付をします。図は、A1、A3の右端に移動させます。 A1、A3のセルの書式設定、配置の横位置は、左詰としておきます。
5.A1の右に貼り付けた図をクリックして、数式バーに=右上。 同様にA3に貼り付けた図に=右下と入力します。
これで、準備ができました。A1やA3に99と入力しますと、矢印が表示できます。 B列C列は、見えない列を使用するほうがよろしいでしょう?
返事が遅れて申し訳ありません。ありがとうございました。 おふたりの方法を両方とも試してみましたが、自分の使い方が 悪いのかどうもうまくいきませんでした。 SoulManさんのマクロで作成はできたのですが、セルの値を クリアしたりすると、エラーがでちゃいます。値を参照して オートシェイプを作成するほうがいいのでしょうか。 Calculateを使ったほうがいいのでしょうか。 プログラムの知識がないので、うまく伝えられませんが、 こんなようなことをしたいと思っているんです。 イメージしか伝えられませんが。
Sub Arrows() Sheets("Sheet1").Activate Columns("C:D,G:H,K:L,P:Q,T:U,X:Y").Select IF 範囲内に値が8のセルがある(参照も含む) Then 値が8のセルの右上端に上向き矢印を設定 Else IF 範囲内に値が9のセルがある(参照も含む) Then 値が9のセルの右下端に下向き矢印を設定 End IF End IF End Sub
Sub DeleteArrows() Sheets("Sheet1").Activate Columns("C:D,G:H,K:L,P:Q,T:U,X:Y").Select IF 範囲内のセルの値が8でも9でもない Then そのセルの右上端右下端に設定された矢印を削除(矢印があれば) End IF End Sub
というようなマクロを組みたいのです。 自動でなくてもコマンドボタン登録で問題ないんです。 とにかく動いてくれさえすればうれしいんです。
こちらに統合しました。 (kazu)
返事が遅れて申し訳ありません。ありがとうございました。 おふたりの方法を両方とも試してみましたが、自分の使い方が 悪いのかどうもうまくいきませんでした。 SoulManさんのマクロで作成はできたのですが、セルの値を クリアしたりすると、エラーがでちゃいます。値を参照して オートシェイプを作成するほうがいいのでしょうか。 Calculateを使ったほうがいいのでしょうか。 プログラムの知識がないので、うまく伝えられませんが、 こんなようなことをしたいと思っているんです。 イメージしか伝えられませんが。
Sub Arrows() Sheets("Sheet1").Activate Columns("C:D,G:H,K:L,P:Q,T:U,X:Y").Select IF 範囲内に値が8のセルがある(参照も含む) Then 値が8のセルの右上端に上向き矢印を設定 Else IF 範囲内に値が9のセルがある(参照も含む) Then 値が9のセルの右下端に下向き矢印を設定 End IF End IF End Sub
Sub DeleteArrows() Sheets("Sheet1").Activate Columns("C:D,G:H,K:L,P:Q,T:U,X:Y").Select IF 範囲内のセルの値が8でも9でもない Then そのセルの右上端右下端に設定された矢印を削除(矢印があれば) End IF End Sub
というようなマクロを組みたいのです。 自動でなくてもコマンドボタン登録で問題ないんです。 とにかく動いてくれさえすればうれしいんです。
回答ではありませんが、 質問の続き、返事は元のスレッドに続けて書きましょうね。 |初めての方へ| をご一読下さいね。 (おせっかい)
すみません。ちょっと遅くなってしまいました。 こんな感じでどうでしょうか? Option Explicit Sub てすと() Dim S As Shape Dim C As Range For Each S In ActiveSheet.Shapes If Not Intersect(Selection, Range(S.BottomRightCell.Address)) Is Nothing Then If S.Type = msoLine Then S.Delete End If End If Next For Each C In Selection With C Select Case .Value Case 8 With ActiveSheet.Shapes.AddLine(.Left + .Width, .Top, .Left + .Width, .Offset(-2).Top).Line .EndArrowheadStyle = msoArrowheadTriangle .EndArrowheadLength = msoArrowheadLengthMedium End With Case 9 With ActiveSheet.Shapes.AddLine(.Left + .Width, .Top + .Height, .Left + .Width, .Offset(3).Top).Line .EndArrowheadStyle = msoArrowheadTriangle .EndArrowheadLength = msoArrowheadLengthMedium End With End Select End With Next End Sub (SoulMan)
SoulManさん、すごいです。
何も問題がなくなりました。
これでお仕事が非常に楽になりました。
何度もありがとうございました。
これですっきりお仕事ができます。
ほんとうにありがとうございました。
(AKB)
LOOKUPは、こちらに掲載するときには、必ずテストしています。 記載の入力誤りはよくしますので、この掲載どおり再度実行しましたが、 なんら問題なく、期待どおりの結果が得られます。
図形に名前の定義を通じて別セルをリンクしているだけなのですが、 通常では行わない特別な入力をするため、要件が実現していないのでは、 ないでしょうか?以下をご確認ください。
1.挿入、名前、定義として、名前に右下と右上とが登録されていますか?
2.右下の名前の参照範囲は、 =IF(Sheet1!$A$3=99,Sheet1!$B$3,Sheet1!$B$4) 右上の名前の参照範囲は、 =IF(Sheet1!$A$1=99,Sheet1!$B$1,Sheet1!$B$2) となっていますか?
3.A1、A3のセルの書式設定、表示形式は、標準。 配置の、文字の配置で横位置は、左詰になっていますか?
4.A1、A3のそれぞれのセル内の右側に図形は、貼り付いていますか?
5.それぞれの図形をクリックすると、A1の図形は、数式バーに=右上、 A3の図形は、=右下と表示しますか?
6.B列、C列は、A列の半分くらいの列幅になっていますか?
7.B1に上向き矢印、B3に下向き矢印の図形がセルからはみださずに 貼り付けられていますか? (LOOKUP)
LOOKUPさん、気分を害されたならすみませんでした。 説明不足でした。SoulManさんの方法でもLOOKUPさんの 方法でも確かに目的のことはできました。また、LOOKUPさんの 方法ではエラーがでなかったことも確かです。言葉足らずで 不快な思いをさせて申し訳ありませんでした。 LOOKUPさんには定義という機能の使い方を 教えていただきました。またひとつ賢くなりました。 これに懲りずに機会があれば、また助けてやってください。 ありがとうございました。 (AKB)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.