Visual Basicでフォームに図形を直接描画できる様に、Excelでオートシェイプなどのオブジェクトを使用しないでシートに対して直接、図形(線や円など)を描画する事は可能でしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

オートシェイプを使用しないで、オートシェイプと同じようにシートに関連付いたラインを描画すると言うことですよね?



シートが切り替わったりブックが切り替わるたびに、ラインが可視/不可視になったり、シートのスクロールによってそのラインもスクロールするようなものは、オートシェイプだけだと思います。

力技でラインのような物を画面に表示しても、エクセルがそれをサポートしてなければ、スクロールされてもブックが切り替わっても、ラインは初期の画面表示位置を保ちます。ですので自分でそのタイミングを読み取って、ラインの可視/不可視や表示位置をコントロールしなければなりません。ですので事実上無理な話です。



何か理由があってラインオブジェクトを操作されたくないのですよね?オートシェイプを使用してもよいのであれば・・・

メニューの中の
[ツール]→[保護]→[シートの保護]
を選択することによって、オブジェクトのみをロックすることも可能です。
もし操作可能なオブジェクトと、操作不可能なオブジェクトとして差別をおこないたい時は、それぞれのオブジェクトのプロパティ内に、[保護]という項目がありますので、そちらで設定できます。
    • good
    • 0

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qblenderでのマットオブジェクト作成方法

blenderとvoodoo camera trackerというソフトを用いてマッチムーブ動画を作ろうとしています。
カメラトラッキングは無事に終了し、後はマッチムーブさせたオブジェクトの影と反射を入れるだけの状態です。
ここで、その物体に映った影だけを表示するためのオブジェクトはマテリアル設定のonly shadowボタンにより実現できたのですが、
反射だけを表示するためのオブジェクトの作り方がわかりません。
blenderではそのようなオブジェクトの作成はできないのでしょうか?
できるのなら、その方法を教えていただきたいと思います。
よろしくお願いします。

Aベストアンサー

Planeを用意してRay Transp Fresnelで透明にしてRay Mirror RayMirで反射にしてみたらどうでしょう

QVisual Basic.NETのエラー("オブジェクト参照がオブジェクト インスタンスに設定されていません。")について

DLLを読み込むプログラムで、以下のように宣言した関数"VCread_wave_file"を呼び出そうとすると、
"オブジェクト参照がオブジェクト インスタンスに設定されていません。"
というエラーが出てしまうのですが、なぜなのでしょうか?

プログラムは以下のようになっています。

Public Class Form1
Inherits System.Windows.Forms.Form

Dim status As Integer
Dim wavelength As Long
Dim samplf As Double

Private Declare Function VCread_wave_file Lib "Vcon.dll" (ByVal FileName As String, ByVal tmpFilename As String, ByVal wavelength As Long, ByVal samplingFrequency As Double) As Integer

(中略)

Private Sub ChangeStartButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChangeStartButton.Click

status = VCread_wave_file("rectmp.wav", "rectmp.raw", wavelength, samplf)
Label4.Text = status

End Sub

よろしくお願いいたします。

DLLを読み込むプログラムで、以下のように宣言した関数"VCread_wave_file"を呼び出そうとすると、
"オブジェクト参照がオブジェクト インスタンスに設定されていません。"
というエラーが出てしまうのですが、なぜなのでしょうか?

プログラムは以下のようになっています。

Public Class Form1
Inherits System.Windows.Forms.Form

Dim status As Integer
Dim wavelength As Long
Dim samplf As Double

