Excel2000 VBAで

一度作ったグラフに
項目軸ラベルを追加しようとすると
エラーが出ます.

Dim MyWorkBookName As String
Dim MySheetName As String
Dim LastRow As Integer

MyWorkBookName = ActiveWorkbook.Name
MySheetName = ActiveSheet.Name
LastRow= 52

With ActiveChart

.SeriesCollection(1).XValues = _
Workbooks(MyWorkBookName). _
Worksheets(MySheetName). _
Range(Cells(2, 6), Cells(LastRow, 6))

End With

変数を使って表したいのですが...

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

A 回答 (3件)

補足します。


Activeにして使用するのは、あまり良い方法ではありません。Activeにするとスピードが落ちるためです。
基本的に、どのオブジェクトもActiveにしなくても参照できますので、Activeにしないで、良く使うオブジェクトはオブジェクト変数に設定して使用するのがいい方法だと思います。
この場合は、下記のようにすれば、Activeにしないで処理することができます。

Sub test()
Dim LastRow As Integer
Dim objMySheet As Worksheet

Set objMySheet = ActiveSheet

LastRow = 52

With objMySheet.ChartObjects(1).Chart

.SeriesCollection(1).XValues = _
objMySheet. _
Range(objMySheet.Cells(2, 6), objMySheet.Cells(LastRow, 6))

End With
    • good
    • 0
この回答へのお礼

>Activeにするとスピードが落ちるためです。

これは良い事を聞きました.
ありがとうございます

お礼日時:2001/02/04 05:34

この処理を動作させたときには、正常動作する場合としない場合があります。


グラフをアクティブ(グラフを選択した状態)にし動作させることで、正常動作し、
非アクティブでは、エラーが発生します。
そこで、そのまま使用するためには、任意のグラフをアクティブにする処理
(下記参照)が必要になります。


LastRow = 52

'追加行 -- Start ---------------------------------------------------
'Dim ChaObj As ChartObject
'
'For Each ChaObj In ChartObjects
' Debug.Print ChaObj.Index '出力結果(1)、グラフの数分出力される。
' Debug.Print ChaObj.Name '出力結果(2)、グラフの数分出力される。
'Next

'下記の2行中どちらかを使用
ActiveSheet.ChartObjects(1).Activate '出力結果(1)を()内に使用
ActiveSheet.ChartObjects("Chart 1").Activate '出力結果(2)を()内に使用

'追加行 -- Endt -----------------------------------------------------

With ActiveChart
    • good
    • 0
この回答へのお礼

アクティブと非アクティブ,
今後気をつけます.

お礼日時:2001/02/04 05:36

Cellsの対象オブジェクトを指定していないためにエラーが出ているのだと思います。



また、シートなどを名前でバインディングしていますが、オブジェクトでバインドしたほうが効率がいいですよ。

Dim LastRow As Integer
Dim objMySheet As Worksheet

Set objMySheet = ActiveSheet

LastRow = 52

With ActiveChart

.SeriesCollection(1).XValues = _
objMySheet. _
Range(objMySheet.Cells(2, 6), objMySheet.Cells(LastRow, 6))

End With
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

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

Qキー溝

機械的な用語をわかりやすく解説してくれるサイト、知りませんか?
たとえば、「キー溝」って何?

Aベストアンサー

検索したところ、「もの作りのための機械設計工学」というページを見つけました。
「キー」「キー溝」については、「5.3 軸と回転体の固定」に載っています。

参考URL:http://www.nmri.go.jp/eng/khirata/design/index_j.html

Q■□■読み方■□■ #N/A, #VALUE!, #REF!,DIV/0!,#NUM!, NAME?, #NULL

前に、似たような質問をされている方がおりましたが、明確な答えが出ておりませんでしたので教えていただけますでしょうか。
以下のようなエクセルのエラー項目の
読み方を教えていただけませんでしょうか。
#N/A
#VALUE!
#REF!
DIV/0!
#NUM!
NAME?
#NULL
よろしくお願いします。
なお、意味は結構です。あくまで読み方を教えていただきたいのです。
しかも、カタカナでお答えいただくと助かります。
勝手言って申し訳ないですが、
よろしくお願いします。

Aベストアンサー

<方法1>略語の由来となっている英語を言う。
※冠詞は省いています。英語の表現は他にもあります。

