初心者です。質問させて下さい。
inputboxでhelpを参照すると、typeの指定は以下ですが、
値 意味
0 数式
1 数値
2 文字列 (テキスト)
4 論理値 (True または False)
8 セル参照 (Range オブジェクト)
16 #N/A などのエラー値
64 数値配列
やはり、図形を選択させる事は不可能でしょうか?
具体的には、
マクロ実行中にinputboxを表示させて、図形を選択させ、図形名を表示させて、その図形を既定の図形に設定させたいと思っています。
図形を一つ選択した状態ならば、その図形の名前は以下のコードのように取得できるのですが、inputboxでは図形がなぜか選択できないです。
そもそも、inputboxを使用しようと思ったのは、他のコマンドやツール等が非選択状態になること、またマクロ実行の途中で一時中断することができ、これらの条件は便利だし必要だと思ったからです。
inputboxは何かで設定を変える等で図形を選択できるのでしょうか?無理でしょうか?
また、代替的なものは他にあるのでしょうか?
Sub testA()
Dim Def As Object
Set Def = Excel.Selection
If TypeOf Def Is Excel.Rectangle Then
MsgBox (Def.Name)
End If
End Sub
無理な質問かもしれませんが、どなたか御教授お願い致します!
No.3ベストアンサー
- 回答日時:
オブジェクト選択ツールをユーザーフォームで自作するのは、かなりたいへんでしょうねぇ。
マクロ実行の途中で一時中断して何かさせる、という観点で、
オフィスアシスタントを使う手もあります。
Sub Sample()
With Assistant
.On = True
.Visible = True
'.Sounds = True
.Filename = "saeko.acs"
With .NewBalloon 'bln
.BalloonType = msoBalloonTypeButtons 'Numbers
.Button = msoButtonSetOK
.animation = msoAnimationWorkingAtSomething
.Labels(1).Text = "図形を選択してOKをクリックしましょう。"
.Mode = msoModeModeless
.Callback = "test00"
.Show
End With
End With
End Sub
Sub test00(bln As Balloon, lbtn As Long, lPriv As Long)
Dim Def As Object
Set Def = Excel.Selection
If TypeOf Def Is Excel.Rectangle Then
MsgBox (Def.Name)
End If
bln.Close
'Assistant.On = False
End Sub
Sampleマクロは終了して、バルーンのボタンクリックで
イベントプロシージャのように、test00が走ります。
まあ、こんなことも出来る、という程度の情報ですが。
本格的にバルーンをたくさん用意して作りこんでいけば、
ウィザード形式のものを作成できるようです。
この回答への補足
御回答ありがとうございます!
オフィスアシスタントというのは初めて聞きました!
ウィザード形式までできてしまうとは、すごいですね!!
折角コードまで描いて頂いたのですが、
Assistant.On = True がどうも実行できないようです。
PCの設定の問題でしょうか?(winXp sp3 excel2007)
(msconfigで若干何かをoffにした記憶あり・・・)
まずはNNAQさんが描いてくれたコード自体を、理解できるように、頑張ってみます!!
No.4
- 回答日時:
Officeアシスタントは、excel2007では廃止になりました。
http://officetanaka.net/excel/excel2007/041.htm
無駄な回答ですいませんでした。
さて、図形の操作はよく分からないので、簡単に。
フリーフォームの形状はこんなふうに、取得できるのではないでしょうか。
With Selection.ShapeRange
MsgBox .Type = msoFreeform
MsgBox .Nodes.Count
With .Nodes(1)
MsgBox .EditingType
MsgBox .SegmentType
End With
End With
節点の数だけループさせることになると思いますけど。
オートシェイプの規定値がどうなっているのかは、取得方法が分かりませんでした。
NNAQさん御回答どうもありがとうございます!!
返答が遅れてすいません。
おぉ!!フリーフォームの形状も取れるのですね!!
そうですか、Officeアシスタントに期待しましたが、なくなったのですか。。。
しかし、Excel2007は図形に関しては結構仕様が変わったというか、自動マクロ記録もできないし、textframe2なんか出来てしまったし、前からVBAをされてた方からすると不便でしょうね。。。始めたばかりなのでただただ難解だと思うばかりですが。。。
オートシェイプの規定値調べてくれてありがとうございます!
NNAQさんでも分からなければ、無理な気がしますが、
これは気になるのでもう一度、質問しなおしてみます。すいません。
またどうぞ宜しくお願い致します!!
No.2
- 回答日時:
こんにちは。
> 発想を転換してユーザーフォームで頑張る以外ないという事でしょうか?
「オートシェイプを規定値に設定」って
一般機能で図形を右クリックして処理できますよね。
ユーザーフォームまで持ち出してマクロを組む必要があるのか
私にはわかりません。
この回答への補足
御回答ありがとうございます!返答が遅れてすいません。
はじめはそれで良いと思っていたのですが、
右クリックに出てくる「既定の図形に設定」ではなくいわゆるフォーマットとして定めたいのです。説明が不完全でした。すいません。
そもそも「既定の図形に設定」の情報は取得できるのでしょうか?
SetShapesDefaultProperties メソッドだと、図形の書式の設定だけで、読み取りできるのでしょうか?
また、TypeName や MsoShapeType や MsoAutoShapeType 等、フリーフォームの形状の情報までは取得しないのではないか思い、代案の現在に至りました。
OtenkiAmeさんのおっしゃる通りですが、もう少し頑張りたいと思います。
OtenkiAmeさん御回答どうもありがとうございました!
「オートシェイプを規定値に設定」の情報取得という質問のテーマが絞れました!
御指導頂きどうもありがとうございます!!
No.1
- 回答日時:
こんにちは。
> また、代替的なものは他にあるのでしょうか?
選択したセル範囲と各図形のセル範囲をIntersectで調べて設定するようにしたら如何でしょうか?
Dim Sentaku As Range
Dim Zukei As Shape
On Error Resume Next
Set Sentaku = Application.InputBox( _
Prompt:="規定値にしたい図形を描いたセルを選択" & vbCr & _
"(図形にかかっていればOK!)", Type:=8)
On Error GoTo 0
If Sentaku Is Nothing Then Exit Sub
For Each Zukei In ActiveSheet.Shapes
If Not Application.Intersect( _
Sentaku, Range(Zukei.TopLeftCell, Zukei.BottomRightCell)) Is Nothing Then
MsgBox Zukei.Name
'Zukei.SetShapesDefaultProperties
Exit Sub
End If
Next Zukei
Set Sentaku = Nothing
この回答への補足
御回答ありがとうございます!
実際に使った事はなかったのですが、
Intersect と TopLeftCell と BottomRightCell で図形を絞り込んで行く方法は、色々調べて拝見した事がありました。
この方法も有効だと思っています。
なので、具体的にコードを記述して頂き、ありがとうございます!
(初心者なので、よくわからないミスや勘違いでコードを通すのは思った以上に進まないものなので。。。)
しかし inputbox がどうしてもセル選択用であるなら、発想を転換してユーザーフォームで頑張る以外ないという事でしょうか?
ユーザー定義のツール?等も候補でしょうか?
セル範囲の選択よりもオブジェクトの選択ツールの方がより確実に図形を選択できると思っているので、inputbox が残念でなりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/22 11:43
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/06/19 10:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
指定範囲内で図形等を削除する...
-
エクセルで図形やワードアート...
-
Office365 のExcelでオブジェク...
-
word2010 SmartArtで連絡網作...
-
Excel に貼り付けた図形が、勝...
-
jwCAD 登録した図形を呼び出し...
-
エクセル マクロで、選択してい...
-
EXCELでのデータ及び図形...
-
Excel組織図を横に展開する方法...
-
マクロで選択した図形の選択状...
-
図形の特定の色を一括置換する...
-
Creative Cloudフォトプランで...
-
パワーポイント(2016)、線を...
-
オートシェイプで任意のドーナ...
-
イラストレーターには“書式のコ...
-
excel vba inputbox
-
境界線をなぞるソフト
-
花子の点線
-
Excel VBA マクロ カラーパレ...
-
パワポなどで弾痕のイラストを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで図形やワードアート...
-
指定範囲内で図形等を削除する...
-
word2010 SmartArtで連絡網作...
-
Excel に貼り付けた図形が、勝...
-
Excel組織図を横に展開する方法...
-
Office365 のExcelでオブジェク...
-
Excel 図形を移動させると複写...
-
ワードの図形をコピー&ペイス...
-
jwCAD 登録した図形を呼び出し...
-
マウスで選択した図形のみVBAで...
-
エクセル マクロで、選択してい...
-
マクロで選択した図形の選択状...
-
オートシェイプで任意のドーナ...
-
パワーポイント(2016)、線を...
-
ワードで大量の図形を一括でグ...
-
JPEG画像をイラストレータの塗...
-
Creative Cloudフォトプランで...
-
Excel2007で「サイズとプロパテ...
-
イラストレーターには“書式のコ...
-
PowerPoint2013で、図形の枠線...
おすすめ情報