Private Declare Function VCread_wave_file Lib "Vcon.dll" (ByVal FileNa...続きを読む

Aベストアンサー

そのDLLは知らないのですが、アンマネージならまずその型は合っているかどうかの確認を。
VB.NETではLongは64bit、Integerは32bitに変更されていますので、VB6.0でのLongを意味しているならVB.NETではIntegerです。IntegerならShortになります。

Qテキストボックスなどのオブジェクトの大きさを揃える方法。

OS:XP Excel2000
ばらばらの大きさのテキストボックスやオートシェイプをささっと揃える方法はありませんでしょうか?

Aベストアンサー

追加のご質問に対して

shiftキーを押しながら,揃える図形を
右クリックして,すべてを選択する。
ワークシートの左下
「図形の調整」→「配置/配列」
で整列させることができます。
あとは,すべてが選択されている状態で,
お好きな場所へドラッグして移動します。

Q【EXCEL VBA】オートシェイプをクリックした時にそのオートシェイプの名前を取得したい

ワークシートに多数(60個程度)のオートシェイプが配置されています。それらにはひとつひとつ「名前」をつけています。(オートシェイプ1とかを1日とかに変更しました)
これらのオートシェイプをボタン代わりにマクロを割り当てて実行しようとしています。
そこで、例えば”1日”と名前を定義したオートシェイプがクリックされた時にその名前”1日”を取得する方法が解りません。
説明が下手でうまく伝わっているか心配ですがよろしくお願いします。

Aベストアンサー

こんにちは。
そのような場合はCallerプロパティを使います。 

例えば、オートシェイプ1という名前の図形に
以下のマクロを登録して実行すると、
"オートシェイプ1"という文字列を取得できます。

Sub Macro1()
MsgBox Application.Caller
End Sub

Q【Blender】作成中のオブジェクトに変な面が出来てしまうのですが、理由が分かりません。

初心者です、詳しい方いらっしゃいましたら分析お願い致します。

重複した頂点の有無と法線の向きに問題がないかは一通りチェックしてみたのですが、下記の画像で示しているように、変な面が作成されてしまいます。
スムージングをかけているにも関わらず、突起があるのも不思議に思っています。

一人で困っている状態なので、助けになっていただけたら幸いです。
宜しくお願い致します。

Aベストアンサー

確証はありませんがBlenderのバグかグラフィックボードの問題かなと。
下記URLの記事が参考になるかも。

http://3dcg.homeip.net/3d_hardware/video_card/02_misconception.php

QVisual Basic 2005で作成したソフトは再描画は不要?

Visual Basic 2005で作成したソフトは再描画は不要?

普通は、ウィンドウとウィンドウが被って、上のウィンドウを移動したら下のウィンドウの描画は欠けると思いますが、
なぜか欠けません。

これはVisual Basicが勝手にやってくれているんですか?

質問.
昔と違って、クリッピング領域のみを描画するメソッドを作って高速描画化する必要はなくなったということですか?
逆に別処理で書くと負荷になりますか?

何も書いてないのに、再描画されているのです。

すごくないですか?当たり前ですか?
誰が自動実行して再描画してくれてるんですか・・

Aベストアンサー

やったことは無いですが。
Paintメソッド(なんてあるかは知りませんが)などを使って、
直接描画しているなら再描画は必要じゃないかと思います。
逆に、イメージやラベルなどのオブジェクトを貼り付け、
そこに描画処理を任せているのであれば、再描画の必要は無いです。
そのオブジェクト自体に再描画の処理は組み込まれているので、
たとえば上のウィンドウを移動した場合などは、
ウインドウの再描画イベントが発生し、そこで自動的に
それらのオブジェクトの再描画処理が呼び出されるわけです。

QBlenderとPythonについて

Blenderを勉強中の者です。
BlenderはPythonが必要だと知ってBlenderとPythonをインストールしました。

それぞれのバージョンは、
-Blender ver 2.69
-Python ver 3.3.0
です。

ですが、BlenderがPythonを"認識しているか"又は"認識させる"方法がわかりません。
ver2.6以降のBlenderはPythonが同梱されているという記事も見たことありPythonを
個別にインストールしなくてもいいのか???など
実際、詳しいことが一切わかりませんでした。

今からBlenderを始めるにあたって何をインストールしてどんな初期設定をすればいいか
教えて下さい。

質問がとっちらかってすみません。出来るだけまとめたつもりです。
よろしくお願いします。

Aベストアンサー

Pythonが同梱されているのでインストールしなくても使えます

http://tips.hecomi.com/entry/20120818/1345307205

Blenderは初期の状態でも使えます。なれてきたら、自分のやりたいことに必要なものをインストールやカスタマイズすればいいと思います

QVB6 オートシェイプ描画

VB6 オートシェイプ描画

VB6でExcel,2000(ActiveSheet)にオートシェイプを使用したいのですが、エラーが出てしまいます。
コマンドボタンクリック時、エラー
-------------------------------
実行時エラー'1004':
指定された値は境界を超えています。
-------------------------------
AddLineは出来たのですが四角や円がこのエラーです。どこが間違えているのでしょうか?
宜しくお願いします。
Private Sub CB13_Click()
Dim xlApp As Excel.Application
Set xlApp = GetObject(, "Excel.Application")
xlApp.ActiveSheet.Shapes.AddLine 50, 50, 100, 100 '(OK)
xlApp.ActiveSheet.Shapes.AddShape(msoShapeRectangle, 50, 50, 100, 100).Select '(NG)
Set xlApp = Nothing
End Sub

VB6 オートシェイプ描画

VB6でExcel,2000(ActiveSheet)にオートシェイプを使用したいのですが、エラーが出てしまいます。
コマンドボタンクリック時、エラー
-------------------------------
実行時エラー'1004':
指定された値は境界を超えています。
-------------------------------
AddLineは出来たのですが四角や円がこのエラーです。どこが間違えているのでしょうか?
宜しくお願いします。
Private Sub CB13_Click()
Dim xlApp As Excel.Application
Set xlApp = GetObject(, "Excel.Application")
...続きを読む

Aベストアンサー

参照設定が不十分だからでしょう
msoShapeRectangleが定義されていないので 0として扱われてしまうために後ろの引数が矛盾してしまうのだと思います

『Microsft.Office xx.x Object Library』の参照設定追加するか
Const msoShapeRectangle = 1 を モジュールの冒頭または標準モジュールに記述しましょう

Qblenderかmetasequoiaか

3DのCGを作って、最終的にOpenGLで動かしたいと思っています。
今までOpenGLで頂点指定して3次元物体を
描画していたのですが、
blenderかmetasequoiaでモデリングして
それをOpenGLで読み込んで動かすことができると聞きました。

そこで、blenderかmetasequoiaを使おうと
思っており、どちらを使うか迷っております。
windowsとlinuxのデュアルブートになってるんですが、
基本的にlinuxで作業することが多いので
linuxでも動くblenderが良いかなと思っているのですが、
blenderは使いにくい、という話も聞きました。
たしかにblenderはパッと見、情報も少なそうで
インタフェースも分かりにくそう・・・と思いました。

みなさんはどちらを使っていますか??
どちらがオススメですか??

Aベストアンサー

私は、blenderをwindowsとubuntuで使ってます。

blenderは、確かに、使いにくいとか挫折したって話はよく聞きます。
でも、最初は、基本的な操作とよく使うウィンドウのパネルの設定を覚えるといいと思います。

http://f11.aaa.livedoor.jp/~hige/index.php?%5B%5B%CC%DC%BC%A1%5D%5D
Blender Documentation 日本語版

http://wbs.nsf.tc/tutorial/tutorial_blender.html
WBS+ Blender チュートリアル


http://bmania.blog70.fc2.com/
Blenderで3DCG制作日記

Pythonが使えるのでスクリプトで描画することもできます。
(情報は少なく苦労しました)

http://www.geocities.co.jp/SiliconValley-Cupertino/2019/blender/PythonDocJpn/index.html
The Blender Python API Reference 日本語版

http://d.hatena.ne.jp/gomi-box/20080519/1211159996
OpenGLで遊ぼう


http://video.google.com/videosearch?hl=en&source=hp&q=blender%20tutorial&um=1&ie=UTF-8&sa=N&tab=wv#q=blender+tutorial&hl=en&view=2&emb=0
bleder tutorial

このほかにも、パーティクルや液体のシュミレーションや物理のシュミレーション、ノードエディタで動画のエフェクト(クロマキーやブラーなど)できたりしますのいいですよ!

私は、blenderをwindowsとubuntuで使ってます。

blenderは、確かに、使いにくいとか挫折したって話はよく聞きます。
でも、最初は、基本的な操作とよく使うウィンドウのパネルの設定を覚えるといいと思います。

http://f11.aaa.livedoor.jp/~hige/index.php?%5B%5B%CC%DC%BC%A1%5D%5D
Blender Documentation 日本語版

http://wbs.nsf.tc/tutorial/tutorial_blender.html
WBS+ Blender チュートリアル


http://bmania.blog70.fc2.com/
Blenderで3DCG制作日記

Pythonが使えるのでスクリプトで描...続きを読む

Q図形オートシェイプ内のテキスト検索マクロ作成についての質問

VBS2年目のプログラマーです。
Excelで図形オートシェイプ内のテキストが検索できないので、
マクロを作成してみようと思いましたが2点問題が発生しましたので
解決方法または実現方法をご教授ねがいます。

(目標マクロ機能概要)
(1)InputBoxで検索文字列を入力
(2)検索文字列と一致するテキストを持つ図形を選択
(3)検索文字列と一致する次の図形を検索するかをMsgboxから選択
 (この時、一致する図形は選択されている状態であってほしい)
(4)(3)で次の図形を検索しない、または図形をすべて検索するとマクロ終了
(問題)
1.機能概要(2)の選択される図形が現在のExcel画面外にある場合、画面が移動しないため、どこに検索ヒットした図形があるか使用者がわからない
2.機能概要(3)で、Msgbox実行時に図形選択が表示されず現在どの図形を選択しているのか使用者がわからない

問題1は、autoshapeオブジェクトのtop,left属性などを
使うしかないのかなとぼんやり考えています。

以下、コードです。
お忙しいところ、申し訳ありませんが
以上、よろしくお願いします。
**************************
Sub GetShapesText()
Dim wk_shp As Shape 'オートシェイプ格納変数
Dim wk_search_str As String '検索文字列変数

'*** 検索文字列入力処理 ***
wk_search_str = InputBox("検索する図形オートシェイプのテキストを入力してください。", "オートシェイプ内テキスト検索")
If (Len(wk_search_str) = 0) Then
'検索文字列が未入力の場合は、マクロ終了
Exit Sub
End If

'*** オートシェイプ検索処理 ***
For Each wk_shp In ActiveSheet.Shapes
If InStr(wk_shp.Name, "Line") = 0 Then 'オートシェイプが線(Line)以外の場合のみ以下を処理
If (InStr(wk_shp.TextFrame.Characters.Text, wk_search_str) > 0) Then 'オートシェイプのテキストに検索文字列が含まれる場合のみ以下を処理
wk_shp.Select '検索ヒットしたオートシェイプを選択
wk_next_search_flg = MsgBox("次を検索しますか?", vbYesNo)
If (wk_next_search_flg = 7) Then
'次を検索しない場合は、検索を終了
Exit For
End If
End If
End If
Next
End Sub
**************************

VBS2年目のプログラマーです。
Excelで図形オートシェイプ内のテキストが検索できないので、
マクロを作成してみようと思いましたが2点問題が発生しましたので
解決方法または実現方法をご教授ねがいます。

(目標マクロ機能概要)
(1)InputBoxで検索文字列を入力
(2)検索文字列と一致するテキストを持つ図形を選択
(3)検索文字列と一致する次の図形を検索するかをMsgboxから選択
 (この時、一致する図形は選択されている状態であってほしい)
(4)(3)で次の図形を検索しない、または図形をすべて検索す...続きを読む

Aベストアンサー

こんにちは。
QNo.2107566 を参考にして、TextBoxを使うか、
wk_shp.DrawingObject.Select
...とすれば良いです。
(DrawingObject も TextBox も隠しObjectですが、便利ですよ)


人気Q&Aランキング

おすすめ情報