#N/A Not Available Value ナット・アヴェイラブル・ヴァリュー
#VALUE! Wrong Type of Value ローング・タイプ・オヴ・ヴァリュー
#REF! Invalid Cell Reference インヴァリッド・セル・リファレンス
#DIV/0! Divided by Zero ディヴァイディッド・バイ・ゼロ
#NUM! Invalid Number インヴァリッド・ナンバー
#NAME? Unrecognized Name アンリコグナイズド・ネイム
#NULL! Null Intersection ナル・インターセクション

<方法2>書いてある字をそのまま読む。

#N/A エヌエー
#VALUE! バリュー
#REF! レフ
#DIV/0! ディブゼロ
#NUM! ナム
#NAME? ネーム
#NULL! ナル(ヌル)

<方法3>適当な英語で代表させて「エラー」をつける。

#N/A ノットアベイラブルエラー
#VALUE! バリューエラー
#REF! リファレンスエラー
#DIV/0! ディバイデッドバイゼロエラー
#NUM! ナンバーエラー
#NAME? ネームエラー
#NULL! ヌルエラー

<方法4>日本語を混ぜる。

#N/A 無効エラー
#VALUE! バリューエラー
#REF! 参照エラー
#DIV/0! ゼロ割りエラー
#NUM! ナンバーエラー
#NAME? 名前エラー
#NULL! ヌルエラー

<方法1>略語の由来となっている英語を言う。
※冠詞は省いています。英語の表現は他にもあります。

#N/A Not Available Value ナット・アヴェイラブル・ヴァリュー
#VALUE! Wrong Type of Value ローング・タイプ・オヴ・ヴァリュー
#REF! Invalid Cell Reference インヴァリッド・セル・リファレンス
#DIV/0! Divided by Zero ディヴァイディッド・バイ・ゼロ
#NUM! Invalid Number インヴァリッド・ナンバー
#NAME? Unrecognized Name アンリコグナイズド・ネイム
#NULL! Null Intersection ナル...続きを読む

Qモーターシャフト、キー溝寸法について

古い旋盤のモーターが壊れたため、新しいモーターを選択していたのですが、どうゆう訳かキー溝寸法だけが一致しません。
ちなみにモーターは、
3.7Kw、4P、50/60Hz、200V、JIS C4210
で、年式は分かりませんでした。

この条件のモーターは、枠番号が112Mで、キー溝は8mmとなっていますが、搭載されていたモーターのキー溝は7mmでした。

いろいろ調べた所、旧規格の寸法ではないかと思われるのですが、資料が見当たりません。

参考になりそうなサイト等ありましたら、教えて頂きたいです。
宜しくお願いします。

Aベストアンサー

 こんにちは。
 こちらはフライス盤の専業です。休み明けに品物を欲しいということで、格別に忙しいわけではないのですが連日仕事をしているところです。ということで詳しい規格などに付いては今は省略して、肝心な部分だけ回答しておきます。丸5日も回答が無いままというのは情けないと思います。私は最近あまりここを定時巡回しなくなり、1週ぶりくらいに見ました。
 
 とにかくその新しいモーターを取り付けて動かすには、キーに少し加工を施す必要があります。
 シャフトの径とキー(キー)溝の幅や深さにはJISに定められた規格が有ります。その表はウェブにもあると思いますが、今は探さないでおきます。7ミリは旧規格ということですが、今でもその寸法のキー材は市販されています。そう言えば20年ほど前に当方でモーター・シャフトが折損して、モーターそのものを交換した時にも、ほぼ同じことをメーカーから言われたことがありました。
 ともあれ、8ミリのキーの上部(ギアなどにはまる部分)を7ミリに削り落とす必要があります。形状としては凸型のものを作ることになります。深さもある程度の精度が要りますし、両側から等寸で削らないと具合が悪いので、やはりフライスの作業になるでしょう。
 大した仕事ではないですから、1000円ももらえない(或いはいくら単価を吹っかけても1000円が限度)と感じます。良心的なフライス屋の知り合いがいるなら、その程度ですぐにやってもらえると思います。いざとなったら「一円を探せ」というのもありかも。

 こんにちは。
 こちらはフライス盤の専業です。休み明けに品物を欲しいということで、格別に忙しいわけではないのですが連日仕事をしているところです。ということで詳しい規格などに付いては今は省略して、肝心な部分だけ回答しておきます。丸5日も回答が無いままというのは情けないと思います。私は最近あまりここを定時巡回しなくなり、1週ぶりくらいに見ました。
 
 とにかくその新しいモーターを取り付けて動かすには、キーに少し加工を施す必要があります。
 シャフトの径とキー(キー)溝の幅や深...続きを読む

