• 締切済み

エクセル 図形の座標誤差

エクセルで線をグループ化した図形とその図形内の左上の線の座標をselection.top selection.left で取得すると、それぞれで値が異なるときがあります。 また、グループ図形を指定の位置に指定しても(selection.top=100とか)100のところに来ないことがあります。 色々(debug.printを入れたり)していると直ったりします(想定通りの値になる)が、不安定みたいです。 原因と対策がわかれば教えてください。

みんなの回答

noname#232800
noname#232800
回答No.1

CAD の場合、真円合わせってあるんですよ。CADソフトウェアのオプションとかにあります。これが、「0.983342」とか設定し、まんまるになるようにしてます。 このパソコンには JW-CAD ありませんが、JW-CADにも、この設定があった記憶があります。 インチ、尺、メートルといった尺度は換算表があるんですが、画素のピクセルは基準がなく、今見てるディスプレイでノート型だと1280、縦800ありますが、1280x720ってのもあります。(横に広いやつ) それと、印刷機は尺度がインチで始まってます。以前のドットプリンターは「1/6インチ改行」とか「1/8インチ改行」ありましたもん。 で、印刷は「インチ」基準です。 文字の大きさ、ポイント はインチに換算できます。0.3528mm だそうです。 1インチ÷72 で1ポイントだそうです。 全世界、1インチならこの差が生まれないのですがね。 LibreOffice で Write というワードプロセッサーの余白は、25.4mm です。 良いですか、尺度を合わせると ■ Aグループ 電気 50Hz セルラー オペラ、ファイアーフォックス インチ ■ Bグループ 電気 60Hz IE、エッジ メートル に別れてるのが「原因」だと思います。 私も「メートル」が基準なんですが、エクセルのオプションで尺度を「インチ」「センチ」「ミリメートル」と分けられます。 1点は、この尺度ですね。 対策は・・・メートルだったら換算するしか・・・誤差はしようがないと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルの座標系について

    現在VB2008からエクセルにグラフを表示するプログラムを作成しているのですが、 グラフ等を作成するときにエクセルの座標を指定して作成とnullのですが、 X2 = xlApp.Selection.Left Y2 = xlApp.Selection.Top で現在のセルの座標を取得して、 xlPageSetup = xlSheets("Sheet1") MyCharts = xlPageSetup.ChartObjects MyChart = MyCharts.Add(0, 0, X2, Y2) でグラフ等を作成してもグラフの位置が若干ずれてしまいます。 こういった現象がなぜ発生するのかは不明で、正確な座標入力でグラフを並べることがかなり困難な状況です。 なにかほかに手順があるのでしょうか?

  • Excel vba

    Excel vba をはじめて1ヵ月程度の初心者ですが、すいません質問させて下さい。 シートをCodeNameでSheets()みたいに指定はできるのでしょうか? また、図形をIDでShaps()みたいに指定する方法はあるのでしょうか? どちらも名前(.Nameの方)は変えてある状態です。 例えばアクティブシート名は"テスト"、図形名は"サンプル"みたいな状態です。 名前は自由に変えていきたいのですが、名前が変わってもかわらず指定できるようにしたいです。 Sub test1 Debug.Print Activesheet.Name Debug.Print Activesheet.Index Debug.Print Activesheet.CodeName Debug.Print Excel.Selection.Name Debug.Print Excel.Selection.Index Debug.Print Excel.Selection.ShapeRange.ID End Sub どなたか御教授おねがい致します!!

  • Excelセル内の特定座標に画像を表示させたいのですが。

    Excelの指定したセルの、 (セル左上座標を基準に)座標を指定して GIFやBMPなどの画像を表示させたいのですが、 分からなくて困っています。 セル内での座標指定またはセル内でのセンタリングの方法が分かる方は居ないでしょうか? 今の時点では指定したセルの左上に表示されてしまいます。 ソースはこんな感じなのですが・・・ with sheet .Cells(2,3).Select img="c:\test.gif" .Pictures.Insert(img).Select .Selection.Left =50 end with

  • ウィンドウハンドルの座標を調べることはできますか?

    VB6環境です 様々なブラウザに対してフォーカスさせずにクリック操作をさせたいと考えています 現在、一応それは完成しました しかし、ブラウザを画面左上に置いた(top座標=0、left座標=0)場合です ブラウザの位置がどこにあろうとクリックさせたいのですが、クリック座標の指定が ゲットしたウィンドウハンドルをもつオブジェクトの原点座標を原点として指定するため、 ブラウザを一番左上に持ってこないと動作してくれません わかりにくい説明ですが、知りたいことは  「任意のブラウザの中のコンテンツを表示する領域(このウィンドウハンドルはゲットできました)の   原点座標をVB6にて取得したい」 ということです よろしくお願いします

  • エクセルで図形の位置を知るには

    エクセルのシートにオートシェイプで描画した図形の位置を知るにはどうすればいいのでしょうか。 Top=×× Left=×× などを知ることが可能なのでしょうか。

  • イラストレーターでドキュメント上に配置している図形の座標を取得するja

    イラストレーターでドキュメント上に配置している図形の座標を取得するjavascriptを探していたところ、以下のプログラムを見つけたのですが、うまく動きません(ファイルが作成されません)。プログラムのどこが原因で動かないのかが分かる方いましたら教えていただけないでしょうか。 var outputFile = new File("Centroid_of_Selection.txt"); outputFile.open("write"); var sel= activeDocument.selection; var str=""; for(var i=0; i<sel.length; i++){ var str_name=sel[i].name; var top_left=sel[i].position; var w=sel[i].width; var h=sel[i].height; var centroid_x=top_left[0]+(w/2); var centroid_y=top_left[1]-(h/2); str=str_name+"\t"+centroid_x+"\t"+centroid_y; outputFile.writeln(str); } outputFile.close(); <動作> デスクトップにテキストファイルとして書き出される。 単位はポイント。 図形の名前、X座標、Y座標 の順番でタブ区切りになる。

  • EXCEL2007で、回転された図を任意の場所に設定できない

    回転させた図を任意の場所に配置させたいのですが、EXCEL2007になってからShapeRange.Top/Leftに負の値が設定できなくなってしまったようで、任意の場所に配置できなくなってしまいました。 幸いIncrementTopやIncrementLeftには負の値が設定可能なようなのですが、Excel2003の場合とExcel2007の場合で動作が違うことには変わりなく、Excel2003ではTop/Leftの設定だけで済んだものがExce2007ではTop/Leftである程度の基準位置を設定したあと、さらにIncrementTop/IncrementLeftで補正の必要があるように思います。 こんなやり方をしないと図の配置はできないのでしょうか? 具体的には、マクロにて横長や縦長の長方形の図形を挿入し、位置を指定するのですが、図を回転した場合でもTop/Leftは、回転前の図のTop/Leftを設定するので、横長の図を90度回転させ縦長にした場合には、Leftに0を設定しても、回転後の結果の図は左端にはよっておらず、(元の図の横幅-元の図の縦幅)÷2の分だけ空いてしまいます。 なので、EXCEL2003では求められた空きの分だけLeftに負の値を設定するだけでよかったのですが、EXCEL2007ではLeftに負の値が設定できなくなっており、左端に寄せる事が不可能になっています。 以下、現象確認のための簡単なサンプルのマクロを示します。 '縦長の場合です ActiveSheet.Pictures.Insert("C:\TEMP\BITMAP.BMP").Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = 700 Selection.ShapeRange.Width = 100 Selection.ShapeRange.Rotation = 90# Selection.ShapeRange.Top = Range("B2").Top Selection.ShapeRange.Left = Range("B2").Left '横長の場合です ActiveSheet.Pictures.Insert("C:\TEMP\BITMAP.BMP").Select Selection.ShapeRange.LockAspectRatio = msoFalse Selection.ShapeRange.Height = 100 Selection.ShapeRange.Width = 700 Selection.ShapeRange.Rotation = 90# Selection.ShapeRange.Top = Range("B2").Top Selection.ShapeRange.Left = Range("B2").Left 内容はなんでもいいのでBITMAP.BMPという図のファイルを用意してください。 上記マクロは"B2"のセル位置が図形の左上を原点とするようにしたいのですが、全く違うところに図が配置されます。

  • Excel 図形へのハイパーリンク

    Excel 図形へのハイパーリンク Excelのシート上で一つのセルに対してハイパーリンクの設定を行いました。 リンク先は同シート上の別の特定セルです。 特定セルにリンクした後、その特定セルが常に左上隅に表示させるように、ThisWorkbookに下記コードを記述しました。 Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) 'リンク先セルを左上隅にして画面表示します ActiveWindow.ScrollRow = Selection.Row ActiveWindow.ScrollColumn = Selection.Column End Sub その後、図形に対して同じようにハイパーリンクの設定を行ったところ、リンクはするのですがリンク先の特定セルが左上隅に表示されなくなってしまいました。 ※図形は、図形の上にテキストボックスを置き、グループ化しています セルに対してと図形に対してでは何か違うのでしょうか。 上記コードは他の方が記述されたものをコピペしただけなので、どの部分を修正すれば良いのか分かりません。 どのようにすれば良いのか教えて頂けませんでしょうか。宜しくお願い致します。

  • Excelの図形描画について

    Excelのセル幅を小さくしてセル枠を方眼用紙のようにし、図形描画機能の図や線をセル枠に沿って配置して作図しています。 また、私はよく図形をコピーし、目的位置のセルをクリックして貼り付けています。 (そのセルが貼り付けられた図形の基点(左上)となることを期待しています。) 困っているのは直線の貼り付けです。 セル枠に関係なく引いた線をコピーした場合は、クリックしたセルの位置に期待通りに貼り付けられるのに、セル枠にぴったり合わせて引いた線の場合は期待通りにいきません。 セル枠にぴったりの線も、クリックしたセル位置に貼り付けるにはどうすればよいのでしょうか。 ちなみに、以前使っていたPC(Win98/Excel2000)では問題ありませんでした。PCを変えたら(WinXP/Excel2000)そのようになってしまったので、どこかの設定ではないかと思うのですが、それが分かりません。 何かアドバイスなどありましたら、お願いします。

  • ワード2002で「 Selection.ShapeRange.Left 」 が設定できない

    こんにちは。 OSはWinXP Pro、OfficeXPを使用しています。 1ページ目にあるグループ化された図形をページを 追加して貼り付けていくマクロを以前質問したので すが、ShapeRange.Leftの代入がうまくいきません。 ******************************************** Sub 図形追加() Dim siTop As Single Dim siLeft As Single Selection.HomeKey unit:=wdStory ActiveDocument.Shapes("Group 1478").Select siTop = Selection.ShapeRange.Top siLeft = Selection.ShapeRange.Left Selection.Copy Selection.EndKey unit:=wdStory Selection.InsertBreak Type:=wdPageBreak Selection.GoTo What:=wdGoToPage, _ Which:=wdGoToNext Selection.Paste Selection.ShapeRange.Top = siTop Selection.ShapeRange.Left = siLeft Selection.HomeKey unit:=wdLine End Sub ******************************************** 上述の値を追っていくと、 siTop=40.25、siLeft=46が入っているのですが、 下から2段目のShaperange.Leftを実行すると そこには-785.05 という数値が入ってしまいます。 (どこからその数値がでてきたのか????) Shaperange.Topはうまくいくのですが、ステートメント の実行順を変えてもうまくいきません。 どなたか解決策のご教授をお願いします。

専門家に質問してみよう