1 名前:デフォルトの名無しさん mailto:sage [2009/07/14(火) 19:07:54 ] ExcelのVBAに関する質問スレです 前スレ pc12.2ch.net/test/read.cgi/tech/1241885130/ ★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)
411 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 23:20:12 ] 試したらこれでいけた Sub aaa() Application.DisplayAlerts = False For a = 2 To Worksheets.Count Sheets(a).Delete Next ActiveSheet.Cells.Clear Application.Save Application.DisplayAlerts = True End Sub
412 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 23:43:20 ] >411 >試したらこれでいけた 試してないけどSheets(a).Deleteはダメぢゃネーノ?
413 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 01:42:10 ] aは変数なんじゃね
414 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 06:36:51 ] >>410 試してないけど、ここは大丈夫か? Worksheets.Add after:=Sheets(Sheets.Count)
415 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 07:04:26 ] オートシェイプに背景画像を挿入する場合についての質問です。 手動でやる場合、 ・オートシェイプの書式設定 ・塗りつぶし ・色 ・塗りつぶし効果 ・図 ・図の選択 で、画像を挿入した際に、同ページに □図の縦横比を固定する □図形に合わせて塗りつぶしを回転する というオプションがありますが、このオプションをVBAで変更する方法を教えてください。 マクロの記録をしても、変更が記録されずに困っています。 WindowsXP/Office2003
416 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 09:39:24 ] >413 試してないけどシートのインデックス番号って削除したら前詰めじゃね? Sheets(1).Deleteなら分かる。
417 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 10:20:16 ] >>414 試してみたら2000では動いた 2003では試してないけど
418 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 10:50:25 ] >>324 の件ですが、どなたかご教授いただけないですかね・・・?
419 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 11:04:25 ] >>404 お前は何と戦ってるんだ
420 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 13:15:24 ] >>418 TCPIPの問題 ブラウザはデフォルトでアドレス変換したりするけどね エクセルでやりたいなら ¥¥PC名¥フォルダ〜 とかにしたら とりあえずググれば解決できる
421 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 13:17:45 ] >>419 いきなりどうしたの?
422 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 13:44:49 ] >>420 スレ違いなうえに、適当なことかましてんじゃねーぞ、ボケ
423 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 13:51:04 ] >>415 Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Rotation = 0#
424 名前:415 mailto:sage [2009/08/11(火) 15:23:47 ] >>423 > Selection.ShapeRange.LockAspectRatio = msoTrue は、 ・オートシェイプの書式設定 ・サイズ ・倍率 ・縦横比を固定する のON/OFFですね。 > Selection.ShapeRange.Rotation = 0# は ・オートシェイプの書式設定 ・サイズ ・サイズと角度 ・回転角度 の指定です。 どちらも目的の物とは全く違うようです。
425 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 16:22:39 ] >>422 が理解不能なのは俺だけ? 回答なのにスレ違いってなんぞ 適当云々は知らんけど、丁度いいし説明してくれるのかな?
426 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 17:53:16 ] VBA関係ないし、百歩譲ってもTCP/IPの問題じゃないし
427 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 18:02:11 ] >>425 適当かどうかも判断できないんだったら、黙っとけ
428 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 18:30:47 ] こういうことかな ebi.dyndns.biz/windowsadmin/2009/03/11/%E3%80%8C%E3%82%A4%E3%83%B3%E3%83%88%E3%83%A9%E3%83%8D%E3%83%83%E3%83%88%E3%81%AB%E7%B9%8B%E3%81%8C%E3%82%89%E3%81%AA%E3%81%84%E3%80%8D-%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%B5%E3%83%95/ おい関係ないなら誘導しろよ かいとう者に噛み付くなkzg あと説明もできないなら黙ってろ さっさと市ね ん
429 名前:423 mailto:sage [2009/08/11(火) 19:28:20 ] >>424 ・図の選択 で、画像を挿入した際に、同ページに □図の縦横比を固定する □図形に合わせて塗りつぶしを回転する Excel97だとそういうオプションないんだよな
430 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 21:14:34 ] 言い訳になってねーw
431 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:46:30 ] >424 ヘルプ参照または本屋にスパテク○○系を立ち読みしてくるべし。
432 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 10:40:26 ] 初心者ですが、質問よろしいでしょうか。 rangeやcellsは、オブジェクトになったりプロパティになったりとするのでしょうか。 私の認識では、rangeはオブジェクト、cellsはプロパティですが、 いろいろなコードを見ると オブジェクトとなったりプロパティになったりしているので ケースバイケースで使えるのかなと思ったのですが、これで合ってるのでしょうか。
433 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 11:00:35 ] オブジェクトとプロパティの意味を勉強しなおせ。
434 名前:432 mailto:sage [2009/08/12(水) 11:13:26 ] オブジェクト=対象 プロパティ=属性
435 名前:432 mailto:sage [2009/08/12(水) 11:16:34 ] 修正 オブジェクト=構成要素
436 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 11:37:44 ] なら分かるだろ? >私の認識では、rangeはオブジェクト、cellsはプロパティですが、 その認識が間違い。 Rangeに変数が使えないとかCellsでは1セルor全セルしか指定できない などの制約によって使い分けてるだけ。
437 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 11:47:33 ] >>436 その説明もおかしいだろw
438 名前:432 mailto:sage [2009/08/12(水) 12:17:09 ] すいません。。。 勉強しはじめたばかりで。
439 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 12:35:00 ] >>436 Range("A" & i).Valueとかよく使うよ 手元のVBA辞典だと Rangeはオブジェクトとプロパティ Cellsはプロパティ 実例でいうと Range("B2").Cells(2, 2).Activate Range("B3").Range("B2").Activate と書けるが Cells(3, 2).Range("B2").Activate とは書けない
440 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 12:39:43 ] Range("B3").Range("B2").Activate は オブジェクト.プロパティ.メソッド
441 名前:432 mailto:sage [2009/08/12(水) 12:47:08 ] 439さん ありがとうございます! VBA辞典買います。 ずうずうしくもうひとつ質問です。 Worksheets("sheet1").Cells(i,5).Value この場合 コレクション.プロパティ.プロパティ でしょうか。
442 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 13:27:02 ] Cells.selectは?
443 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 13:27:52 ] コレクションはオブジェクトの集合体 Worksheets("sheet1")はオブジェクト Worksheetsはコレクション 実例 Worksheets.Count Worksheetsコレクションに含まれるWorksheetsオブジェクトの数
444 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 13:29:18 ] プロパティで取得できるものが、オブジェクトだったりそうでなかったりするんだ。 rangeプロパティもcellsプロパティもrangeオブジェクトを取得できる。 rangeのcountプロパティはlongを返す。 >Cells(3, 2).Range("B2").Activate 書ける。 コレクションもオブジェクトだコラ。
445 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 13:43:14 ] Cells.selectのCellsは、Cellsコレクション >444 Cells(3, 2).Range("B2").Activateって書けたね、スマソ >コレクションもオブジェクトだコラ それはそうだが、 コレクションはCountできるが、オブジェクトはCountできないし オブジェクトにNameはあるが、コレクションにNameはない
446 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 13:46:21 ] /) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
447 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 14:13:24 ] >>445 お前もう何も書くな
448 名前:432 mailto:sage [2009/08/12(水) 14:18:12 ] なるほど。 勉強になりました。 ありがとうございます。
449 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 16:52:27 ] >>445 マジなのかジョークなのか、判断に苦しむ。
450 名前:デフォルトの名無しさん mailto:age [2009/08/12(水) 17:49:21 ] はじめまして LineInputでファイルを一行づつ読み込みたいのですが 読み込みたいファイルがUNIXのファイルなんで改行がLFとなり一行と認識してくれません。 一行ごとに読みたいのですが何かいい方法ありますか?
451 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:06:22 ] >>450 変数に読み込んでからvblfで分割がいいのでは?>>215 あたりを参照
452 名前:デフォルトの名無しさん [2009/08/12(水) 20:54:40 ] ワークシートを呼び出すとき、 Sheet1のようなオブジェクト名で呼ぶのと、 Sheets("名前")で呼ぶのとでは、 動作が異なる場合がある?なぜ? Sheet1(名前は"テスト"): Sub test(X As TestType) MsgBox X.a End Sub 標準モジュール: Type TestType a As String End Type Sub test() Dim X As TestType X.a = "ほげ" Call Sheet1.test(X) '動く Call Sheets("テスト").test(X) '動かない End Sub なるべくシート名を使いたいのだが…
453 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 21:56:02 ] >>452 詳しい人が来るまでの繋ぎに気付いた点をレスすると シート名と言ってもオブジェクト名としてのシート名と表示上のシート名は多分別物で VBEで「sheet1(うんじゃらげ)」の前半が多分オブジェクトとしてのシート名。 プロパティーウィンドウから変更できた気がするようなしないような。 質問のケースへの対応なら 表示上のシート名からインデックス番号を取得してそれを使うのが早いかな?Byなんちゃって回答者
454 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 22:09:47 ] >>453 ありがとうございます、 Sheet1と書いたのはオブジェクト名としてのシート名、 Sheets("テスト")は表示上のシート名です。 オブジェクト名もプロパティウィンドウから変更できるのを いま知ったので、今後はオブジェクト名だけを使えば解決、だけど、 ここまで全部、表示上のシート名で書いてきたから変更がめんどいのと、 上記の動作が異なるメカニズム自体を知っておきたくなって。
455 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 22:52:17 ] Sheet1はクラス、Sheets("sheetname")はWorkSheetオブジェクト
456 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 23:10:33 ] 又、オブジェクト指向の話かww
457 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 00:05:49 ] >>455 だと、なんで>>452 のようになるの?
458 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 00:09:02 ] >>455 Sheet1は事前バインディング、Sheets("テスト")は実行時バインディング
459 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 00:21:06 ] >>455 Excel2000(VB6.0)でも再現したからそれはない
460 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 00:41:12 ] >>459 vb6.0にクラスの概念がないと思っている人?
461 名前:458 mailto:sage [2009/08/13(木) 00:41:15 ] 失礼、 >>458 は>>452 宛で
462 名前:452 mailto:sage [2009/08/13(木) 00:57:14 ] >>458 ありがとうございます。 Excel VBAでのオブジェクト指向の理解が足りないので 十分には理解できてませんが、教えた頂いたキーワードでググったら、 何が問題なのかはちょっとわかりました。 シートの参照は、どちらでもいい場合は 事前バインディングになるSheet1のほうがメリット多そうなので、 以後なるべくこちらを使うことにします。
463 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 01:06:26 ] >>460 >>455 が暗黙のインスタンスのことを言っていると解釈した上でのレスだ
464 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 01:15:52 ] formsコレクション知ってるならいいよ。
465 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 01:22:09 ] >>464 ごめ。いみふだ。なしで。
466 名前:デフォルトの名無しさん [2009/08/13(木) 12:37:06 ] Excel2003/XP 配列で質問させてください。 Dim myArray() As Variant Dim r As Long r = Range("C1").End(xlDown).Row ReDim myArray(r) myArray = Range("C1:C" & r) MsgBox myArray(1) '←エラー発生 End Sub Msgboxでエラーとなるのですが、原因はmyArrayが2次元 配列になっているのが原因でした。 ステップインで確認すると myArray = Range("C1:C" & r) の時にローカルウィンドウの型で確認すると2次元になってしまいます。 何故配列myArrayは2次元になってしまうのでしょうか? よろしくお願いします。
467 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 12:38:19 ] セル範囲を流し込んだから 仕様
468 名前:466 mailto:sage [2009/08/13(木) 13:31:03 ] >>467 仕様でしたか・・・ レスありがとうございました。
469 名前:デフォルトの名無しさん [2009/08/13(木) 17:11:11 ] 検索する時に検索値に変数を代入するにはどうしたらいいのでしょうか? 例えば、変数Aに「りんご」を代入し、ワークシート全体から「変数A」で検索して「りんご」を探したいのですが・・・
470 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 18:58:46 ] 検索をマクロで記録して、 "" で囲まれてる文字列の部分を、 ダブルクオーテーション外して変数名にすれば良いのさ。
471 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 21:29:27 ] ユーザー設定ボタンをツールバーに組み込んでるんですが、 ボタンでトグル動作、例えば書式の太字や斜体みたいのやりたいのですが、 マクロ内でボタンが押される度に画像を変えて、状態を記録してってやらんとダメでしょうか? プロパティとかでトグルボタンが設定できて状態が読めたりするとうれしいのですが
472 名前:デフォルトの名無しさん [2009/08/13(木) 23:00:29 ] インプットボックスを使って20個の整数を入力して、大きい順に並べ替える プログラムを作りたいんですが、簡単に作れますかね?? VBAはほとんど素人で、今勉強を始めたばかりです。。 とりあえずコレは明日までに仕上げたいんですが、
473 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:15:19 ] >>472 割と簡単だけどズブの素人が明日までに仕上げるのは無理かも
474 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:26:24 ] >472 アキラメロン♪
475 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:58:36 ] ひんとやるわ Sub test() Dim lst As New Collection lst.Add (InputBox("1:")) lst.Add (InputBox("2:")) lst.Add (InputBox("3:")) lst.Add (InputBox("4:")) lst.Add (InputBox("5:")) For Each v In lst 'ここでソートしてね Debug.Print v Next End Sub
476 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 00:13:30 ] >>472 作ってみたよ。 Option Explicit Sub 整数を入力して大きい順に並べ替える() Dim aaa As Integer For aaa = 1 To 20 Cells(aaa, 1).Value = Application.InputBox(Prompt:="数値を入力してください", _ Title:="数値入力", _ Type:=1) Next Range("A1:A20").Sort _ Key1:=Range("A1") _ , Order1:=xlDescending _ , Header:=xlGuess _ , MatchCase:=False _ , Orientation:=xlTopToBottom _ End Sub
477 名前:デフォルトの名無しさん [2009/08/14(金) 03:51:41 ] >>475 >>476 本当にありがとうございます。 お二人に神のご加護があらんことを!
478 名前:デフォルトの名無しさん [2009/08/14(金) 03:58:38 ] 今のところ、まだIF文とかfor文までしか理解できてないんで、2人の文にあった関数調べて頑張ります! 本当助かりました!
479 名前:415 mailto:sage [2009/08/14(金) 09:58:19 ] >>431 ヘルプは質問前に項目名で検索してみましたが、関係ない物ばかりで 目的の物は出てきません。 「スパテク○○系」というのが「ExcelVBAスパテク368」のことなら 読んできましたが載ってませんでした。 「スパテク○○系」というのがこれではなく、他に確実に載ってるものがあるなら 出来れば内容を教えて欲しいところですが、せめて正式な書籍名だけでも教えてください。 確実に載ってる書籍が無いなら、引き続きここで >>415 をお願いします。
480 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 12:02:35 ] >>471 application.commandbars.コントロール じゃいかんかね
481 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 00:23:05 ] >>480 それをヒントに頑張ったらでけた CommandBarButton.State にボタンのON−OFFがあった ありがとう
482 名前:デフォルトの名無しさん [2009/08/15(土) 12:43:39 ] すいません教えてください FileCopy D:\aaa.txt, "C:\aaa.txt" これでD直下にあるaaa.txtファイルをC直下にコピーするという事ですが これだとどうしてもaaa.txtというファイル名を指定しなければなりません これを FileCopy D:\aaa.txt, "C:\" みたいにaaa.txtをC直下にそのままの名前でコピーさせたい場合ってどうすればいいのでしょうか?
483 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 13:38:13 ] >>482 どんなシチュエーションかわからんけど 第一引数でファイル名を指定する必要がある以上ファイル名は既に分かっているはず 例えば filename="aaa.txt" FileCopy "D:\"&filename,"C:\"&filename みたいなんだとダメなん? あとはFileCopyじゃなくてFileSystemObject使うとか
484 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 14:48:42 ] >482 用途が分からんけど Source = "D:\aaa.txt" Destination = "C:\" 'Sourceからファイル名のみを取出す処理をここに記述 FileCopy Source, Destination & FileName とすればいいんじゃない? ファイル名のみを取出すのは、文字列関数なんかを使えば できると思うけど...... んで 自分ならこうするってのを参考程度に 作ってみた(Dir関数を使用) Dim Source, Destination, FileName Source = "D:\aaa.txt" Destination = "C:\" FileName = Dir(Source) If FileName <> "" Then FileCopy Source, Destination & FileName Else MsgBox (Source & "が見つかりません") End If
485 名前:デフォルトの名無しさん [2009/08/15(土) 14:53:36 ] EXCEL2003,XPsp2です。 次のコードが実行時エラー1004になります(2行目)。 c=5 Columns("3:" & c).Select 列選択の範囲を可変(実行時決定)にしたいのですが、 どうすればよいのでしょうか。 よろしくお願いします。
486 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 15:33:50 ] >485 なんかColumnsの使い方間違っているような あんまし詳しくないんでなんとも言えないけど Range使っちゃだめなケースなの?
487 名前:485 [2009/08/15(土) 16:10:43 ] >>486 レスありがとうございます。 3列からc列まで選択できれば、何でも結構です。 ちなみにRangeだと、どうすれば良いのでしょうか?
488 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 16:13:43 ] >>487 つマクロの記録
489 名前:486 mailto:sage [2009/08/15(土) 16:41:19 ] >487 このケースは、VBAを使う上での基本中の基本だとおもうので 調べてくださいとしかいえません。 >1 の★5 と★6 を熟読の事
490 名前:487 [2009/08/15(土) 17:07:16 ] >>488 ,489 レスありかどうございます。 マクロの記録には、 Columns("3:5").Selectと出てきます。 c=5 Columns(〜c〜)とは出て来ません(変数を使ったコードは出てこない)。 どうすれば良いのでしょうか?
491 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 17:24:58 ] >>490 >>(変数を使ったコードは出てこない)。 出てくるわけネーダロw
492 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 17:47:37 ] >>490 dim c as string c = "5" でどうでしょう?
493 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 17:49:02 ] >>487 ヒント range ( , ) columns(3) columns(c) .select
494 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 18:06:48 ] >>493 492ですができました。 勉強になりました。 ありがとうございます。
495 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 18:16:48 ] マクロの記録をすると Columns("C:E").Select ってでてくるよ >>492 "3:" & c &は文字の結合だから
496 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 18:19:09 ] Columns("3:5").Selectって記録マクロでできるか? Range("3:5").SelectとかRange("3:5").Selectならわかるが、Columns("3:5")は動かんなぁ。 記録マクロが動かんマクロになるわけないと思うが。
497 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 18:20:03 ] 493で答え出とるがな
498 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 18:20:14 ] すまん、Range("3:5").SelectとかRows("3:5").Selectの間違い。
499 名前:492 mailto:sage [2009/08/15(土) 18:22:07 ] すいません。 僕のは間違えです。
500 名前:486 mailto:sage [2009/08/15(土) 19:17:25 ] >>495 へのレス >>490 >>495 は同一人物だと仮定してレスします 別人だったらすみません。 >>490 >マクロの記録には、 >Columns("3:5").Selectと出てきます。 >>495 >マクロの記録をすると >Columns("C:E").Select >ってでてくるよ なんかレス番によってマクロの記録結果が違っているのですが.... Columns("3:5").Select って本当に記録された?
501 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 20:07:43 ] ヒント 列と行を広辞苑で調べてみようっ!
502 名前:デフォルトの名無しさん [2009/08/15(土) 21:34:46 ] オブジェクトやプロパティやメソッドの検索の基本的なやり方を教えて頂きたいです。 オブジェクトブラウザ インテリジェンス ウォッチ ヘルプ、MSDN、Google 等々ありますが、これらの強み弱み、表示できない事、表示できる事を、 上手くまとめて頂けないでしょうか。 ウォッチでは実行時のプロパティーは表示されるけど、 何故か一部のプロパティーが表示されないし、 メソッドは当然の如く表示できません。 オブジェクトブラウザやインテリジェンスは、 実行時系プロパティーが当然取れません。 隠しオブジェクトについては、表示する様にすれば表示できますが。 ヘルプは実行時系も隠しもメソッドも全てあると思いますが、 検索性に難ありで、網羅性や信頼性に疑いを持ってしまう所アリ。 間違いがあったり、足りない所があれば教えて頂きたいです。 アーリーバインディングやレイトバインディングとか、 その辺りとの関わりも良く分かって無いです、 教えていただけると助かります。
503 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 22:32:48 ] 宿題は自分で頑張ってね。
504 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 22:34:06 ] >>502 ググレカス
505 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 23:30:05 ] 質問です 一つ目 選択範囲のセルをオブジェクト変数に代入するにはどうすればよいでしょうか? Dim aaa aaa = Selection としてもaaaにはvalueしか入らず、文字列の配列になってしまいます。 二つ目 選択範囲の全てのセルに対し、 長さが5じゃなければそのセルに文字列""を代入するというコードを書いてみましたが aaa = "" の行で「実行時エラー'10' この配列は固定されているか、または一時的にロックされています」 というエラーが出ます。どういう風に書けばよいのでしょうか? また、aaaの文字列の配列に直接値を入れたとしてもselectionに反映されません。これもどうすればよいのでしょうか? 勉強中に作ってみたものなので、特にこのコードを使って何かを処理するわけではありません。 コレクションをうまく使ってみたいと思っています。 よろしくお願いします。 Sub a() Dim aaa Dim m aaa = Selection For Each m In aaa If Len(m) <> 5 Then aaa = "" End If Next End Sub
506 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 23:51:17 ] >>555 Sub test() Dim rng Set rng = Selection For Each cell In rng If (Len(cell) <> 5) Then cell.Value = "" End If Next End Sub
507 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 23:55:21 ] >>506 おお、すごい!ありがとうございました
508 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 00:34:34 ] >>505 はオブジェクト指向の考え方を一度学んだ方が良いと思う 今後も、できねー、なんで?を連発の予感
509 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 00:37:25 ] dimで宣言するなら型までだな
510 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 00:39:51 ] >>509 同意 更に option explicit を入れないと何となく動くけど、変なエラーが・・・になる
511 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 00:46:42 ] C使ってるとこの表現忘れがちになるな 俺だけかな