2012-04-16 26 views
6

私は、Windows 7/Excel 2010からOS X/Excel 2011への散布図をExcelで生成するために使用するコードを移植しています。Macでは、影で。私は影を望んでいない、そして私はそれを取り除く方法を理解することができません。 this worksheetを使用してvbaで生成されたExcelプロットのマーカーシャドウをオフにする

(それだけでセルA1のランダムな数字があります:あなたは私のマクロ有効ワークシートをダウンロードしたくない場合はB6)を次のコードでは、細かい動作しますが、影でデータポイントを生成します。

Sub plotNoShadow() 

    Dim x As Range 
    Dim y As Range 

    Dim cht As ChartObject 

    Set x = ActiveSheet.Range("A1:A6") 'haphazard numbers 
    Set y = ActiveSheet.Range("B1:B6") 

    Set cht = ActiveSheet.ChartObjects.Add(Left:=150, Top:=50, Width:=200, Height:=160) 
    With cht.Chart 
    .ChartType = xlXYScatter 
    .SeriesCollection.NewSeries 
    With .SeriesCollection(1) 
     .XValues = x 
     .Values = y 
     .Format.Shadow.Visible = msoFalse 'This seems to parse, but have no effect 
    End With 
    .SetElement (msoElementLegendNone) 
    .SetElement (msoElementPrimaryValueGridLinesNone) 
    End With  
End Sub 

は、誰も私に説明できます:

  1. がどのように影を削除するには、このコードを変更する、と

  2. それはどのようにこのコードの実行しかし、SeriesCollection(1).Format.Shadow.VisibleをmsoFalseに設定すると、明白な効果を出さずに実行できますか?以下のコメントをスレッドごと

は、ここに影が途中で外れ、その後になって、そして影が右にオンにしてポイント、左のマクロ出力のSCREENCAPです。わかりやすくするために、マクロを編集して凡例とグリッド線を削除しました。 マクロ出力は、「シャドウオン」状態よりもシャドウが少ないようですが、「シャドウオフ」状態よりもシャドウが多いようです。あなたが見ている

Screencap to illustrate the three states of shadow existence

+1

3次元設定ではないのですか? '.Format.ThreeD.Visible = False'のようなものを試してください。 –

+0

@Tim Williams:良い質問です。 :)しかし、MACのスイッチを切っても3-Dは私の投稿のように1番目のスナップショットを表示します –

+0

@Drew Steen:どのようにして中の写真を撮ったのですか? –

答えて

6

Excelのわずかな3D効果を生成するデフォルトのチャートスタイルには、先に指摘したような小さなドロップシャドウもあります。

私のExcel(Windows 7)では、デフォルトのグラフスタイルは2で、影や3D効果は表示されません。 Macではデフォルトのチャートスタイルが違うと思う。この問題を解決するには

、あなたのコードでチャート・スタイルを設定することができますExcelで

With cht.Chart 
    .ChartType = xlXYScatter 
    .ChartStyle = 2 
    ..... 

を、ChartStyleの設定はの外観を含め、チャートの外観のすべての側面を変更する機能を持っていますマーカー。 MarkStyleが設定する唯一のものは、マーカーの形です。 ChartStyleが変更されると、Markerの他の外観要素はすべてオーバーライドされます。

EDIT

上記のコメントは、まだ基本的に真であるが、私は影を遮断する方法を発見しました。 Excelの多くの機能と同様、思うほど簡単ではありません。何らかの理由でコード内で行われた場合、影の可視性プロパティを設定することは効果がないので、影の種類を「影なし」に設定する必要があります。

Sub plotNoShadow() 

    Dim x As Range 
    Dim y As Range 

    Dim cht As ChartObject 

    Set x = ActiveSheet.Range("A1:A6") 'haphazard numbers 
    Set y = ActiveSheet.Range("B1:B6") 

    Set cht = ActiveSheet.ChartObjects.Add(Left:=150, Top:=50, Width:=200, Height:=160) 
    With cht.Chart 
    .ChartType = xlXYScatter 
    .ChartStyle = 26 'Something 3D with a default shadow. This line can be left out. 
    .SeriesCollection.NewSeries 
    With .SeriesCollection(1) 
     .XValues = x 
     .Values = y 
     .Format.Shadow.Type = msoShadow30 'This is the code for an inner shadow 
    End With 
    .SetElement (msoElementLegendNone) 
    .SetElement (msoElementPrimaryValueGridLinesNone) 
    End With 

