Excelの座標系について

このQ&Aのポイント
  • エクセルの座標系について、VB2008からエクセルにグラフを表示する際に座標を指定して作成すると、グラフの位置がずれる現象が発生します。正確な座標入力でグラフを並べるのが困難です。
  • VB2008からエクセルにグラフを表示する際に、現在のセルの座標を取得する方法として、X2 = xlApp.Selection.Left, Y2 = xlApp.Selection.Topという手順を使用します。しかし、この方法ではグラフの位置が若干ずれることがあります。
  • エクセルの座標系に関する他の手順は不明ですが、正確な座標入力でグラフを並べるためには別の方法を試してみることをおすすめします。
回答を見る
  • ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.1

Range("A3:D4").Select ActiveSheet.ChartObjects.Add Left:=Selection.Left, Top:=Selection.Top, _ Width:=Selection.Width, Height:=Selection.Height と入力して実行してみました、セレクション上にチャートが作成されました。 オーバーライドが存在するためではないでしょうか? 本来使いたいメソッド Object.Add(Left, Top, Width, Height) 実際動作してしまったメソッド Object.Add(Before, After, Count, Type)

sadokazu
質問者

お礼

お礼が遅くなり申し訳ありません。 Selection.Left Selection.Top を使用して座標を取得することは理解していたのですが、 セルのサイズ変更、倍率変更をする前に、固定値として座標を記述していてそれがずれの原因だったみたいです。 セルのサイズ変更、倍率変更を実施した場合、セルのピクセル数が倍率によっては表示できないサイズがあるようで・・・。 セルのサイズ変更、倍率変更を実施したあとでもセルの座標をいったん取得してからグラフを作成すると正確な座標で作成することが出来ました。 回答していただきありがとうございました。