QPrivate Sub Workbook_BeforeSaveについて

エクセル2000です。
腑に落ちない現象が起きているので質問させてください。
Sheet1にテキストボックス(OLEオブジェクトのTextboxではありません)とボタンが貼ってあり、Visble=Falseで非表示にしています。それを保存する際には表示させたいので、BeforeSaveイベントで

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheet1.TextBoxes("テキスト").Visible = True
Sheet1.Buttons("ボタン").Visible = True
MsgBox "保存されちゃった!"
End Sub

と書いてみました。
手動で保存する場合には正しく、テクストボックスやボタンは正しく表示されます。もちろんMsgboxも出ます。

ところが、標準モジュールに書いた以下のコード、

Sub 保存()
ActiveWorkbook.Save
End Sub

を走らせてみても、"保存されちゃった!"と、Msgboxは出ますが、肝心のテクストボックスやボタンが表示されません。
試行錯誤の結果、
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheet1.Shapes("テキスト").Visible = True
Sheet1.Shapes("ボタン").Visible = True
MsgBox "保存されちゃった!"
End Sub

と書くと、標準モジュールから、ActiveWorkbook.Saveでも表示されることがわかりました。
どうしてでしょうか?

エクセル2000です。
腑に落ちない現象が起きているので質問させてください。
Sheet1にテキストボックス(OLEオブジェクトのTextboxではありません)とボタンが貼ってあり、Visble=Falseで非表示にしています。それを保存する際には表示させたいので、BeforeSaveイベントで

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheet1.TextBoxes("テキスト").Visible = True
Sheet1.Buttons("ボタン").Visible = True
MsgBox "保存されちゃった!"
End Sub

と...続きを読む

Aベストアンサー

>を走らせてみても、"保存されちゃった!"と、Msgboxは出ますが、肝心のテクストボックスやボタンが表示されません。

ユーザー関数を抜けて「シートが待ち状態になるまで」は、シート上の子コントロールのVisibleプロパティの変化は反映されません。

ところが「セーブしちゃうと、Visibleプロパティが変化したのを忘れてしまう」ので「Sub 保存()を抜け、Visibleプロパティの変化が反映されるタイミング」には、もう「Visibleプロパティが変化したのを忘れている」のです。

つまり、Sub 保存()を抜けるまで、Visibleプロパティを変化させても反映されません。

しかし、ShapesのVisibleプロパティは「見た目だけを即座に画面に反映する」ので、Visibleプロパティを変更した瞬間に画面に反映されます(但し、反映されるのは「見た目だけ」なので、そのコントロールがクリック可能とは限りません)

Qフランジ形軸継ぎ手の軸径

JISを利用しての軸径のけっていで、軸径を仮決定したあとキー溝を考慮するして決定するとなっているのですが、どういうふうに考慮するのかよくわかりません。
誰か教えてください。

Aベストアンサー

キー(+キー溝)のJIS規格があって、それぞれ軸径に応じた呼び寸法と公差が決められています。独自に設計してもOKですが、キーなどは規格品がありますので、それを利用するのが常識です。

QExcel 2003 VBA Worksheet_Changeの動作速度について

Excel2003を使用しています。
セルに入力した文字列の前後のスペースをカットする為にTRIMを用いて
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Value = Trim(Target.Text)
End Sub
と記述したところ、動作は思惑通りなのですが、処理速度が異様に重いです。
私の環境(VISTA Home Premium,Core2 Duo 2.20GHz)では、セル値を変更した後必ず3~5秒処理が固まります。

不本意ですが
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Value = Trim(Target.Text)
End Sub
と、Worksheet_SelectionChangeを使うと全くストレスを感じず処理されますが、セルを再度選択してやらないとTRIMされませんし…。

私の環境だけがWorksheet_Changeでの処理が遅いのでしょうか?
よく似た環境のみなさんはどうでしょう?
原因が分からなくて気持ち悪いです…

私個人の環境の問題?
Excel2003の問題?
記述の問題?

何かご存じの方居られましたらよろしくお願いします。

Excel2003を使用しています。
セルに入力した文字列の前後のスペースをカットする為にTRIMを用いて
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Value = Trim(Target.Text)
End Sub
と記述したところ、動作は思惑通りなのですが、処理速度が異様に重いです。
私の環境(VISTA Home Premium,Core2 Duo 2.20GHz)では、セル値を変更した後必ず3~5秒処理が固まります。