End Sub 

EDIT再び

は実際には、msoShadow30は "内部の影" のスタイルであり、あなたのマーカーのスタイルに応じて、奇妙に見えるかもしれません。 msoShadow41は、私が見つけた "影なし"に最も近いものです。これは実際には下の影のコードですが、デフォルトでは見えないほどです。表示されている場合は、色を常に変更して消滅させることができます。

あるいはさらに良いは、1(完全に透明)にtranparencyを設定します。

.Format.Shadow.Transparency = 1.0 'Fully transparent 
+0

+1 '.Format.Shadow.Type = msoShadow41' :)(Excel 2011でテスト済み)私が与えたコードにこの行を追加し、' .MarkerSize'を9に変更すると、OPの質問に示されているような正確な画像が得られました。ところで、提案したように '.ChartStyle = 26'を除外しなければなりません。それはまったく異なるマーカーを与える –

+0

ニース。その価値のために、.chartStyleを2に設定するだけで、私が探していたもの、つまり余分なビジュアルドゥアドアが助けにならないプリント出版に適したプロットが得られます。 –

+0

私は、 ".ChartStyle = 2"で、デフォルトのMacチャートに組み込まれている無益な影、輝き、グラデーションをすべて削除することができました。 –

2

影は実際には影ではありません。私が意味するのは、マーカーが影なしで見えるデフォルトの方法です。

残念ながら、あなたはそれについて多くを行うことはできません。下のスナップショットを見ると、私の言うことを知ることができます。

スナップショット:

enter image description here

オルタナティブ:

あなたはしかし、その影響を最小限に抑えるために、マーカーサイズで再生することができます。このコードを試してください。

Sub plotNoShadow() 

    Dim x As Range 
    Dim y As Range 

    Dim cht As ChartObject 

    Set x = ActiveSheet.Range("A1:A6") 'haphazard numbers 
    Set y = ActiveSheet.Range("B1:B6") 

    Set cht = ActiveSheet.ChartObjects.Add(Left:=150, Top:=50, Width:=200, Height:=160) 
    With cht.Chart 
    .ChartType = xlXYScatter 
    .SeriesCollection.NewSeries 
    With .SeriesCollection(1) 
     .MarkerStyle = 2 
     .MarkerSize = 7 
     .XValues = x 
     .Values = y 
     .Format.Shadow.Visible = msoFalse 'This seems to parse, but have no effect 
    End With 
    End With 

End Sub 
+0

Wow - MSは、出版の準備ができているプロットのためにExcelを使用することを完全に不可能にするために、最善を尽くしています。私は彼らよりも賢明だと思ったが、明らかにそうではなかった。 –

+2

しかし、お待ちください - 残っている影を取り除くには何らかの方法が必要です。手動でデータセットを選択するときは、「データ系列の書式設定」をクリックし、「影」チェックボックスをオンにして影をオンにしてからもう一度クリックすると、影が消え、影が完全に削除されます。だから、どこか別のシャドウアトリビュートがあるはずですが、それはオフにすることができますが、私はそれが何であるか分かりません。 –

+0

私はすでにそれをチェックしました:) Shadowのための他の属性はありません:)あなたは今持っているもののsceenshotを投稿できますか? –

0

あなたはグラフの凡例を経由して影を殺すことができます。

cht.Chart.Legend.LegendEntries(1)。 LegendKey.Shadow = False

1

データ系列をクリックし、フォーマットデータ系列に移動します。 Shadowオプションの下では、 "shadow"ボックスはおそらくチェックされていないでしょうか?それを確認してください。その下にある編集コントロールが有効になります。次に、透明度を100%に設定します。また、「色」を白に設定することもできます。

2

Mac Excelのグラフでこのように余分な書式設定が行われているため、多くのプログラムがMacに変換されています。幸いにも私は発見しました:

ActiveChart.ChartStyle = 2 

シャドウ、グラデーション、グローのないデフォルトのフォーマットが適用されます。チャートにあるすべてのシリーズの細かい部分をすべて書き直す必要はありません。

0

この不健全なチャートの動作は許容されません! Desist shadowy series ...

With .Shadow 
    .ForeColor.RGB = &HFFFFFF 
    .Visible = msoFalse 
End With 
関連する問題