Excel VBA質問スレ Part8
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/08/25(月) 23:16:33前スレ http://pc11.2ch.net/test/read.cgi/tech/1212587819/
★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。
★2 ExcelのVBA以外の部分に関する質問はNGです。
但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
VBAとは、『Visual Basic for Application』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
0659デフォルトの名無しさん
2008/10/26(日) 13:35:270660デフォルトの名無しさん
2008/10/26(日) 13:40:58Excel2003を使っています。
コマンドボックスをクリックするたびに、セルA1の数に1ずつ足していくマクロを作りたいのですが
どなたか教えていただけませんでしょうか。
よろしくお願いします。
0661デフォルトの名無しさん
2008/10/26(日) 14:10:390662デフォルトの名無しさん
2008/10/26(日) 15:32:19コマンドボックスって何ぞや?
0663660
2008/10/26(日) 15:45:47コマンドボタンの間違いです。
色々調べてみたのですが、変数の定義の仕方そのものがよく理解できていなくて
わからないなりに考えたのが↓です
Sub test_Click()
Dim h As Long
h = Range("A1").Value
If h = 0 Then
h = 1
Else
h = h + 1
End If
End Sub
もうちょっと頑張ってみます
0664649
2008/10/26(日) 15:48:36'=A1 という文字列を =A1 という数式に変換するマクロありますか。
同かよろしくお願いします。
0665649
2008/10/26(日) 15:50:36あるセルに '=A1 という文字が書かれています。
マクロコマンド使って =A1 という数式に置換したいのですが。
どうかよろしくお願いします。
0666デフォルトの名無しさん
2008/10/26(日) 16:32:40cells(1,1).value = cells(1,1).value + 1
>>665
Cells(1, 1).Formula = Cells(1, 1).Value
0667デフォルトの名無しさん
2008/10/26(日) 16:33:34Range("A1").Value = Range("A1").Value + 1
0668デフォルトの名無しさん
2008/10/26(日) 16:43:510670デフォルトの名無しさん
2008/10/26(日) 17:06:11単純な代入式も書けないレベルの奴は入門書買え
いちいち他人の手を煩わすな
0671デフォルトの名無しさん
2008/10/26(日) 22:22:34初心者ではないですが、レベルは低いですσ^^;
セルを指定するときに、Range("A1")ではなく[A1]というふうにやってるんですが、
これだとなにか悪影響がありますか?
今のところ困るのは、説明書やhelpの類がすべてRange形式のものばかりなので、
書き方が分からない時がある、ってことくらいです。
単に字数が少なくて済むからという理由で[**]形式にしているんですが、
ちょっと気になってます。
というか、そもそも気にしたほうがいいのか気にしなくてもいいのか・・・
0672デフォルトの名無しさん
2008/10/26(日) 22:45:34少なくとも俺はわからん
0673デフォルトの名無しさん
2008/10/26(日) 23:19:11あとは使う場面やメンテナンス性などを考えて使えば良い
複数人で扱う物には使わない方がいいし、汎用モジュールも然り
個人専用の使い捨てマクロの類なら[A1]形式でも医員で内科医
連続しない複数セルもしくは範囲を扱う場合なんかは便利なので
俺も他人が弄る可能性のないものでは使うこともある
『 [A:A,C:C,E:F].ClearContents 』とか『 [A3,C3:F10,H3:H10] = 0 』とかね
因みにうちでは『r""』のキー打ちで『Range("")』が入力され、カーソルが""の間に移動するので
Range("A1")は、『 R " " A 1 』で済む為、[A1]でもRange("A1")でも入力字数は大差ない
俺の場合RangeよりCellsの方がよく使うが、Cellsも同じく入力省略出来るようにしてある
0674デフォルトの名無しさん
2008/10/26(日) 23:27:30本気で業務に使うプログラムやら、もっと高いゴールを目指すなら、
初心者のうちからcellsで指定する方が良いと思うよ。
rangeと言えば、あくまでrangeオブジェクトである訳で・・・。
何より変数絡めてセルの指定するようになると可読性が著しく下がる・・・。
タッチ数も増えるしで、良い事ない。
0675デフォルトの名無しさん
2008/10/26(日) 23:28:390676デフォルトの名無しさん
2008/10/26(日) 23:36:520677デフォルトの名無しさん
2008/10/27(月) 00:10:330678デフォルトの名無しさん
2008/10/27(月) 02:51:46結局は evaluate の省略記法だから、excel に渡して評価させる分、
多少処理の無駄があるんじゃないかと思う(たぶん)
[A1].value = 0
range("A1").value = 0
それぞれ10万回ループさせると数秒だが差が出る
evaluate("A1").value = 0
は、[A1]記法とほぼ同じになる
誤差レベルだけど、回数の多いループ内とか、速度が気になる場合は
避けた方がいいかもね
0679デフォルトの名無しさん
2008/10/27(月) 09:49:00Cells(1,1)も出てこねー。
Range("A1")だと出てくる。
どれもいったんRange型変数に入れりゃ同じだが。
0680デフォルトの名無しさん
2008/10/27(月) 10:57:11Syntax Error.しか知らないキチガイがあらわれました
0681デフォルトの名無しさん
2008/10/27(月) 11:57:01大手ECサイトのヨドバシドットコムが、サイトリニューアルから大規模な障害を3日間続けているようです。
このようなケースではリニューアルを担当した業者はヨドバシカメラにどれほどの損害賠償を行うのでしょうか?
【ヨドバシカメラ】 ネットサイトをリニューアルしたら表示遅すぎでおわび [10/23]
http://gimpo.2ch.net/test/read.cgi/owabiplus/1224789237/
ヤマダ.com/ビックカメラ.com/ヨドバシ.comを語ろう
http://gimpo.2ch.net/test/read.cgi/kaden/1222787235/
【店員の質】ヨドバシカメラ総合17【落ちまくり】
http://gimpo.2ch.net/test/read.cgi/kaden/1215013408/
補足
どうやら今回のヨドバシドットコムリニューアルはCMS導入が目的で、
キノトロープスリーイントという会社( http://www.k-3int.co.jp/ )が請けたようです。
また、リニューアルの10/21から10/25現在までこの状況ですので、ヨドバシカメラの損失額は
億単位で発生していると言われています。
キノトロープってどうよ?PART4
http://namidame.2ch.net/test/read.cgi/venture/1224762171/
0682633
2008/10/27(月) 14:06:59おぉー、素晴らしい限りです!
アクティブシート以外に対してIntersectは無理なのでしょうか?
0683682
2008/10/27(月) 14:21:18columns(c)を修飾したら出来ました。
0684デフォルトの名無しさん
2008/10/27(月) 16:04:05書いた後で気づいたんだが、それ union いらないっぽいw
? selection.address
$A$1:$A$5,$A$5:$A$10
? selection.entirerow.address
$1:$5,$5:$10
? intersect(selection.entirerow, columns(8)).address
$H$1:$H$10
intersect かけた時点で重複してる行はまとめられるから、
Set rg1 = Intersect(Selection.EntireRow, Columns(c))
だけでいいようだ
0685682
2008/10/27(月) 16:34:34究極のリファクタリング有難うございます。orz
こういうの教えられると、VBコードでゴリゴリ作るのが馬鹿らしくなってしまう...
0686671
2008/10/27(月) 22:41:20RangeやCells形式も使いこなせるように、もっと勉強していきます^^
0687デフォルトの名無しさん
2008/10/28(火) 10:08:01選択エリアの全行数は
For each r in Selection.Areas
rcnt = rcnt + r.Rows.Count
Next
で求めていますが、一気に知る方法がありますでしょうか?
0688デフォルトの名無しさん
2008/10/28(火) 18:29:27一気に知る方法は知らないがそのままだと重複している行もカウントされる
少し前で話題に出たIntersectを組み込んで
For Each r In Intersect(Selection.EntireRow, Selection.EntireRow).Areas
とかにしたほうがいいんじゃないか?
0689デフォルトの名無しさん
2008/10/28(火) 21:48:430690デフォルトの名無しさん
2008/10/28(火) 22:14:070691デフォルトの名無しさん
2008/10/28(火) 23:47:58もちろん面倒なことをやるなら1文あたりが相応に長くなるんだけど。
0692デフォルトの名無しさん
2008/10/29(水) 01:54:25それは「人に訊いた方がラクだ」という事だ
なんちてw
>>687
一般的なやり方じゃないかも知らんが一応これで行けそう
重複行込み
rcnt = selection.entirerow.cells.count / activesheet.columns.count
重複行抜き
rcnt = intersect(selection.entirerow,columns(1)).count
0693デフォルトの名無しさん
2008/10/29(水) 02:45:55具体例:
(1)乱数で10個のデータを生成し,列方向に保存
(2)保存したデータから平均を計算し, 2つ下のセルに出力
(3)上記(1)から(2) を n回繰り返す(とりあえずn=3).
上記(2)がうまく計算できません(下から3行目のコード).
---------------
Sub dice_siml01()
Cells.Clear
Dim i As Integer
Dim j As Integer
Dim n As Integer
Dim nobs As Integer
Cells(1, 1) = "試行回数"
n = 3
nobs = 10
For j = 1 To n
For i = 1 To nobs
Cells(i + 1, j + 1).Formula = "=randbetween(1,6)"
Next
Cells(nobs + 3, j + 1).Formula = "=Average(Range(Cells(2, j+1), Cells(2+nobs-1, j+1)))" Next
End Sub
---------------
【注】
randbetween(1,6) エラーの場合 rand()で置き換えてお願いします.
0694デフォルトの名無しさん
2008/10/29(水) 03:31:17.formula に入れるのはセルにそのまま打ち込める式
範囲指定のところが "B2:B11" とかの形式になるように、
文字列を生成すればOK
0695デフォルトの名無しさん
2008/10/29(水) 09:46:54どうもありがと。
できれば、具体的な変換方法もお願いします。
0696デフォルトの名無しさん
2008/10/29(水) 10:03:37宿題か何か?
デカい誤り指摘してヒントも出したんだから、
そこからもっぺん自分で考えてみような
じゃなきゃこんな練習問題やってる意味ないだろ
0697687
2008/10/29(水) 10:09:55>>692
有難うございます。
「聞くは一時の恥じ...」
なんちてw
セル情報はExcelの基本関数知ってればコード記述で殆ど解決しちゃう
けど速度やメンテを考えるとコードは単純な程良い。
0698デフォルトの名無しさん
2008/10/29(水) 10:36:40これ以上は分からん。
0699デフォルトの名無しさん
2008/10/29(水) 10:37:47あ、速度考えるなら intersect とか濫用しない方がいいよ
10万回ループさせると>>692より>>687の方が早いんで
0700デフォルトの名無しさん
2008/10/29(水) 12:16:46>けど速度やメンテを考えるとコードは単純な程良い。
これは少し間違ってる気がする
速度を考えるなら処理するデータを単純にした上でコードも単純なものにする
例えばセルのプロパティを変数に入れるとか
さらにメモリの使い方にも気を配れればいい
書くと短くても動かすと重たい処理なんてたくさんあるし
0701デフォルトの名無しさん
2008/10/29(水) 16:48:37実際の処理が単純なのは違うよね
あと>>699の自己フォローなんだけど、
selectionの状態に依存するわな、、、w
areasが2-3ぐらいなら>>687の方が早いってことで
0702デフォルトの名無しさん
2008/10/29(水) 21:27:30検索した2つ右のセルの文字の最後に1をつけたい場合どうすればいいでしょうか?
0703デフォルトの名無しさん
2008/10/29(水) 21:39:33set piyo = cells.find(hoge).offset(0,2)
piyo.value = piyo.value & "1"
0704デフォルトの名無しさん
2008/10/29(水) 21:57:52【2 Excelのバージョン 】 Excel2007
【3 VBAが使えるか .】 超初心者です
【4 VBAでの回答の可否】 VBAでお願いします。
行の挿入、削除を教えてください。
A B A B C A B C
1 1001 1001 1 1001 1001 1001 1 1001 1001 1001
2 1003 1003 2 1003 1003 1002 2 1002
3 1004 1004 3 1004 1004 1003 3 1003 1003 1003
4 1005 1005 → 4 1005 1005 1004 → 4 1004 1004 1004
5 1006 1006 5 1006 1006 1006 5 1006 1006 1006
6 1007 1007 6 1007 1007 1007 6 1007 1007 1007
7 1008 1008 7 1008 1008 1008 7 1008 1008 1008
@ AB列の数字は同じものが入っています。
A C列に数値が入ります。
B C列に合わせて、A列、B列を挿入、削除したいです。
C列には1002がありますが、A,B列には1002が無いため、A,B列に行の挿入が行われ、次にC列に1005が無いため、A,B列の1005は
行の削除がされると言う具合です。
業務の効率化を図りたいので、申し訳ございませんがどなたか宜しくお願いいたします。
0705デフォルトの名無しさん
2008/10/29(水) 22:01:22自分で作ってみたけど、分からない所が出てきた。とかなら全然かまわないんだけど。
作成依頼所じゃないんで。
0706デフォルトの名無しさん
2008/10/29(水) 22:03:28もう一度書き込ませてください。
【1 OSの種類 .】 WindowsXP
【2 Excelのバージョン 】 Excel2007
【3 VBAが使えるか .】 超初心者です
【4 VBAでの回答の可否】 VBAでお願いします。
行の挿入、削除を教えてください。
@ A B
A B A B C A B C
1 1001 1001 1 1001 1001 1001 1 1001 1001 1001
2 1003 1003 2 1003 1003 1002 2 1002
3 1004 1004 3 1004 1004 1003 3 1003 1003 1003
4 1005 1005 → 4 1005 1005 1004 → 4 1004 1004 1004
5 1006 1006 5 1006 1006 1006 5 1006 1006 1006
6 1007 1007 6 1007 1007 1007 6 1007 1007 1007
7 1008 1008 7 1008 1008 1008 7 1008 1008 1008
@ AB列の数字は同じものが入っています。
A C列に数値が入ります。
B C列に合わせて、A列、B列を挿入、削除したいです。
C列には1002がありますが、A,B列には1002が無いため、A,B列に行の挿入が行われ、次にC列に1005が無いため、A,B列の1005は
行の削除がされると言う具合です。
業務の効率化を図りたいので、申し訳ございませんがどなたか宜しくお願いいたします。
0707デフォルトの名無しさん
2008/10/29(水) 22:05:26>705
0708デフォルトの名無しさん
2008/10/29(水) 22:22:44ありがとうございます!!
A列全部で検索かけたい場合どうすればいいでしょうか?
0709704 706
2008/10/29(水) 22:27:40EXCEL総合相談所で聞いてきます。
マルチになってしまいますが、ご了承ください。
レベルが上がったらこのスレに来たいと思います。
0710デフォルトの名無しさん
2008/10/30(木) 12:42:392003だとFindのヘルプにちょうどいい例が載ってるんだが2007では載ってないのか?
0711デフォルトの名無しさん
2008/10/30(木) 12:45:030712デフォルトの名無しさん
2008/10/30(木) 21:03:32cells はセル全部
columns(1) は1列目
ヒントはここまで。
0713デフォルトの名無しさん
2008/10/31(金) 03:25:08ズリネタとして結構面白かった
0714デフォルトの名無しさん
2008/11/02(日) 18:00:44rg=activecell
処理
この処理後に、元のアクティブセルに戻る文が書けません。
どんなだったか、教えて。
0715デフォルトの名無しさん
2008/11/02(日) 18:07:50処理の中で範囲を指定してコピー、貼付をしている。
application.screenupdating=false を直前に入れても
画面が動くのですが、画面が動かないようにできませんか?
0716y
2008/11/02(日) 18:36:29rg.Parent.Activate
rg.Avtivate
ついでに言うと、>714の2行目は構文ミスでエラーになるので修正が必要です。
>>715
CopyメソッドのDestinationプロパティに貼り付け先範囲を指定して、
一度にコピー・貼り付けを行うと、動く枠線が出ないようになります。
0717デフォルトの名無しさん
2008/11/02(日) 19:37:54久しぶりなので、マクロの記録で、終わってましたorz
おかげで、思い出すことが出来ました。
サンクス。
0718デフォルトの名無しさん
2008/11/02(日) 20:51:29その2行目も・・・
0719デフォルトの名無しさん
2008/11/02(日) 20:57:01を開き、データブックのイベントに対する処理をしています。
Excel2007はウインドウのタイトル右端の×ボタンが「閉じる」に対応している様
です。
Excel2007でも以前のバージョンと同様に「Excelの終了」にする方法を模索中です。
方法をご教授頂けると有難いです。
0720y
2008/11/02(日) 22:45:44うは ご指摘ありがとうございます。
>>719
×ボタンでBeforeCloseイベントが発生するので、
同イベントプロシージャ内に
Application.Quit
を記述します。
0721デフォルトの名無しさん
2008/11/02(日) 23:00:30最近、微妙な空気が読めなくなってきたよ・・・。
0722719
2008/11/02(日) 23:24:17自分もそれでExcelが終了すると思っていたのですが、ブックが閉じるだけです。
SnendKeys(Alt+F4)を試したら終了できました。orz
0723719
2008/11/03(月) 00:23:33SendKeys(Alt+F4)でもだめでした。
プログラムブック(A)からデータブック(B)を開いて、Bが変更された場合に
変更を保存するかどうかを確認するダイアログが表示されるので、Alt+F4
を送信するとダイアログが閉じられる事になるのでExcelを終了できません。
0724デフォルトの名無しさん
2008/11/03(月) 00:25:16application.quit の前にワークブックの close やってる?
後にしてみたらどうなる?2007はわからんけど、、、
0725722
2008/11/03(月) 00:44:26もう少し具体的に教えて下さいませんか。
2007以外は×ボタンでExcel終了が終了するようになっています。
同じブックを2007の互換モードで動かして×ボタンでExcelを終了
したいのです。
この方法が分からないのです。
0726デフォルトの名無しさん
2008/11/03(月) 01:21:12あ、ごめん
ttp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_060.html
この辺の問題のことだったの。
2007以外ではいけてるなら関係ないね。失礼した
0727y
2008/11/03(月) 07:57:502007で試さずに>720を答えてました。2007ではQuitだとうまくいかないんですね?
一応、Shift を押しながら×クリックすれば一発で終了するので、それで用が済むなら。
VBAでのやり方は、後で職場の2007で探してみます。
0728デフォルトの名無しさん
2008/11/03(月) 09:09:420729デフォルトの名無しさん
2008/11/03(月) 10:14:59後のことです。
範囲指定を解除する方法は、どこかのセルをactivateやselectするしか
方法はありませんか。画面のちらつきを少しでも防止したいので、セル指定を
したくないのですが、何か方法が無いでしょうか?
0730デフォルトの名無しさん
2008/11/03(月) 10:51:57>>725
724は具体的に言ってるでしょ。
ダイアログが出るために終了できないのならダイアログが出ないようにすれば?
どうしてダイアログが出るの?
ブックが変更されてるのに保存されてないからでしょ?
だったら保存したら?
こんなのパソコン初めて一週間のオッサンでも最初に覚えることの一つじゃないか。
>>729
全体的に何がいいたいのかよくわからない気がする。
0731デフォルトの名無しさん
2008/11/03(月) 10:54:12教えていただきたいのですが、
Book1を起動して
Book1のマクロで
Book2を開くことはできたのですが
Book2の内容をコピーして
Book1に貼り付けすることができません
よろしくお願いします。
0732デフォルトの名無しさん
2008/11/03(月) 10:59:28ググってもすぐ見つかるし
マクロの記録でもすぐ解るようなことを何故聞く?
そのものズバリの解除法が簡単に見つかるのに
>>731
Bool2を開くと、戻り値としてBool2のオブジェクトが返る
あとは好きなようにコピーなりなんなりすれば良い
0733725
2008/11/03(月) 11:12:00保存するかどうかはユーザーが決める事で、プログラム側で決められる
のは、×ボタンが押されたらWindows2007以外と同様な動作なんだけど。
説明不足?それとも...
0734725
2008/11/03(月) 11:17:49719に記述した通りなんだけど...
0735デフォルトの名無しさん
2008/11/03(月) 11:25:31だから?
ついでに言えば、お前さんの言っている現象はExcel2007に特有の現象でもなんでもないはずだ。
お前さんが検証もせずそう思い込んでいるだけにすぎない。
全く同じ条件であれば、2003以前のエクセルでも全く同じことが起こるはずだよ。
0736デフォルトの名無しさん
2008/11/03(月) 11:43:21確かに、Excel2000と2007で同じブックを動作した検証で違いが出た
だけですが...
0737デフォルトの名無しさん
2008/11/03(月) 14:48:400738デフォルトの名無しさん
2008/11/03(月) 20:06:15組み込みダイアログをそのまま使ってるのかな?>>733
組み込みダイアログ出た後の動作が 2007 とその他で異なる可能性あるし、
ユーザに選ばせるなら自前でやった方が確実かも
0739デフォルトの名無しさん
2008/11/05(水) 00:23:48たとえば、セル(4, 3)に '=A1+A2が記入してあり
その式をセル(5, 1)に書き込む場合
Cells(5, 1) = Mid$(Cells(4, 3), 1)
でどうでしょう?
0740デフォルトの名無しさん
2008/11/05(水) 01:33:080741デフォルトの名無しさん
2008/11/05(水) 10:16:29これを実行後するとワークシート上のUndo(元に戻す)が無効になっていまいます。
これって、仕様ですか?
0742デフォルトの名無しさん
2008/11/05(水) 11:06:19イミディエイトウィンドウでやるとVBA動かしたの時と同じでUndoできなくなる
?1+1とかでも同じ
でもウォッチ式として使えば問題ない
0743742
2008/11/05(水) 11:11:330744741
2008/11/05(水) 15:12:16? ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
だと、保護されたシートの時エラーになってしまう。
他にUndoを生かしたまま最終行を求める方法あります?
0745デフォルトの名無しさん
2008/11/05(水) 16:17:36?WorksheetFunction.Max(ActiveSheet.Cells(65536, 1).End(xlUp).Row,ActiveSheet.Cells(65536, 2).End(xlUp).Row,ActiveSheet.Cells(65536, 3).End(xlUp).Row)
もしくは
Dim lg(2) As Long
lg(0) = ActiveSheet.Cells(65536, 1).End(xlUp).Row
lg(1) = ActiveSheet.Cells(65536, 2).End(xlUp).Row
lg(2) = ActiveSheet.Cells(65536, 3).End(xlUp).Row
Debug.Print WorksheetFunction.Max(lg())
でどう?
0746デフォルトの名無しさん
2008/11/05(水) 16:42:43有難うございます。
? activesheet.cells(activesheet.cells.rows.count,1).end(xlup).row
で出来たのですが、列を特定しないと駄目なのですよね。
自分も気付いたのですが、
保護されているかどうかでUsedRangeとSpecialCellsを使い分けるという方法
もありますね。
0747デフォルトの名無しさん
2008/11/06(木) 01:26:47B2を起点とするデータ
B21を起点とするデータ
この二つのデータのグラフを作成しようと以下のマクロを作ったのですが、
Set muSouce2 = Range("B21").CurrentRegion
のところでエラーがでてしまいました。
この場合どうすればエラーが取れるのでしょうか?
Sub Graph1()
Dim mySouce As Range
Set mySouce = Range("B2").CurrentRegion
Charts.Add
ActiveChart.SetSourceData Source:=mySouce, PlotBy:=xlColumns
ActiveChart.ChartType = xlLine
Dim mySouce2 As Range
Set mySouce2 = Range("B21").CurrentRegion
Charts.Add
ActiveChart.SetSourceData Source:=mySouce2, PlotBy:=xlColumns
ActiveChart.ChartType = xlLine
End Sub
0748デフォルトの名無しさん
2008/11/06(木) 02:13:25set mySouce = の時は、データの入ってるワークシートが
アクティブになっててその書き方で行けるんだけど、
set mySouce2 = の時は先に作ったグラフシートがアクティブになってるから、
range("B21") がどこにあるのかわからんってさ
0749デフォルトの名無しさん
2008/11/06(木) 02:51:43なるほど!!明快な説明ありがとうございます。
つまり、set mySouce2 = の前に、
データが格納されているシートをセレクトすればよかったのですね。
対処だけでなく原因が分かりためになりました!
0750デフォルトの名無しさん
2008/11/06(木) 10:11:14そそ、それでOK。加えるなら、せっかく range型変数を2つ用意してるんだから、
最初にまとめて下準備しちゃえば効率がいいよね
selectせずに rangeを取得するやり方もあるけど、少しずつ覚えればいい
0751デフォルトの名無しさん
2008/11/06(木) 18:01:30Dim rng as Range
Set rng = ActiveCell
rng.Value = x
この方法だとアクティブセルの値が変更される為変更前の値の保持が必要になります。
もう少しましな方法を教えて頂けるとありがたいです。
0752デフォルトの名無しさん
2008/11/06(木) 18:14:58Format(x, ActiveCell.NumberFormatLocal)
セルの書式によってはバグるかも試練がw
0753デフォルトの名無しさん
2008/11/06(木) 18:35:33[G/標準]とかでエラーになる為、セル代入を考えたのですが...
0754デフォルトの名無しさん
2008/11/06(木) 18:50:58? worksheetfunction.text(x, iif(activecell.numberformatlocal="G/標準","General",activecell.numberformatlocal))
とかは?
0755デフォルトの名無しさん
2008/11/06(木) 19:12:31worksheetfunction.text(x, activecell.numberformat)
これでどうかな?
0756デフォルトの名無しさん
2008/11/06(木) 19:20:37書式に和暦や曜日が指定されてるとヘンになるよ
そういうの無視でいいならいいんだけど
0757デフォルトの名無しさん
2008/11/06(木) 19:35:05セルについて指定無しの状態にするすることは可能ですか?
set rg = nothing とか試してみたけどだめだったorz
0758デフォルトの名無しさん
2008/11/06(木) 19:44:51ほんとしつこいなぁ、、、って誰?w
というか、質問の意味がわからない
>>756
自己レス
曜日は関係なかった。組み込みの日付書式で和暦を選んだ時にヘンになる
0759デフォルトの名無しさん
2008/11/06(木) 19:50:15以前やってみようとした事があったけど見つからなかった
本当に出来るのかどうかも不明
>>758
お前頭悪そうだな
■ このスレッドは過去ログ倉庫に格納されています