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)
684 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 00:37:43 ] 何かにCPUパワーを喰われてるとか 「遅くなった」のが実は0.01秒程度の差だったとか もし自作ならドライバがちゃんと入ってないとか
685 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 04:47:10 ] CommandButtonでClickイベントが呼ばれたときに、そのボタンのキャプションを取得したいのですが、 よい方法はありませんでしょうか? ネットのフォーラムなどの情報では、 ActiveSheet.Buttons(Application.Caller) や ActiveSheet.DrawingObjects(Application.Caller) などでオブジェクトを取得できるとあるのですが、 プロパティがない、などと言われます。 代替手段はないものでしょうか? 環境:Excel2007
686 名前:685 mailto:sage [2009/01/27(火) 04:54:33 ] すいません。そもそも _ClickイベントやMouseDownなどではApplication.Callerは使えないですね。 どうしたらよいのだろうか
687 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 05:11:01 ] >>686 押したボタンのクリックイベントに適当に書くのが普通じゃない?
688 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 05:23:04 ] >>685 コマンドボタンには2種類あるでしょ。 挿入を選ぶとコントロール(部品)の一覧が出てきて 上段が「フォーム コントロール」、下段が「ActiveX コントロール」ってなってるやつ。 下段の方のボタン使ってる?
689 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 05:38:13 ] >>685 「マクロの登録」で登録されたマクロはコマンドボタンのクリックで呼び出される Sub test() MsgBox ActiveSheet.Buttons(Application.Caller).Caption End Sub
690 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 05:43:14 ] >>688 マクロが登録できるのはフォームコントロールの方だぞ
691 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 06:11:34 ] >>686 そもそもCommandbutton1のClickイベントで呼ばれるのはCommandbutton1_clickなんだから、 Private sub commandbutton1_click Msgbox commadbutton1.caption End sub で、いいんじゃねーの? クラスモジュール使って擬似コントロール配列にしてるとしても、どうにでもなんじゃん アホなの?
692 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 07:45:56 ] >>690 両方出来るぞ
693 名前:685 mailto:sage [2009/01/27(火) 10:53:06 ] 教えて! Watch Excel VBA Application.caller エラー2023について oshiete1.watch.impress.co.jp/qa4024188.html ここの方法でいけましたが、もう少しスマートな方法がないかな?と。 >>687 >>691 10個あったら、10個分イベントと名前の組をかかないといけないですよね。 冗長性があります。 >>689 ActiveXの方では無理っぽいです・・・ >>688 ActiveXの方を使っています。 やりたいことはボタンのキャプションを取得することなので、 できるのであればフォームコントロールの方でもよいのですが・・・
694 名前:685 mailto:sage [2009/01/27(火) 10:57:08 ] URL間違えました。こちらでした。 moug|即効テクニック | コマンドボタンのクリックイベント内でボタン名を取得するには www.moug.net/tech/exvba/0150059.htm
695 名前:デフォルトの名無しさん [2009/01/27(火) 16:07:22 ] シート保護はprotectで非保護はunprotectでいいですか?出先なので簡単な質問ですが。
696 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:13:46 ] >>695 いんじゃね
697 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:19:40 ] ありが十匹!!
698 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 20:14:57 ] >>693 一つのプロシージャに1行ずつ書き足すのが冗長性があると言ってるってことは、 擬似コントロール配列を使ってクラスモジュールで処理してるとしか考えられない訳だから、 取りあえず今使ってるソース出せ そしたら改良してやるから
699 名前:デフォルトの名無しさん [2009/01/29(木) 09:07:22 ] すみません初心者ですが質問です。 Msgboxに「月度を入力してください」と表示 →インプットboxに月(1〜12までの数字)を入力する画面を出して尚且つ、 1〜12以外の数字または文字を入力したら、「1〜12の数字を入力してください」 というエラーメッセージが出る→最後にまたMsgboxが出てきて「○月度ですね」と 表示するにはどう組めばいいでしょうか。 ○には入力した月数を出したいのですがよろしくお願い致します。
700 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 09:08:34 ] >>699 VB初心者スレへどうぞ。
701 名前:デフォルトの名無しさん [2009/01/29(木) 11:00:04 ] >700 すみません、VBAの初心者スレは探しましたが無いみたいです。 どなたかお願い致します。
702 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 12:15:27 ] >>699 流れは大体できてるように見えるのだが・・・ 「インプットboxに入れられたものを数値にして1〜12だったら抜ける」ってことを Do〜Loopを使って組めばいいだけ
703 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 14:29:53 ] 超初心者です。 何個か開いたファイルの中から、特定のファイルを探す。 という単純な事がしたいのですが ファイル名が例えば「経理ファイル200812.xls」のように、 月によってYYYYMMの部分が変わってしまいます。 開いたファイルの中から、ファイル名に「経理ファイル」が付いているファイルをアクティブにしたい場合 どのようにすればよいでしょうか。 ワイルドカードが使えないかと思ってやってみているのですが よろしくお願いします。
704 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 15:01:32 ] dim b as workbook for each b in workbooks if b.name like "経理ファイル*" then b.activate end if next
705 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 15:53:30 ] >>704 できました!! ありがとうございました。
706 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:39:44 ] 質問です h = 1 Do Until Cells(h, 6).Value = "" If Cells(h, 3).Value = Cells(h + 1, 3) Then Cells(h, 6).Value = Cells(h, 6).Value + Cells(h + 1, 6).Value Rows(h + 1).Delete End If h = h + 1 Loop 2行のときは1行にできるのですが、3行以上のときも1行にしたい場合どのようにすればよいでしょうか
707 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 18:57:21 ] >>706 最初に見つけた位置のhを保存しといてそこに入れていく
708 名前:707 mailto:sage [2009/01/29(木) 19:00:08 ] 違ったな 「Deleteしたときはhをインクリメントしない」かな?
709 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 19:45:32 ] End Ifの前にh = h - 1で解決しました ありがとうございます
710 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:41:33 ] >>701 頭だけでなく眼が悪いんでしょうか。 VBA ( V B A ) のスレではなく、VB ( V B ) のスレへどうぞ。
711 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:59:42 ] OS XP EXCEL2003 dteProductDay=format(date,゙yyyy/m/d゙) cells(1,1)=dteProductDay というように、システムの日付を整形してセルに表示させたいのですが、 フォーマット通りに表示されず1/29/2009となります。何が悪いのでしょうか。
712 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:09:19 ] >>711 書式を変えるか、または文字列で
713 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 02:12:09 ] >>711 的外れかも知れないが 表示するセル自体の書式を適切に設定しないとそうなる。 そのフォーマットだと、変数に代入された値は2009/1/29となるので エクセルはこれを日付と認識し内部的に日付のシリアル値として値を保持するのでは。 たとえばdteProductDay=format(date,゙yyyy m d゙) とするとセルには「2009 1 29」と表示される。
714 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 12:23:35 ] OS-XP Office2003 Shiftキーを押しながらドラッグでセルの移動ができますが、 Shiftキーを押さなくても常にセルを移動することはできますか。 もしくはExcel上でのみ、Windowsの固定キー機能のように Shiftキーを押しっぱなしにすることはできないでしょうか。 キーボードでなら、たとえば上に移動したい場合 ActiveCellを取得して、真上のセルと置換していけばできそうなんですが。
715 名前:711 mailto:sage [2009/01/30(金) 20:50:12 ] >>712-713 ありがとん cells(1,1)= "'" & dteProductDayでうまくいきました。
716 名前:7777 mailto:sage [2009/01/30(金) 22:31:30 ] エクセルでシート1で例えばF団体をA列の1で書いてそれを シート3のD列の3に自動記入させるマクロは分かるんだけど シート1でF団体がA列の1以外になっても自動記入できるマクロある? あるなら教えて
717 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:07:32 ] 日本語で質問できない人お断り
718 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:08:56 ] >>716 Private Sub Worksheet_Change(ByVal Target As Range) ~~~~~~~ どこに書き込まれたかはTargetという変数に入ってる
719 名前:7777 mailto:sage [2009/01/30(金) 23:13:26 ] 718さん 意味がわかりません
720 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:18:17 ] 日本語読めない人お断り
721 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:31:13 ] Worksheets("シート3").Range("D3") = Worksheets("シート1").Range("A1") みたいにセル名が固定ならわかるけど、コピー元のセルが不定の場合はどうするかって質問でしょ?
722 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 23:53:13 ] F団体ってなんだろ…新しい宗教か?
723 名前:7777 mailto:sage [2009/01/31(土) 08:51:59 ] >>721 うん!!そのとおりです
724 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 09:19:07 ] >>723 A1とA2の両方に値がある場合はどちらを採用するの?
725 名前:7777 mailto:sage [2009/01/31(土) 09:52:09 ] >>724 1月23日 団体名 内容 F団体 このときF団体がAの2列に書いてるけど Aの2列にD団体を記入して Aが3列になってもシート3のまとめシートには自動記入できるかなぁって
726 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 10:06:03 ] >>725 1対1対応ならなんの問題もないでしょう? それから行と列を区別して書いてたほうが他人に伝わりやすいですよ。 ABCは列 123は行
727 名前:7777 mailto:sage [2009/01/31(土) 10:42:31 ] A列からD列の10行までの範囲がコピー範囲のときは どうマクロ組むの?
728 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:15:45 ] >>727 マクロ記録してみたら?
729 名前:7777 mailto:sage [2009/01/31(土) 11:34:10 ] できました! ありがとうございました。
730 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 11:39:37 ] 俺が質問を理解できないうちに解決か
731 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 13:05:52 ] >>730 VBAを使うやつは問題をミクロにとらえ過ぎている。 もっとマクロなレベルで考えるんだ。 コピー元とコピー先の対応がどうなっているかだけ理解したらできるかできないか判断できるだろ?
732 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 15:18:32 ] EXCELを使うのは本来はすんごく高度なスキル(=異常な思考様式)が必要 そうでもない人、もしくはそういう発想をするのがヤな人がVBAを使うのだが、 VBAは最高級のBASICの一つで、これだけでも結構重量物 (VB.NETはこれは超ベテランが使う言語で、これからいきなり始めるのだ けはやめたほうがいい) VBAの入門に向いているのはExcelよりかAccessだね。Excelだと動作 は遅いはExcelと基本的に合わないわでロクなことないね。
733 名前:7777 mailto:sage [2009/01/31(土) 15:24:34 ] いやできてないんだけど マクロ記録とは?
734 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:13:28 ] もういいから帰ってくれ!
735 名前:7777 mailto:sage [2009/01/31(土) 17:09:51 ] ひどすぎ
736 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:10:34 ] >>725 マクロの前に日本語を勉強した方が… でも一応想像してみた シート1 年月日 団体名 内容 1/23 F団体 陳情 1/26 D団体 年始挨拶 1/27 A団体 予算ヒア みたいに日付ごとの日報が書いてあって 団体ごとに各シートに抽出したいんじゃないのか? でもこれだったらわざわざ聞いてこないよな。
737 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:50:16 ] 確かにそれだったらその辺のOL捕まえた方が手っ取り早いな。
738 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 19:48:09 ] 長文ですがお許しを 最近クラスモジュールを勉強しているんですがプロパティの設定で Letがうまくいきません。 WindowsXPSP3、Excel2003 クラスモジュール内容 Private m_TestValue As String Public Property Get TestValue() TestValue = m_TestValue End Property Public Property Let TestValue(ByVal New_Value As String) m_TestValue = New_Value End Property で標準モジュールに Public Sub Test() Dim Test As Class1 Set Test = New Class1 Test.TestValue = "testtest" MsgBox Test.TestValue End Sub として実行するとプロパティプロシージャの定義が一致していないというコンパイルエラーが出ます。 これはなぜでしょうか?
739 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 20:07:43 ] Public Property Get TestValue() As String もしくは Public Property Let TestValue(ByVal New_Value As Variant) Getの戻り値の型と、Letの最後の引数の型 つまり、ひとつのプロパティの型は一致させてください
740 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 21:01:13 ] なるほど!Property Getの戻り値も型を指定する必要があるんですね。 m_TestValue変数の型を指定していてそれを返しているから てっきりそれだけでいいと思ってた。 ありがとうございました。
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