![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.4ベストアンサー
- 回答日時:
やっと、回答したコードをExcel97で実行できました。
特に問題なく動きました・・・確認ですが、回答に書いた、
『Sheet1に平行、傾き右斜め下向き、右斜め上向きの矢印を書きます。
この3つの矢印に名前ボックス(シート左上)を使って、
平行な矢印に『LineEv』、右斜め上向きに『LineUp』、下向きに『LineDw』の名前をつけます。 』
は、各ボタンと図形を関連付けるために、登録の意味合いで、どこか変更しない位置に3種類の矢印を書いて名前を付けます。
まず、3種の矢印に指定した名前がついているか確認して下さい。
使い方としては、別の矢印を書きたいセルを選択してボタンを押せば、ボタンに対応した矢印が出ます。これは別のボタンを押せば変更できます。
コピーとか貼り付けの処理はしません。
補足によると、シートが毎月、追加(変更)されるようなので、シートに関係しない方法を考えてみました。
また、図形の矢印ではなく、全角の『→』を使って、水平、右上向き、右下向き矢印を書いています。
コードの『45、-45』を変更すれば角度が指定できます。
ツールバーを作っているので、シートに関係なく使用できます。ご参考に。
標準モジュールに貼りつけます。
コマンドバーのアイコンは適当なものがなかったので、水平と上・下矢印にしてあります。
CommandBar_ArrowButtonでコマンドバーを追加
CommandBar_ArrowButtonDelでコマンドバーを削除します。
ここから
↓
'コマンドバー『矢印ボタン』を追加
Sub CommandBar_ArrowButton()
Dim myBar As CommandBar 'コマンドバー
Dim myControl(1 To 3) As CommandBarControl 'コマンドバー内のコマンドボタン
Dim i As Integer 'カウンタ
On Error Resume Next
CommandBars("矢印ボタン").Delete 'コマンドバーの名前を『矢印ボタン』とする
On Error GoTo 0
Set myBar = CommandBars.Add(Name:="矢印ボタン", Position:=msoBarFloating, Temporary:=True)
With myBar
.Protection = msoBarNoChangeDock
.Left = 50
.Top = 100
End With
'コマンドバーにボタンを作る
For i = 1 To 3
Set myControl(i) = myBar.Controls.Add(Type:=msoControlButton, Temporary:=True)
With myControl(i)
Select Case i
Case 1: .TooltipText = "水平矢印です。"
.FaceId = 1142
Case 2: .TooltipText = "右上向き矢印です。"
.FaceId = 1144
Case 3: .TooltipText = "右下向き矢印です。"
.FaceId = 1145
End Select
.OnAction = "'ArrowDrow " & i & "'" 'マクロを割り当て
End With
Next
myBar.Visible = True
End Sub
'文字の『→』を傾きをつけて書く
Sub ArrowDrow(Kubun As Integer)
Dim rg As Range 'セル
Dim ortSet As Long '文字の傾き
Dim rwHeight As Long '最初のセルの高さ
Select Case Kubun
Case 1: ortSet = 0 '水平
Case 2: ortSet = 45 '右上向き
Case 3: ortSet = -45 '右下向き
End Select
Application.ScreenUpdating = False
'複数セルを選択している場合の対応
For Each rg In Selection
rg = "→"
With rg
rwHeight = .RowHeight 'セルの高さを退避
.Orientation = ortSet '文字の傾き
.HorizontalAlignment = xlCenter '水平位置で中央
.VerticalAlignment = xlCenter '垂直位置で中央
.RowHeight = rwHeight 'セルの高さを最初と同じにする
End With
Next
Application.ScreenUpdating = True
End Sub
'コマンドバー『矢印ボタン』を削除
Sub CommandBar_ArrowButtonDel()
On Error Resume Next
CommandBars("矢印ボタン").Delete
On Error GoTo 0
End Sub
この回答への補足
早速、回答をいただきありがとうございます。
やはり、最初の図形を用いた方法では『→』が出てきませんでした。
シートに関係なく使用でできる方法を試そうと思うのですが、
ボタンはどのように作るのでしょうか?
1回目に記述した標準モジュールは消した方がいいんですよね?
当方、マクロについて全くの素人です。
要求しているシート作成について、最後までおつきあいいただければ助かります。
No.5
- 回答日時:
>ボタンはどのように作るのでしょうか?
>1回目に記述した標準モジュールは消した方がいいんですよね?
出ないのは?ですね。では、図形を使わない方法です。
まず、新規ブックを開いて、それに対して行ってみます。
ツール→マクロ→Visual Basic Editor でVBE画面に移り、 挿入→標準モジュール で標準モジュールを挿入し、出てきたコードウインドウに#4のマクロをコピーして貼り付けます。 (#4の↓の下から全部)
シートに戻り、ツール→マクロ→マクロ で
CommandBar_ArrowButton を実行すれば、コマンドバーを追加
CommandBar_ArrowButtonDel を実行すれば、コマンドバーを削除します。
CommandBar_ArrowButtonを実行すれば、3つのボタンを持ったツールバーが、画面左上にできるはずです。
矢印を書くのにこのツールバーのボタンを使います。
セルを選択して、このコマンドバー内のボタンを押せば、ボタンに対応して
→、右上向き→、右下向き→がセルに書かれるはずです。
新規ブックで試して、同じ手順で、目的のブックにマクロを登録します。
その時は、不要なマクロは全て削除したおいたほうがいいでしょう。
この回答への補足
懇切丁寧に回答していただきありがとうございます。
マクロを実行すればよかったのですね。
でもセルの罫線までもが傾いてしまうのはなぜでしょう。
隣のセルと結合すると問題ないのですが・・・。
それと質問を出してからNo.5の回答をいただくまでの間に
エクセルのバージョンを97から2000にあげたのですが、
97の人が矢印ボタンをクリックすると
エラーメッセージ「スタックが不足しています」というようなメッセージが出て
エクセルが強制終了してしまいます。
どなたかわかる方がいらしゃいましたらよろしくお願いします。
No.3
- 回答日時:
Sheet1で行います。
Sheet1にコントロールツールボックスのコマンドボタンを4つ作ります。CommandButton1 Captionは『-』 平行な矢印を書く機能
CommandButton2 Captionは『Up』 右斜め上向き矢印を書く機能
CommandButton3 Captionは『Down』 右斜め下向き矢印を書く機能
CommandButton4 Captionは『Del』 選択したセルにある矢印を消去する機能にします。
選択したセルに既に別の矢印があったら書き換え、複数のセルを選択した時も機能させます。
Captionはコマンドボタンを右クリックしてプロパティを選択してプロパティウインドウを出して設定します。
Sheet1に平行、傾き右斜め下向き、右斜め上向きの矢印を書きます。
この3つの矢印に名前ボックス(シート左上)を使って、
平行な矢印に『LineEv』、右斜め上向きに『LineUp』、下向きに『LineDw』の名前をつけます。
ツール→マクロ→Visual Basic Editor でVBE画面に移り、 表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示します。プロジェクトエクスプローラのSheet1をダブルクリック。出てきたコードウインドウに下記マクロをコピーして貼り付けます。
ここから 4つ目の End Sub まで
↓
Private Sub CommandButton1_Click()
ShapeDrow 0
End Sub
Private Sub CommandButton2_Click()
ShapeDrow 1
End Sub
Private Sub CommandButton3_Click()
ShapeDrow 2
End Sub
Private Sub CommandButton4_Click()
ShapeDrow 3
End Sub
↑
ここまで
次に、VBE画面で、挿入→標準モジュール で標準モジュールを挿入します。
出てきたコードウインドウに下記マクロをコピーして貼り付けます。
ここから End Sub まで
↓
Sub ShapeDrow(Kubun As Integer)
With Worksheets("Sheet1")
Select Case Kubun
Case 0: .Shapes("LineEv").Copy '平行
Case 1: .Shapes("LineUp").Copy '上向き
Case 2: .Shapes("LineDw").Copy '下向き
End Select
End With
Dim selArea As Range '選択範囲
Set selArea = Selection
Dim shp As Shape '図形
Dim rg As Range 'セル
'とりあえず選択範囲内の図形を消去する
For Each shp In Worksheets("Sheet1").Shapes
If Not Intersect(Range(shp.TopLeftCell.Address), selArea) Is Nothing Then
'選択範囲に図形のセルが含まれていれば削除する
shp.Delete
End If
Next
'消去する命令だったら処理を終わる
If Kubun = 3 Then Exit Sub
'選択範囲のセルに全て複写する
For Each rg In selArea
rg.Select
ActiveSheet.Paste
Next
selArea.Cells(1, 1).Select
End Sub
↑
ここまで
シートに戻って、デザインモードを解除します。
矢印を表示したいセルを選択して表示した矢印のボタンを押します。
セルは、単一、複数、Shift・Ctrlキーを使って選択できます。当方Excel2000です。
ご参考に。
この回答への補足
回答、ありがとうございます。
貴殿の回答通り、実施してみたのですが、矢印(矢線)を書くボタン『Up』『Down』等をクリックしても矢印(矢線)がコピーされず、既に書きこまれている矢印が消えてしまいます。
シートは月ごとに増やしていくので『Sheet1』ではなく、『02.06』とし、
該当するコマンドの『Sheet1』を『02.06』に置換しています。
(来月の作業ではこのシートをコピーしてシート名を『02.07』とします)
何か気づいた点があれば、教えていただければ幸いです。
当方のバージョンはExcel97です。
No.2
- 回答日時:
こう言うことをしたいのではないのでしょうか。
質問の意味が良く掴めず、推定して答えています。
外れていたとしても、下記は参考になると思います。ぜひ
やって見てください。
データをA1からB7まで、例えば
14
21
43
56
62
36
42
と入力します。
VBEのModule1に
Sub Test01()
For i = 1 To 7
l = Cells(i, 3).Left
t = Cells(i, 3).Top
h = Cells(i, 3).Height
If Cells(i, 1) < Cells(i, 2) Then
Worksheets("Sheet1").Shapes.AddLine(l, t, l + 20, t + h).Select
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium
Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium
Selection.ShapeRange.Flip msoFlipVertical
Else
Worksheets("Sheet1").Shapes.AddLine(l, t + h, l + 20, t).Select
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle
Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium
Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium
Selection.ShapeRange.Flip msoFlipVertical
End If
Next i
End Sub
と入力し実行します。
A列よりB列の数字が増えていれば、C列に上向き矢印、減っていればC列に下向き矢印をセットします。=の時を今回は割愛しました。
一部マクロの自動記録を使っていますので、特徴が出ています。(Selectionの多出)ご免。
アドバイスありがとうございます。
矢印(矢線)は必ずしも数値で判断させるものではないので
求めているものと若干違いましたが、参考になりました。
No.1
- 回答日時:
お尋ねの内容を取り違えているかも知れませんが――
このようなことでよいのでしょうか?
---------------------------------------------
まず、「平行、右斜め上向き、右斜め下向き」の3つの矢印の図形を、それぞれ適当なフォルダに適当な名前で保存してください。
次に当該ブックを開き、[ツール]-[マクロ]-[VisualBasicEditor] で起動される画面から [挿入]-[標準モジュール] と進み、開いた編集画面に次のコマンドをコピーしてから、Editor を閉じてください。
'---- ここから ----------
Sub 水平矢印()
ActiveSheet.Pictures.Insert("aaaaa").Select
End Sub
Sub 上昇矢印()
ActiveSheet.Pictures.Insert("bbbbb").Select
End Sub
Sub 下降矢印()
ActiveSheet.Pictures.Insert("ccccc").Select
End Sub
'---- ここまで ----------
aaaaa、bbbbb、ccccc は、図形保存場所のフルパスに置き換えてください。
次に、ワークシートの一番上あたりの使っていないセルに、保存した3つの矢印の図形を呼び出して並べてください。
並べた図の中の「平行」を示す図形を右クリックして「マクロの登録」を選択し、表示されたボックスから「水平矢印」マクロを選択して[OK]。
他の2つについても同様の操作で、該当するマクロを選択します。
-------------------------------------------------
以上です。
あとは、矢印を描きたいセルをクリックしてから、マクロを割り当てた図形をクリックしてください。
この回答への補足
回答ありがとうございます。貴殿の回答にある、『平行、右斜め上向き、右斜め下向き」の3つの矢印の図形を、それぞれ適当なフォルダに適当な名前で保存』というのは、別のブック(エクセルファイル)に作成して保存することなのでしょうか?それとも、それぞれの矢印(矢線)を画像として保存させることなのでしょうか?コマンドをみると後者のほうと解釈できるのですが・・・・。
補足日時:2002/06/06 15:35お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(教育・科学・学問) グーグルスプレッドシートの図形描画のバグ?「保存して終了」ボタンが突然消失 2 2022/04/05 13:11
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- PowerPoint(パワーポイント) パワーポイント。2つの矢印のワイプ&消滅の順番に実施、これの繰り返し 2 2023/07/25 09:13
- PowerPoint(パワーポイント) 2016EXCEL→2016PowerPointにコピペすると図形がゆがみます 5 2022/03/31 11:44
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- CAD・DTP 「機能ブロック図」の描画用フリーソフトを教えてください 1 2022/09/23 16:12
- Excel(エクセル) 判定結果に応じて〇印(図形)をつけるマクロ 4 2022/10/30 11:22
- Excel(エクセル) エクセルの表示形式について教えてください あるセルの「A」という値と、別のセルの「B」という値を組み 4 2023/02/21 21:55
- Word(ワード) 質問タイトル Word2021で作成した文書を「ネットプリント」で写真画質印刷したい Word202 1 2022/08/23 13:20
- グループウェア 午睡チェックアプリを探しています 2 2022/12/20 08:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Wordに曲がった矢印を挿入した...
-
Excelのオートシェイプで2箇所...
-
このクラシックの曲名を教えて...
-
寸法公差と寸法交差
-
エクセルで矢印の太さを変えたい
-
画像から寸法が読み取れるソフ...
-
OpenOfficeのCalcで矢印は...
-
ワードの使い方・回転矢印?の...
-
曲線のブロック矢印の作り方と...
-
JPEG画像に矢印つきの寸法線を...
-
AutoCAD LT2002 寸法値の切捨て...
-
Auto CADの寸法線の分解方法
-
エクセル コメントの矢印線を...
-
パワポ 矢印について
-
JW-cadの寸法の矢印の大きさを...
-
組立公差の規格を教えてください
-
図形描画を作成ボタンを作成す...
-
AutocadLT寸法値の優先に関し教...
-
【illustrator】角丸長方形を曲...
-
【Bridge CS5.1】設定について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Wordに曲がった矢印を挿入した...
-
Excelのオートシェイプで2箇所...
-
寸法公差と寸法交差
-
このクラシックの曲名を教えて...
-
画像から寸法が読み取れるソフ...
-
JW-cadの寸法の矢印の大きさを...
-
携帯のインターネットの電波マ...
-
ワードの使い方・回転矢印?の...
-
JPEG画像に矢印つきの寸法線を...
-
ACCESS 直線ツールの矢印
-
Auto CADの寸法線の分解方法
-
エクセル コメントの矢印線を...
-
AutocadLT寸法値の優先に関し教...
-
エクセルでセルに数値を入力す...
-
東西南北の矢印
-
autocad 特殊記号
-
エクセルで矢印の太さを変えたい
-
イラストレーターCS2のことで教...
-
イラストレーターでの面付け方...
-
組立公差の規格を教えてください
おすすめ情報