不本意ですが
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Value = Trim(Target...続きを読む

Aベストアンサー

こんにちは

Application.EnableEvents = False
' 値の変更処理
Application.EnableEvents = True

とすれば解決するはずです。

コード上でセルの値を変更すれば
再びイベントが発生します。
原理的には無限ループが起きていることになります。
仕様上、対策されているようなので、
上級者でも、忘れがちですけれど、、、

Q歯車と軸の固定方法

http://store.shopping.yahoo.co.jp/dendouki/khk-msgb1-60.html
このような、歯車と軸を固定するためのネジ穴がない歯車を軸に固定するにはどのようにするのでしょうか。
軸は外径20mmのアルミパイプの予定です。

Aベストアンサー

#2です。
歯車で動力を伝達するのは大きなトルクや高速回転の場合です。
この手の機械用の歯車は、常時潤滑してないと歯がボロボロになってきます。ですから、ギアボックスなどに密閉して半分油に浸かるようして、使用します。
それに対して、タイミングプーリーは、相手がゴムのベルトのため潤滑は不要です。ただ、多少の伸びはでるのでテンションを必要としますが。今の車にも多く使われています。昔はチェーンだったですけどね。
Vベルトでは同期が難しいのでこういう歯型のベルトとプーリーにしています。
言われているような使い方にはぴったりの動力伝達方式ですね。
http://store.shopping.yahoo.co.jp/dendouki/mtb-p14s5m100a.html

Q入力規則で =AND( , , , , )が狙ったようにいきません

よろしくお願いします。いつもgooの皆さんには大変お世話になっております
win8.1でエクセルは2013です

入力規則で質問させていただきます

セルN40に入力できる数値を1,2,3,41,42,43に制限したいので
整数→次の値に等しいで値をセルN40に
=AND(N40=1,N40=2,N40=3,N40=41,N40=42,N40=43)
と入力して、実際に上記の数値を入力してもすべてけられます
=AND(1,2,3,41,42,43)
と入力してもけられます

原因はどこにあるのでしょうか?
どなたか教えてください

Aベストアンサー

>整数→次の値に等しい
ではなく、
「データの入力規則」→「設定」タブの入力値の種類を「リスト」とし、「元の値」に「1,2,3,41,42,43」と入力するのでは?

QExcel2010で第2軸

Excel2010で2つのデータで散布図を作成し、
片方のデータを第2軸に設定します。
この状態で, 第2軸に設定した方のX軸と第1軸に設定した方のX軸が
別で設定されてしまいます。

例えば、同じX軸を共有して2つのデータを示したい場合、
2つのデータを別々にX軸の範囲などを設定する必要があります。

Excel2003では, 第1軸のデータと第2軸のデータで
X軸を共有していたため、このような問題はありませんでした。

どうすれば、第1軸と第2軸のX軸が連動されるように出来ますでしょうか?

Aベストアンサー

>片方のデータを第2軸にした状態で、且つ第2横軸をなしにした状態でX軸を対数表示にしてみてください。
そうすると基本軸の方だけ対数表示になってしまい、基本軸と第2横軸は連動しなくなってしまいます。

この場合は、基本軸の設定変更ですので、Excel2010ではデフォルトの設定の第2軸とは別の軸になります。

>両方とも対数表示にしたい場合には一つずつ対数表示にして、且つ第2横軸をなしにする必要があると思うのですが、これは合っていますでしょうか?

基本的に、軸の間隔が変更される(例えば対数軸に変更する)ような変更を加えた場合は、軸ごとに設定されるので、いずれの軸も同じ設定にする必要があります。
一方、軸を「なし」に(あるいは軸を選択してDeleteで削除)した場合は、その軸が表示されないだけで元の軸の設定がそのまま引き継がれますので、両方の軸を対数表示したい場合は、いずれの軸も書式を設定する必要があることになります。

QRange(Cells(32, 14)).Value = "S" がエラーになります

よろしくお願いします。いつもgooの皆さんに大変お世話になっています。
エクセルは2013です

Range(Cells(32, 14)).Value = "S" がエラーになります
メッセージは「Range メソッドは失敗しました Worksheet オブジェクト」です

32行目の14列にSを書き込みたいので、ネットで調べてやってみたのですが
よく理解できません

14という数値を使って書きたいのですが、どう書き換えたら良いでしょうか
どなたか教えてください

Aベストアンサー

この場合一つのセルですから
Cells(32, 14).Value = "S"
これだけです。Rangeは不要です。


人気Q&Aランキング

おすすめ情報