関連するQ&A

  • EXCELのグラフ

    下のようにVBからExcel にデータを送りグラフを表示しています。 印刷プレビューを表示したときにグラフと表が表示されてしまいます。グラフだけを表示して表は表示をしたくないのですが どうすればいいのでしょうか お願いします。 Private Sub Command1_Click() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets.Add Dim i As Integer Dim j As Integer For i = 2 To 6 For j = 2 To 6 xlSheet.Cells(j, i) = CInt(71 * Rnd + 30) Next j Next i xlSheet.Cells(2, 1) = "国語" xlSheet.Cells(3, 1) = "数学" xlSheet.Cells(4, 1) = "英語" xlSheet.Cells(5, 1) = "社会" xlSheet.Cells(6, 1) = "体育" xlSheet.Cells(1, 2) = "石原" xlSheet.Cells(1, 3) = "小泉" xlSheet.Cells(1, 4) = "田中" xlSheet.Cells(1, 5) = "平沼" xlSheet.Cells(1, 6) = "森山" Dim MyChart As ChartObject Set MyChart = xlSheet.ChartObjects.Add(10, 100, 600, 330) With MyChart.Chart .SetSourceData xlSheet.Range("A1:F6"), xlColumns .Axes(xlValue).MaximumScale = 100 .Axes(xlValue).MajorUnit = 20 .HasTitle = True .ChartTitle.Text = "中間テスト結果" .ApplyDataLabels (xlDataLabelsShowValue) .Location xlLocationAsObject, xlSheet.Name End With xlApp.Visible = True With xlSheet.PageSetup .PaperSize = xlPaperA4 .Orientation = xlPortrait .LeftMargin = xlApp.CentimetersToPoints(2) .RightMargin = xlApp.CentimetersToPoints(2) .TopMargin = xlApp.CentimetersToPoints(2.5) .BottomMargin = xlApp.CentimetersToPoints(2.5) .HeaderMargin = xlApp.CentimetersToPoints(1) .FooterMargin = xlApp.CentimetersToPoints(1) End With xlSheet.PrintPreview Set MyChart = Nothing Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End Sub

  • 座標(x,y)から座標(x2,y2)を頂点としてとおり座標(x3,y3)と交わる放物線?

    現在プログラムを作成しているのですが、とあるグラフを表示して 欲しいと言われ困っています。 ニーズは 任意の座標(x,y)と座標(x3,y3)を放物線で記すこと。 ただし、この放物線はxからx3の間隔の8:2の場所に頂点(x2,y2)が あること。 です。 すなわち・・・ (x,y)が(0,50)で(x3,y3)が(100,25)なら 頂点(x2,y2)は(80,?)に あるグラフです。 そもそも、こんなグラフを式でかけるんでしょうか? かけるとしたらどんな式で書けばいいのか教えてください。 条件としては 必ず x<=x3 , y>=y3 , xとx3の間隔は最低100です。 いろいろ参考書とか見てみたのですが、ギブアップです。 お助けください。

  • エクセルでのグラフ作成について::折れ線グラフの座標軸::

    論文のグラフができずに困っております。 初心者がエクセルでグラフ作成したいのですが、折れ線グラフのy座標軸の向きを逆にしたいんですが、その方法がわかりません。 y軸を下↓向きにしたいんですが・・・(x軸は右→向きのままです。) どなたか手解きしてください。 よろしくおねがいいたします。

  • VBからExcelを操作

    VisualBasic6.0(初心者) VBを始めたばかりで、Excelの入力文字をVBで変換しようと考えています。 様々な保管場所にあるExcelを開いて選択セルの文字をコマンドボタンで変換しようと下記コードを考えました。(一部) 問題は、Load時にすでに開いているExcelを閉じてまいます。 何か良い方法は無いでしょうか?(アクティブなExcelを操作したい) また、下記コードで不適切なところがありましたら御教授願います。 Private Sub Form_Load() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) Set xlApp = GetObject(, "Excel.Application") With xlApp.Selection Cells(1, 1).Value = "" End With xlApp.DisplayAlerts = False xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End Sub '----------------------(大文字変換) Private Sub CB2_Click() On Error Resume Next If ActiveCell.Row = Null Then MsgBox "Excel が見つかりません" Else Dim xlApp As Excel.Application Set xlApp = GetObject(, "Excel.Application") If Err.Number Then MsgBox "Excel が起動されていません" Else Dim X As Long Dim Y As Long Dim Hmae As String Dim Hgo As String X = 0 Y = 0 With xlApp.Selection Do Do Hmae = Cells(ActiveCell.Row + X, ActiveCell.Column + Y).Value Hgo = StrConv(Hmae, 1) Cells(ActiveCell.Row + X, ActiveCell.Column + Y).Value = Hgo X = X + 1 Loop Until X >= .Rows(.Rows.Count).Row - .Row + 1 X = 0 Y = Y + 1 Loop Until Y >= .Columns(.Columns.Count).Column - .Columns(1).Column + 1 End With End If xlApp.DisplayAlerts = False Set xlApp = Nothing End If End Sub

  • x-y座標に10個ぐらいの点をプロットしたい。

    エクセルのシートに x y 1 9.76 4.81 2 7.24 3.47 3 6.99 1.94 4 6.19 3.04 5 6.35 1.82 6 8.54 4.18 7 6.53 4.18 8 7.35 2.44 9 7.75 3.80 というデータがあるのですが、 これをx-y座標にグラフ化したいのですが、どうしたらいいのかわかりません。エクセルでもできますか? できなければ何かフリーソフトでもありますか? 急いでますのでよろしくお願いします。

  • エクセルで回転する座標の出し方

    エクセルで回転する座標の出し方 (例) 座標X100、Y100の点から好きな角度を回したときのX、Yの座標の求め方 回転中心はX0、Y0 回転方向は反時計回り 例で言えば X141.421、Y0  が0度       X0、Y141.421  が90度       X-141.421、Y0 が180度       X0、Y-141.421 が270度 エクセルでの問題点は 1.角度計算がラジアンになる デグリも関数はあるけど書式がわからない  無理やり(PI()/180)などを使ってるがアークタンジェントでは書式がわからない 2.正と負の計算式・答えが負になるときの処理ができない  回転角度が270度とか 今電卓で打っているのは 100/100=ATAN ----------------------最初の角度 100*100+100*100の答えのルート--------回転中心からの直線距離 最初の角度+動かしたい角度------------求めたい座標の角度 SIN求めたい座標の角度*直線距離-------Y座標 答え COS求めたい座標の角度*直線距離-------X座標 答え 最初のX、Y座標と 動かしたい角度を入れると答えが出るような 物が作りたいです よろしくお願いします エクセル2000 WINXP

  • excelの乱数を用いて円が重ならない座標を選び出

    excelの乱数を用いて円が重ならない座標を選び出す方法 2次元平面(0<x<100,0<y<100)に同じ半径rの円を重ならないように配置したいのですが、困ってます。 考えとしては 1.まず1個の円の中心座標を決める(R1(x1,y1)とする) 2.2個目の円を、1個目と重ならないよう配置できる中心座標R2(x2,y2)を乱数で決める。 ((x1-x2)^2+(y1-y2)^2>4r^2) 3.3個目の円を、1個目と2個目と重ならないように配置できる中心座標R3(x3,y3)を決める。 ((x1-x3)^2+(y1-y3)^2>4r^2かつ(x2-x3)^2+(y2-y3)^2>4r^2) これを繰り返す。 このような座標をexcelの乱数機能を用いて出すことは可能でしょうか? 皆様のお力をお貸しください。

  • Excelで座標から関数をつくることはできますか?

    座標 (7.250)、(13.150)、(19.100)・・・・・(45.20)、(48.15)、(49.10) の10個の座標があります。 この点を通る曲線の式(近似式でかまわない)のですが、求めることはできますか?グラフは作れるのですが、式が求められないので、目的が達成できません。 目的はあるX座標の時のY値を求めたいのですが・・。なにかよい方法はあるでしょうか? 変わった質問かも知れませんが、知恵をお貸しください。

  • VB2005でExcelのシートをコピー

    VB2005Expressで開発をしています。 Excelのシートをコピーして同じbookに追加をしたいと思っています。 下記でまずExcelを使用できるようにして  Dim xlApp As New Excel.Application  Dim xlBooks As Excel.Workbooks = xlApp.Workbooks  Dim xlBook As Excel.Workbook = xlBooks.Add '新規のファイルを開く  Dim xlSheets As Excel.Sheets = xlBook.Worksheets  Dim xlSheet As Excel.Worksheet = xlSheets.Item(1)  xlApp.Visible = True 下記で追加できると思うのですが、()内にセットするパラメータが わかりません・・・  xlBook.Worksheets.Copy() どなたかご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • エクセル 図形の座標誤差

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