1 名前:デフォルトの名無しさん mailto:sage [2008/12/04(木) 15:42:51 ] ExcelのVBAに関する質問スレです 前スレ pc11.2ch.net/test/read.cgi/tech/1219673793/ ★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)
741 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:36:34 ] ブックAにブックBへのハイパーリンクを張って、ブックBの Private Sub Workbook_Open() 内で色々と処理をしているのですが、 ブックA内のハイパーリンクをクリックした時にブックBを表示させずにその後の処理を実行する方法はありませんか?
742 名前:デフォルトの名無しさん [2009/02/02(月) 00:57:32 ] 初心者です。教えてください。 今フォームを使ってデータの抽出をするプログラムを作っています。 データは階層構造になっています。 仮に3階層あるとして、フォームにその3階層をプルダウンで指定してやると条件に一致したデータが表示されるようにしたいのです。 その際、上位階層をプルダウンで指定すると、その上位階層が包含する下位階層のみが プルダウンで表示されるようにしたいのですが、どうしたらいいのでしょうか。 フィルタオプションを使用しようと思うのですが、可能でしょうか? 困っています。教えてください。
743 名前:デフォルトの名無しさん [2009/02/02(月) 01:47:00 ] こんばんは。すみません、エクセルの質問させてください。 ブックAのシート1のA1にブックBのシート1のA1からA5を、足した結果をだしたい場合、どの様に入力すればよいですか? どうかおしえてください。お願いします。
744 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 04:53:09 ] >>741 ハイパーリンクでは、ブックを非表示で開くことは出来ない ハイパーリンクをボタンとかに変えて、ブックAのVBAからブックBを非表示で開きましょう 因みにVBAからブックを非表示で開く方法は、幾らでも情報有るから自分で調べましょう>>1 ★5 >>742 入力規則のリストの連動ならまだしも、Excel用ではなく汎用ActiveXのコンボボックスの連動は Excelに関係ない話なのでスレ違いです>>1 ★3〜★4 とりあえずVB6用の方法がほとんどそのまま使えるし、サンプルも転がってる >>743 WorksheetFunction.Sum 中に入る式は、普通にシート上で入力する式と同じだから解るよな? まあ解らなくてもスレ違いだから自分で調べろってことになるが
745 名前:741 mailto:sage [2009/02/02(月) 21:58:13 ] >>744 741です。 お答えありがとうございます。 うーん、やはりハイパーリンクでは無理でしたか。 私の作った処理をもう少し詳しく言うと ハイパーリンクをクリックするとそのセルがアクティブになることを利用して ブックBのPrivate Sub Workbook_Open() の中で Workbooks("B.xls").Worksheets(1).Cells(1, 1) = ActiveCell.Offset(0, 1) みたいな感じでハイパーリンクの隣のセルの情報を転記するという処理を行っていたのですが。 例えばA1とA2のセルの上にセルと同じ大きさのボタンを作り、両方のボタンに同じマクロを登録して A1の上に作ったボタンをクリックするとB1の情報を転記し、A2の上に作ったボタンをクリックするとB2の情報を転記する という処理って作れますか? ハイパーリンクみたいにクリックするとその下のセルがセレクトされるみたいな処理が作れればいいんですけど。
746 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:52:18 ] >>745 作れるよ ボタンに限らずオブジェクトには配置されてるセルアドレスを返すプロパティがあるから それが何かくらいは自分で調べようね
747 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 07:39:03 ] >>742 Private Sub Select change AddItem
748 名前:741 mailto:sage [2009/02/03(火) 23:43:31 ] セルを左クリックするとマクロが起動する処理って作れませんかね? Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) というのを使うと目当てのセルをクリックしただけでマクロを起動できるようになったんですけど エンターを何回か押していたらその目当てのセルまでアクティブが移動してしまって望まないタイミングでマクロが起動されてしまいます。 そうではなくあくまでクリックした時にマクロが起動できるようにしたいんですけど、いい方法ありませんか?
749 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 00:04:20 ] >>748 WorkSheetにはクリックイベントがないから、 セルに同じサイズのボタンを貼り付けるぐらいしかないんじゃ
750 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 00:38:21 ] ワークブックにWorkbook_SheetBeforeDoubleClickてイベントに有るし Workbook_SheetBeforeRightClickっていうのも有るし、シート名を取得して実行すれば良いのでは?
751 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 01:35:00 ] >>750 普通「クリック」と言えば左シングルクリックのことだろう。 右クリックやダブルクリックイベントでどうしろと。
752 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 02:43:54 ] それ言い出すと、>>749 も セルをクリックで処理したいって言ってるのに ボタンクリックでどうしろと ってことになるな。 俺は>>749 も>>750 も代用法のひとつとして有用な情報だと思うけどね。 >>749 も書いてるが「セル」の「左(シングル)クリック」イベントは無いから、 対象が「セル」であること(ボタンなどを配置しなくても済むこと)を優先するなら>>750 「左シングルクリック」で操作できること(ダブルクリックしなくて済むこと)を優先するなら>>749 ってことでいいじゃん。 俺の場合、目当てのセルが複数ならダブルクリックイベントで、ひとつならボタンで妥協するかな。
753 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 02:55:30 ] ボタンでやってみたけど、色を透明にしておいてもクリックするとなぜか灰色になって 下のセルが見えなくなっちゃうんだな。XPと2003の環境で。 代用案として出すなら、イメージコントロールを貼り付けて透明なGIFを貼った方がよさそう。
754 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:22:39 ] ボタンの代わりか・・・ つラベル
755 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 20:43:07 ] なぜ“左”クソツクなのか。右でいいやん。
756 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 20:48:34 ] 作った本人が使うんならいいけど、人が使う物なら標準と異なるUIは避けるべきかと
757 名前:741 mailto:sage [2009/02/04(水) 20:59:06 ] 741です。 皆さん色々とありがとうございました。 とりあえずボタンでやってみようと思いますが、 745でも言ってるように複数張ったボタンの内一つを押した後それに応じたセルを指定する方法が いまだにわからない状態です。 とりあえずもうちょい調べてみます。
758 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:05:26 ] >>757 VBAにはコントロール配列が存在しないから、 ボタンをたくさん貼ればボタンの数だけ独立したイベントハンドラが作られる。 だから、ボタンごとに各セルの処理をずらずらっと並べて書けばいい。 冗長だし面倒だけど。 さもなくば、ボタンの座標とセルの座標を比較して、重なった位置のセルを探し出すとか。
759 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:30:54 ] 疑似コントロール配列使おうよ クラスの作り方工夫すれば、疑似コントロール配列にした上で 処理は同じだが対象は違うというようにも出来るし、 そもそもボタンがどのセル上に配置されてるかは取得できるし
760 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:53:42 ] 質問です Sheets("sheet1").Select Dim MyRange As Range Set MyRange = Columns("A").Find(What:=Sheets("Sheet2").Range("A1")) いくらやっても検索値がnothingになってしまいます どこを変えればうまく検索できますか
761 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:03:34 ] Sheets("Sheet2").Range("A1")に入っている値が Sheets("sheet1")のA列に存在しないとnothingになるけど
762 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 22:28:03 ] >>760 別にどこも間違ってないから、原因として考えられるのは、本当に探してるデータが存在しないか、検索条件が違ってるか、だな。 それでもうまくいかない時は、Findメソッドの検索条件を省略せずにきちんと書いてみる。一例を書くとこんな感じ。 Set MyRange = Columns("A").Find(What:=Sheets("Sheet2").Range("A1"), LookIn:=xlFormulas, LookAt:= xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False)
763 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 23:33:13 ] Flash持ってるなら、Flashの透明ボタン張るのが一番良いと思う。
764 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:03:24 ] 質問です。 Dim v(1 To 10) As Long とするのと Dim a(1& To 10&) As Long とするのはどっちがいいですか?
765 名前:764 mailto:sage [2009/02/05(木) 00:05:42 ] すいません。 vとaとなりましたが、どっちもvです。
766 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:08:28 ] Columns("A")もまずいな。 シートモジュールに書いてるかも知らんしな。 ちゃんとシートくらいは指定汁.
767 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 00:09:34 ] >>764 この場合、配列のサイズはコンパイラが解釈するので型指定は意味がないと思う
768 名前:764 mailto:sage [2009/02/05(木) 00:23:21 ] >>767 そうなんですか。ありがとうございます。
769 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 11:43:29 ] OS XP / EXCEL2003 です。 仮に「A」というファイルがあったとして「A」のVBAから、 別のファイル「B」の「ActiveX コントールのコンボボックス」の値を参照することは可能でしょうか?
770 名前:デフォルトの名無しさん [2009/02/05(木) 15:25:43 ] sheet1を選択している状態で以下のマクロを実行しても sheet2のAAAという文字列がBBBに置換されません sheet2ではなく、sheet1のAAAが置換されます Worksheets("Sheet2").Select Cells.Replace What:="AAA", Replacement:="BBB", MatchByte:=False
771 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:31:17 ] >>770 1行ごと(処理ごと)にいちいち対象となるシートを書かないとActiveSheetが処理される。 Worksheets("Sheet2").Cells.Replace What:="AAA", Replacement:="BBB", MatchByte:=False または、 Worksheets("Sheet2").Select Selection.Cells.Replace What:="AAA", Replacement:="BBB", MatchByte:=False みたいな感じにしなきゃいけない。 確認してないからオブジェクトのエラーが出るかもしれないけど、基本的な考え方としてはこんなところ。
772 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 15:33:20 ] >>769 可能です
773 名前:769 mailto:sage [2009/02/05(木) 18:35:27 ] >>772 ご返答ありがとうございます。 もし良かったら何か例文を載せて頂けないでしょうか。
774 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 19:10:09 ] フォーム上に配置したWEBブラウザコントロールを印刷したいのですがうまくいきません。 印刷はフォームのPrintFormメソッドを使っています。 コマンドボタン・ラベル・テキストボックス・コンボボックス等は印刷されるのですが WEBブラウザが配置されているところは空白になってしまいます。 検索してみたところAPIを使用する方法を見つけたのですが理解することができませんでした。 APIはブラウザ表示内容を画像として取得する方法だったのですが それをイメージコントロールに貼り付けるという流れになるのでしょうか? よろしくお願いします。
775 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:46:41 ] >>773 >>1 ★5の通り、ここはヒントだけで自分でコード書ける人用のスレなので例文は書きません とりあえずヒントとしてBのブックオブジェクトさえ作ってしまえば、あとはBから取得するのと変わらないと言っておく >>774 >>1 ★3,4 Excelと直接関係ない汎用コントロールの話はスレ違いです
776 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:08:58 ] あのさー、何度も言ってるけど>>1 はスレの合意じゃないから。 誰かが勝手に書いて、次スレ立てるときにコピペしてるだけ。 気に入らない発言はスルーしろよ。
777 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:34:26 ] >>770 だから標準モジュールじゃなくシートモジュールに書いてるんだろ? SHeet2のシートモジュールに書いてればCellsの親はSheet2なんだよ。 いちいちSelectしないコーディングを心がけてりゃそういう間違いはおかさない。 Worksheets("Sheet2").Select Cells.Replace What:="AAA", Replacement:="BBB", MatchByte:=False こんなことしないで Worksheets("Sheet2").Cells.Replace What:="AAA", Replacement:="BBB", MatchByte:=False と書けば標準モジュールでもシートモジュールでもユーザーフォームのモジュールでも ThisWorkBookのモジュールでも無関係に処理できる。 >>760 も同じ間違いだ・
778 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:37:42 ] ちょっとミスった。 >>777 の3行目は Sheet1のシートモジュールに書いてればCellsの親はSheet1なんだよ。 に訂正。 >>771 も嘘書いちゃいかん。 ActiveSheetが処理されるとは限らないんだよ。
779 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:42:36 ] >>776 気に入らない発言はスルーしろよ。
780 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:42:54 ] フォルダ「A」に 「A」「1」「2」「3」というファイル名のExcelワークシートが4つあります ファイル「A」のcell(P1:DY1850)の数式をコピーし「1」「2」「3」のcell(P1:DY1850)に自動的に貼り付けていきたいのですが どのようにすればいいのでしょうか? よろしくおねがいします
781 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:43:52 ] >>779 これ言っとかないと、>>1 を理由にスレ違い認定したがる奴が増えるかもしれんからな。
782 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:48:13 ] >>780 まずマクロの記録をやってみろ
783 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 11:41:22 ] ★使ってるのは多分一人。 気に入らないなら無視すれ。
784 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 12:32:05 ] >>1 のテンプレが無かった頃から、同じ様な内容の指摘は多々あったので 指摘が>>1 ★n形式か、毎回文章で書かれるかの違いでしかないんだけどね 反抗期の子って、対象が形(テンプレ)になると妙に反発心燃やしたりするけど そもそもテンプレったって、書いてあることを端的に見れば 「バージョン情報書け(★1)」「他分野の話を持ち込むな(★2〜4)」「丸投げするな(★5)」「マクロの記録くらい試せ(★6)」 だけ これに反発してる子って、バージョン情報不要だと思ってるの? COMやOCXやWin32APIの話から、VB言語で組める全てのアルゴリズムの話までオールOK? そして丸投げも大歓迎で、マクロの記録なんて試すくらいなら、俺が親切丁寧にコード書いちゃるってか? 実のところはそんなこと無いだろ? 結局形有る物に反発したい年頃なだけで、根底は>>1 の内容に賛同してるんだろ? 上記3つともOKなら、「>>1 は絶対のルールじゃない」とか「気に入らないなら無視しろ」とか みみっちいこと書くのではなく、それこそ「気に入らない"スレ違い指摘"は無視」して、ちゃっちゃと答えちゃえば スレ違い指摘の意味すら無くせるので一番効果的なはずなのに、それをしないのが何よりの証拠 と、暇なので長々と書いてみたが、「気に入らないなら無視すれ。」 言ってる本人が出来なかったら恥ずかしいからなw
785 名前:769 mailto:sage [2009/02/06(金) 13:13:03 ] >>775 ご返答ありがとうざいます。 ブックオブジェクトを作るとのことだったので、 a.xlsに下記のように記述し実行してみたのですがエラーになってしまいました。 アドバイスを頂けないでしょうか。 Workbooks.Open Filename:="c:\b.xls" Workbooks("b.xls").Activate MsgBox Application.Workbooks("b.xls").ComboBox1.Value ←ここでエラーになります。
786 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 13:15:27 ] >>784 落ち着けよ
787 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 13:17:16 ] >>784 つまり、俺様はスレ違い認定する権利があってそれをするのだが、お前はそれに口出すな、ってことですね。
788 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 13:20:36 ] >>786 とりあえず落ち着け
789 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 13:31:10 ] >>785 コントロールの前にシートを指定していないせいだ
790 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 13:34:51 ] >>784 が★使ってスレ違い認定する奴だってことは分かった。
791 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 13:47:00 ] >>787 別に口出ししてもいいよ ただ、本当に>>1 が気に入らないなら、スレ違い指摘してる奴に ムキになって食い付くより、そんなの無視して答えちゃえばいいじゃんと 口出すなと言ってるのは>>776 他 >>790 もちろん俺も使ってるよ というか、改めて言うまでもなく解るように書いたんだがw
792 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 13:50:41 ] どっちがムキになってんだかw
793 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 13:55:11 ] 反論できないときは、相手を卑下して優位に立ったつもりになり 精神的安定を図るのが吉です
794 名前:769 mailto:sage [2009/02/06(金) 13:59:58 ] >>789 ↓でできました!!ありがとうございます。!!! MsgBox Application.Workbooks("b.xls").Sheets("Sheet1").ComboBox1.Value
795 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 14:13:36 ] これも>>1 に反発するなら、ブックだシートだとヒント出してる俺等を無視して、 丸投げ上等でスパっとコード書いちゃえばいいのに、何故それをしないんだろう? 結局は何かに反抗してみたい年頃なだけで、心底>>1 を否定してるわけではないんだよな
796 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 14:26:17 ] どうやって教えるかは決まってないし、人それぞれだから。 別にいきなり答えを書いちゃってもいいし、 それだと同じ人が何度も質問してきてウザく感じたりスレが荒れたりする可能性があるから、 できるだけ自分で考えるように誘導してやった方がいいと考える人もいる。 進行中の質問に別の回答者が割り込んで、いきなり答えだけを書いても何も問題はない。
797 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 14:54:01 ] 質問者だって、いきなり答えだけ書けよって思ってるかもしれないし まじめにVBAの勉強をしてるかもしれない
798 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 20:38:01 ] >>795 いや、俺は否定してるけど何か?
799 名前:Excel2003,XP home sp2 mailto:sage [2009/02/06(金) 20:42:54 ] 質問です 隠しシートに読み込んだCSVファイルの中身を出力しようとしているんですが元のシートのほうに出力されてしまいます。 シート参照のが仕方マズイのでしょうかヒントをください
800 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 20:50:52 ] ・どうやって読み込んだのか書け ・「元シート」とは何だ? ・「シートの参照」とは具体的に?
801 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 20:51:26 ] 追加 ・どこに出力しようとしてるのか書け
802 名前:Excel2003,XP home sp2 mailto:sage [2009/02/06(金) 20:51:33 ] ↑のコードtoku.xdisc.net/cgi/up/ttt/nm9199.txt
803 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 20:54:38 ] worksheets("隠しシート名").range(hogehoge
804 名前:Excel2003,XP home sp2 mailto:sage [2009/02/06(金) 20:56:24 ] >>803 やってみますありがとうございます
805 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:36:38 ] みんな落ちつけ。 落ち着いてExcelにFlash張りつけろ。
806 名前:デフォルトの名無しさん [2009/02/07(土) 00:03:53 ] >>805 Flashってなぁに?? 聞いたことあるけど、、実際どおいうことができちゃうの?
807 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 00:05:04 ] ググレカス
808 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 00:30:12 ] >>807 カスは>>799 まんま>>777 ちょっとぐらいは過去レス嫁と小一時間(ry
809 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 00:53:38 ] お前は過去スレに類似情報があると知ってるから読めと言ってるが、 大抵は類似情報なんかないのである。
810 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 01:21:59 ] >>809 大抵のまともな人間はまず自力で何とかしようとするモンだ それでも行き詰った場合に質問をするのがまともな人間の行動 だからお前みたいなヤツは、まともじゃない平均以下の存在価値の無い人間
811 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 01:26:40 ] >>810 質問する奴がいなくなっちゃうね。 このスレもういらないや。
812 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 01:27:56 ] おい、ここ2chだぞ。
813 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 01:29:47 ] いや落ち着け >>808 はツンデレだけどちゃんと教えてあげてる優しい人 そして 質問した>>799 は学習して次は現スレくらいは読むだろう
814 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 01:34:41 ] 流れがさっぱりわからん
815 名前:807 mailto:sage [2009/02/07(土) 01:37:17 ] >>808 は? >>807 は>>806 に言ったんだが、何か勘違いしてないか。
816 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 01:44:11 ] 過去レスなんか読まないのが今は普通なんだよ、オジサン
817 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 01:54:39 ] >>816 おばはんですが何か?
818 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 10:19:16 ] ♪けんかはやめてー
819 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 12:27:12 ] ↑喧嘩、早めてぇ
820 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 21:36:24 ] 何これ
821 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 12:26:13 ] コレクションのKey値を取得するにはどうすればいいんでしょうか? 具体的には、For Each In でコレクション内を回って、Key値がある値だった場合だけ、処理を実行させる というコードを作りたいのですが
822 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:42:15 ] >>821 Collectionでやりたいなら ' Module1 Dim col As New Collection Dim itm As Class1 Set itm = New Class1: itm.Key = "A": itm.Text = "123": col.Add itm, itm.Key Set itm = New Class1: itm.Key = "B": itm.Text = "456": col.Add itm, itm.Key Set itm = New Class1: itm.Key = "C": itm.Text = "789": col.Add itm, itm.Key For Each itm In col If itm.Key = "B" Then MsgBox itm.Text End If Next itm ' EOF ' Class1 Public Text As String Public Key As String ' EOF
823 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 20:42:26 ] 特定のBookを開いている時に エンターキーを押すごとにマクロを起動させることってできませんか?
824 名前:823 mailto:sage [2009/02/08(日) 20:43:22 ] 書き忘れましたが、EXCELは2003です。
825 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 20:54:06 ] >>822 おおクラスモジュールとかオブジェクト指向とかってやつですか・・・ やはりそういうのも覚えていかないと駄目ですね ただ今回は隠しシートを使って済ませることにしました 回答ありがとうございました
826 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 23:38:45 ] OSはXP Excel2000 VB6.0です ユーザフォームでツールボックスから「ピクチャボックスコントロール」と いう物を貼り付けたいのですが、ツールボックスに入っておらず、 方法がわかりません。 コントロールを追加しようとしたのですがそれらしいのが見当たらず。 ググってもピクチャボックスが選択できる事が前提のようなので 探すことができませんでした。 どうすれば表示されるのか教えていただけませんか?
827 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 08:45:49 ] >VB6.0です きっと誤爆だな
828 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 09:02:10 ] いやExcelのVBAから、VB6のインストール時に導入される ピクチャボックスを使いたいってことなのでは? しかしVB6使ってる人なら、こんなの簡単に解るはずなんだがな 因みにVB6持って無くて、ランタイムだけ入れてるとかは無しね それじゃダメだから
829 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 12:12:54 ] >>823 キーボードやマウスを使ったイベントはAPI使わないと無理
830 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 20:41:23 ] 実行しているsub名を取得する事は出来ますでしょうか。 sub aaa() msgbox bbb '←aaaと表示したい end sub よろしくお願いします。
831 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 20:56:33 ] >>830 >>1 ★3,4
832 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 00:30:35 ] >>830 実行しているsub名を取得することはできないけど、次のようなことをするのは可能。 sub aaa() msgbox "placeholder" end sub というコードを sub aaa() msgbox "aaa" end sub というコードに書き換えるようなこと。 ところで、何でそれ知りたいの?
833 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 00:39:59 ] subの最初に適当な変数にsub名を入れとけばいいじゃん
834 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 00:46:13 ] >>833 たしかに。 そういうの思い付く人と思い付かない人って 何が違うだろね
835 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 00:51:12 ] そういう事か? msgboxは質問時の方便で常時表示させたいんじゃないのか 今何の関数に飛んでますとか
836 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 00:57:13 ] 質問者のレス待てよ
837 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 01:30:14 ] EXCEL2003です。 特定のフォルダの中に、テスト.xls、テスト1.xls、テスト1000.xls、という3つのEXCELがあるとして killを使ってテスト.xls以外のブックをすべて削除する処理を作りたいと思っています。 kazu = "*" Kill "\\フォルダ\テスト" & kazu & ".xls" だとフォルダ内の3つはすべて消してしまうんですよね。 「テスト」の後に何もつかないブックだけを消さずに残すにはどうしたらいいでしょう?
838 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 02:03:56 ] "テスト1*.xls"
839 名前:デフォルトの名無しさん [2009/02/10(火) 04:24:49 ] かなりど素人なのですがEXCELでA列に文字を入力する際、A列の最終行数を ランダムにしたいのですがどうすればいいでしょうか? わかる方よろしくお願しますm(__)m
840 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 04:29:13 ] >>839 こんな感じかな A列のランダムな位置に文字を入れる 乱数 = Int(Rnd(1) * 65536) + 1 セル = "A" & 乱数 Range(セル) = "文字"
841 名前:デフォルトの名無しさん [2009/02/10(火) 04:31:48 ] ありがとうございます●〜*