1 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 19:31:39 ] ExcelのVBAに関する質問スレです 質問前に 【 >>2-3 】 あたりを良く読むこと 前スレ pc11.2ch.net/test/read.cgi/tech/1197448064/ ★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 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
876 名前:デフォルトの名無しさん [2008/05/24(土) 23:39:42 ] application.run "abc" msgbox "zzz" abcマクロの完了の後に、ダイヤログボックスにzzzを表示したいのに、 即行でzzzが表示されてしまう。 同期をするようにするには引数か何かを入れるのでしょうか?
877 名前:デフォルトの名無しさん [2008/05/24(土) 23:40:54 ] >>873 なるほど。そういう方法がありましたか。 ありがとうございます。 >>874 負の数は存在しないデータなので、大丈夫だと思います。 エラーがでた原因がわかる方はいらっしゃりましたら、お答えいただきたいです。
878 名前:875 mailto:sage [2008/05/24(土) 23:42:23 ] ごめん入れ子になってたんだな。最初のforしか見てなかった。
879 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:43:21 ] end ifが無いな
880 名前:872 [2008/05/24(土) 23:43:44 ] >>875 すいません初心者なもので、いまいち意味不明です。 勉強して理解したいとおもうのですが、参考までにどういった 勉強をすればいいか教えてください。 オススメの本、サイト等等・・・
881 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:46:56 ] >>877 <>"#na n/a" エラー値でなければ って条件と思っているのであれば間違い。 エラー値かどうかを調べたいのならiserrorを使う
882 名前:872 [2008/05/24(土) 23:47:24 ] for a = 1 to 100 m = cells(3 , 3) b = cells(1 + k + a , 1 ) k = 1 s=1 do while s =< m if b > 0 then b = b + cells(1 + k + a + s , 1) k = k + 1 s = s + 1 else k = k + 1 end if loop next これで大丈夫でしょうか?
883 名前:デフォルトの名無しさん [2008/05/24(土) 23:48:51 ] >>881 そういうことでしたか。 iserrorという存在を知りませんでした。 勉強不足でした。 ありがとうございます。
884 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:53:46 ] > if b <>"#na n/a" then これエラーなんか出ないよ 意図したとおりには動かないかもしれないけど
885 名前:デフォルトの名無しさん [2008/05/24(土) 23:57:29 ] 根本的な間違いがあった for a = 1 to 100 m = cells(3 , 3) b = cells(1 + k + a , 1 ) k = 1 s=1 do while s =< m if cells(1+k+a+s-1 > 0 then b = b + cells(1 + k + a + s , 1) k = k + 1 s = s + 1 else k = k + 1 end if loop next すいませんでした。
886 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 00:18:54 ] まあなんだ ちょっと落ち着け
887 名前:デフォルトの名無しさん [2008/05/25(日) 12:04:28 ] シートコピーで悩み事があるので打開策を見つけられたらと思い書きこまさせていただきました。 どなたかお助けいただけたらうれしいです。 VBAにてシートコピーに要する時間が長くて(10分以上)悩んでおります。 Bookの構成といたしまして標準モジュールに数式文字列を評価するものを かいてあります。 Function Eval(ByVal expr As String) Eval = Evaluate(expr) End Function ・Sheet1には、様々な経理データを入れるようにしてあります。 そこに入れた値などを元にセル名を作るように書いてあります。 例)A1に”1”という値でB1に”2”という値が入っていればA2のセル名を”12” とします。 ・Sheet2には予めセルに=eval(12)の様な数式をいれ評価をしております。 これが1枚のシートに2000くらい数式が入っています。 Sheet1、2ともに特定条件のとき複製を何枚か作ります。 このときすごく時間がかかります。 原因は数式が大量にあるものをコピーすること及びセルに名前をふっているのが原因なのは分かりますが コピー以外の動作が非常に快調なので変えたくないということとたぶんeval以外での解決策を模索するのはかなり時間を要しそうなのでコピーを何とかする方を選びたいです。 もちろん再計算の停止などはしてあります。 事前に特定条件を作りだしシートを非表示にしておき特定条件のときに表示させるのも 一つの手ではありますが何百枚もシートを隠しておくとファイルサイズがばかでかくなるという 難点もあって躊躇しています。 例えば=eval(@@@@@@)を多く入れたのが原因であれば標準モジュールを何らかの形でいったん無効にすれば早くなるのかとかスクリプトなどを使って別のブックからシートを移動させるなど・・・・他の代替案はありえないでしょうか? 何分わかりづらい質問で申し訳ありませんが、ご回答いただければ幸いです。 よろしくお願いします。
888 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 12:11:58 ] まず計測しろよ。んで、遅い原因を特定してから、もっとわかりやすい文章で再質問な。
889 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 12:58:21 ] 自動計算やめてシートコピー
890 名前:876 mailto:sage [2008/05/25(日) 13:03:06 ] >>887 質問する方のレベルのものが下手なレスをつけるのもどうかと思うが、 設問説明に既に回答があるような・・・ 経理処理なのでシート数が大量となるのはある程度やむを得ないでしょうが、 それにしても、10分というのはかかりすぎというか、長いですね。 1 object.enablecalculation=falseを設定されていると言うことですが、 必要なシート全てにされているかどうか 2 通常、速度を速める常套手段の application.screenupdating=false application.visible=false application.enableevents=false で、どうなるか試してみたらいかがでしょう 私の質問は解決しました。 直列処理のはずが、並行処理になったのかとの疑問からでしたので。
891 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:55:25 ] >>887 どこかで見たような質問だな 何でそんなおかしなことするの?
892 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 16:59:47 ] >>887 に回答する人は次を見てからにしてね www.moug.net/faq/viewtopic.php?t=27321
893 名前:釣られてみる mailto:sage [2008/05/25(日) 17:02:02 ] >>887 別にここはブック提示禁止じゃないから晒してみたら?
894 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 17:05:09 ] ' ただの荒らしのコピペじゃないかと疑い始めた
895 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 17:27:39 ] なんだ、二週間前の話じゃねーか。 第三者によるコピペの疑い濃厚だな。 しかし、誰もプロファイリングしろというアドバイスしないって、mougってどんだけ素人集団なんだよ
896 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 17:30:54 ] あー、ひょっとして、シートを一枚sheet.copyで10分かかるってことか? だったら、プロファイリングも糞も無いな
897 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 18:13:57 ] プロファイリングっていうの初めて聞いたorz
898 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 22:50:47 ] マルチなら放置 荒らしのコピペなら放置 どっちにしても放置だな
899 名前:デフォルトの名無しさん [2008/05/25(日) 23:12:29 ] セルに記載されている文字列を変数名として認識させる方法はありますでしょうか?もしくは無理ですか? (1,1) に hoge って文字列が入っていて、VBAの記述内に、 cells(1,1).value = 100 '←これは当然上書きされますが・・・。 のように、変数名として取得して代入が出来たら良いな。と考えております。 なにとぞよろしくお願いします。
900 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 23:16:16 ] aaa(1,2,3) bbb(1,2,3) 2個の同一の配列があるのですが、この二つが同一であるかの判定について質問させてください。 今は配列長を取得して、forで繰り返してaaa(i) = bbb(i) と1要素ずつ判定しているのですが、 もっとシンプルに、行数を少なく判定する方法はありますでしょうか。アドバイスお願いしま!!!
901 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 23:21:29 ] >>899 hogeをどこにも使ってないじゃないか。 >>900 原理的に全要素を比較するしか判定のしようがないから、今の方法でいいんじゃない?
902 名前:VBAの初心者 [2008/05/26(月) 01:57:42 ] VBAで配列によって書き込む練習をしているのですが想像力が無くどうやってうまくやればいいのか悩んでます。 どなたかヒントをいただけないでしょうか。 この表のような規則と二つの数式を入れたいのですがどうやったらいいでしょうか? よろしくおねがいします。 briefcase.yahoo.co.jp/bc/robert_kubica_bmw/vwp2?.tok=bcUvZBbBSBm6GmJ2&.dir=/&.dnm=Book1.xls&.src=bc
903 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 02:31:24 ] >>899 は>>887 のような気がするのは俺だけ? 馬鹿さ加減が似てるんだが。
904 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 02:38:50 ] 言葉遣いは似てるね、無駄に敬語とか
905 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 06:21:48 ] >>899 Common Language Runtime Library を参照設定して Dim ht As Hashtable Set ht = New Hashtable 詳しい使い方は ttp://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard28.htm 別にScripting.Dictionaryでもいいんだけどね。 文字列と添え字のどちらでも変数にアクセスしたいなら SortedListを使えば可能。
906 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 06:37:27 ] >>900 joinして比較
907 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 07:19:32 ] それやるならデリミタを変数中に絶対出てこない文字にしておけよ
908 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 10:41:35 ] 一応ExcelVBAの質問です プログラム実行中に、ユーザーフォーム上のimageの表示・非表示や、 ラベルのキャプションの変更することは出来ないのでしょうか? 実行中に内容が変更できるオブジェクトはprogressbarのみですか?
909 名前:デフォルトの名無しさん [2008/05/26(月) 18:21:24 ] 連投、誠にスマンです VBAで、作業用シートを作成して、ソートとか 色々やった後、用が済んだらシートを削除するようなプログラムを作って いるのですが、 sheets(hoge).delete の後、必ず「データあるけど削除してOK?」っていうダイアログが出てしまいます。 このダイアログに自動的にYesで答えて、プログラムを中断しないように 出来ないでしょうか。
910 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:21:36 ] なんちゃらAlear = false
911 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 19:30:16 ] tが抜けてたorz DisplayAlertsでヘルプ嫁
912 名前:デフォルトの名無しさん [2008/05/26(月) 20:19:11 ] >>908 UserForm1.Label1.Caption = "testtest" 表示・非表示なら多分 〜.visible = true とか false とかで逝けるんじゃね?
913 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:08:10 ] >>910 ありがとうございます! できました。 >>912 プログラムが走っている最中は、フォームの画面更新が 行われないようで、それらが効かんです(T-T
914 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:36:25 ] Screenupdating=falseが入っていたら画面の更新はされないが、そういうオチか。
915 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:32:05 ] >>913 ループにDoEvents
916 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:38:57 ] ちなみに、DisplayAlertsもScreenupdatingもマクロの最後でちゃんとTrueに戻すのが基本だからな
917 名前:デフォルトの名無しさん [2008/05/26(月) 23:43:01 ] 質問失礼します。 新しいシートを作成→そのシートにスクリプトやイベントを埋め込む を自動でやるにはどうしたらよいですか? もちろん埋め込みたいスクリプト等は事前に作成しておくものとします。 どうすれば、それを新しいシートに埋め込む操作ができますか? お手数をおかけします。よろしくお願いいたします。
918 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:04:19 ] 1. そのシートにスクリプトやイベントを埋め込まなくてもいいような設計にする Workbookオブジェクトにどんなイベントがあるか調べてそれをググれ 2. 今は亡き、石井勝氏のありがたいページを熟読する(合掌) ttp://www.morijp.com/masarl/homepage3.nifty.com/masarl/article/excel-decorator.html 3. ここまでで大抵の問題は解決するはずだが、それでも足りない場合は、動的にコードを追加しろ vbcomponetでググれ
919 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:08:53 ] ちなみに3を推奨しないのは、それを実行するPCグローバルなExcelの設定を変更する必要があるから。 マクロの信頼性とは別に、「Visual Basicプロジェクトへのアクセスを信頼する」という設定をしなければならない。
920 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:37:37 ] >>917 ・Class1を作って、Public WithEvents sh As WorkSheetを追加 ・ThisWorkBookのモジュールに、Dim o As Class1を追加 ・ThisWorkBookのWorkbook_SheetActivateで、 ・Set o = New Class1 ・Set o.sh = sh ・Class1のsh_SelectionChangeで、 ・MsgBox Target.Parent.Name & "!" & Target.Address 似たような感じで、各シートのモジュールにコードを追加することなく、イベントハンドらを 実装できる。あとは、Class1のo.shやら、ActiveSheetやらで、各シートのモジュール外に コードを実装しろ。シートごとに違う処理をする場合は、sh.Nameとかで振り分けろ。
921 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:59:11 ] >>917 新規に埋め込まなくても、雛形シートをコピーした新しいブックを作って解決
922 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:23:29 ] チンコが大きくなるマクロを作ったはいいんですが、どうやって呼び出したらいいんですか?
923 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:26:59 ] >>922 ああ、それさっきコンパイルしたら「オブジェクトが小さすぎます」ってコンパイルエラー出たよ
924 名前:デフォルトの名無しさん [2008/05/27(火) 08:15:42 ] 連続質問になってすんません…セル名が変わらんくて困っとります。原因がさっぱりどす…If Worksheet("Sheet1").Range("A1").value = 1 Then For i =1 to 20 Worksheet("Sheet1").cells(1,i).name = "mid"&cells("B",i).value Next i End if Next
925 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 09:05:37 ] 何をやってるのかさっぱりどす Worksheet("Sheet1").cells(1,i).Name.Name
926 名前:913 [2008/05/27(火) 09:18:33 ] >>914-916 ありがとうございます。 Do Events を試して見ます!
927 名前:デフォルトの名無しさん [2008/05/27(火) 10:09:15 ] A1の"セル名"を変えるには、range("A1").value = "ほげ" どすえ。
928 名前:デフォルトの名無しさん [2008/05/27(火) 11:04:14 ] Excel一般の質問ではないのですが、ExcelVBAのリストボックスの 中身の上下スクロールをマウスのホイールに連動させることは 出来ないのでしょうか? ググってみたのですが、分かりませんでした。
929 名前:917 [2008/05/27(火) 15:59:44 ] >>918-921 ありがとうございます!勉強になりました。 とりあえず一番簡単な921さんの方法を試してみますね。
930 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 16:02:04 ] ネタでも「変わらんくて」と言う奴が死ぬほど嫌いだから絶対教えない。 ら抜き言葉でもブチ切れそうなのにさぁ、どうしてわざわざ”な”を”ん”に 置き換えるんだよ最近のゆとりどもは。書いてて違和感ねーのか糞が。
931 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 16:06:07 ] >>930 基地外乙w 単にローマ字入力でAが抜けたTypoだろ
932 名前:930 mailto:sage [2008/05/27(火) 17:00:52 ] >>931 いや、「分からんくて」「変わらんくて」「倒せんくて」 とか書き込む奴はかなり多いぞ。 そういう言い回しが流行ってんのか?ってほど。 年齢層の低いスレ覗いていないと分からんくても 仕方ないけど… >>932 >分からんくても 死ね
933 名前:913 mailto:sage [2008/05/27(火) 17:11:05 ] ユーザーフォームの更新の件、DoEventsでいけました ありがとうございました >>932 それは関西弁っていう日本ではメジャーな言語
934 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:43:46 ] 35才の関西人だが「…くて」は割と使う。 >>930 はもう少し視野を広げてみてはどう?
935 名前:デフォルトの名無しさん [2008/05/27(火) 19:56:10 ] テンプレみたらNG質問のようだが、適当なスレが見付からないので教えてください。 ExcelBVAのテクニックは大体わかります。 しかし、「Excelを起動するとVB?が起動し、ユーザーフォームとExcelが分離している状態」 のプログラム技術を身につけたいと思っています。 これを会得するには、やっぱりVBの知識と多大なる努力が必要なんでしょうか?
936 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:19:11 ] 24歳の関西人の俺はつかわない だがそんなことにマジ切れすとか、情緒不安定なんじゃね?
937 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:49:46 ] >>935 VBAでできる。 どれくらいの努力が必要かは、君のセンスと知力に依存するので誰も答えられない。
938 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:54:29 ] >>935 できない私が言うのもなんだが、そんなことできて何がいいの?
939 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:55:50 ] ユーザーフォームって、マウスホイールに対応してないとか 使いづらいんじゃないすか。 >>936 「マジ切れす」?また怒られるぞ!
940 名前:デフォルトの名無しさん [2008/05/27(火) 22:31:35 ] >>937 うおお、マジですか、VBAでできるの? 怒られそうだがさらに質問。 どうやんの?メニューバーとかどーみてもVBっぽかったけど。
941 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:34:41 ] >ExcelBVAのテクニックは大体わかります。 >ExcelBVAのテクニックは >ExcelBVA ExcelVBAを知らないんだからしょうがないよな
942 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:39:26 ] エクセルを隠すだけなら ' Excel本体は隠す Private Sub UserForm_Initialize() Application.Visible = False End Sub やりたいのはこういう事?
943 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:51:25 ] そうじゃなくて、エクセルを使わずに、フォームだけで何かを 構築したいという事でしょ。
944 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:53:16 ] >>930 関西人を馬鹿にしとるんかわれぃ!
945 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 23:06:59 ] 関西人なら「変わらんで」「変わらんかって」だと思うが
946 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 23:07:23 ] 河内のぉ〜○っさんの歌ぁ〜
947 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 15:57:23 ] はじめまして。 リストボックスで選択した項目を任意のアクティブセルに反映させる時、 反映させたくないセルに反映させないようにするにはどうしたら良いでしょうか? 例えば、セル"A1"には反映させたくないけど、"A1"をアクティブにしたまま リストボックスにて項目を選択して反映させてしまうのを防ぎたいのですが。
948 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 16:26:21 ] >>947 オフセットかなんか使って条件分岐するしかないのでは? B1に何か入力がある時は、A1には入れないみたいな感じで。 Sub nnn() If Trim(ActiveCell.Offset(0, 1).Value) = "" Then ActiveCell.Value = Userform1.ListBox1.value Else: Exit Sub End If End Sub
949 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 20:07:47 ] ありがとうございます 試したけどなかなか理想した感じにできなかったので、 ロック設定で我慢します・・
950 名前:デフォルトの名無しさん [2008/05/28(水) 20:27:42 ] >>943 そうです。今の考えでは、 @フォームにあるボタンを押すとExcelが起動して、 A入力用のフォームに値を入力すると、 Bクチャクチャっと値が返されて、(大量の関数的な部分があるので、慣れたExcelのセルでやりたい。) CCSV形式で出力されて、 D違うソフトにそれを読み込ませる、またはVBだったらそのソフトを外部から操作してやってみたい。 (そのソフトの仕様は全然わからんのだが。) Dが無ければVBAでやれると思うんだが、Aの時に、ExcelVBAだと俺の知識ではマクロ実行中は 任意のセル編集ができない。 やっぱVBじゃないとダメ??
951 名前:デフォルトの名無しさん [2008/05/28(水) 20:28:23 ] >>943 そうです。今の考えでは、 @フォームにあるボタンを押すとExcelが起動して、 A入力用のフォームに値を入力すると、 Bクチャクチャっと値が返されて、(大量の関数的な部分があるので、慣れたExcelのセルでやりたい。) CCSV形式で出力されて、 D違うソフトにそれを読み込ませる、またはVBだったらそのソフトを外部から操作してやってみたい。 (そのソフトの仕様は全然わからんのだが。) Dが無ければVBAでやれると思うんだが、Aの時に、ExcelVBAだと俺の知識ではマクロ実行中は 任意のセル編集ができない。 やっぱVBじゃないとダメ??
952 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:47:53 ] >>951 それって、100%ExcelVBAのような気がするけど・・・
953 名前:デフォルトの名無しさん [2008/05/29(木) 09:23:10 ] 共有されていないブックを、"読み取り専用"で開いているメンバーを VBAで調べるのは不可能ですか。
954 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 09:59:49 ] VBAにCで言うDefineのようなものはないのでしょうか。 StaticステートメントをDefineのように使うのはおかしくないですか?
955 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 11:02:16 ] 自分の家でつくったユーザーフォームが友達のPCで開いたら 背景色が変わってたんだけどなんで? 俺excel2000 友excel2002
956 名前:デフォルトの名無しさん [2008/05/29(木) 14:31:16 ] ユーザーフォームの色は、絶対指定と、OSの設定にあわせる方法と 二種類あって、おそらく後者を適用しているのでしょう。
957 名前:デフォルトの名無しさん [2008/05/29(木) 17:38:31 ] VBAに日本語化パッチを当てるにはどうすればいいのでしょうか
958 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 20:44:31 ] いろいろと検索してもわからなかったので質問させていただきます。 CSVファイルをエクセルファイルに変換したいのですが、特定の列だけを 文字列として処理を行いたいのです。 また、変換元のCSVファイルの指定をBATファイルを利用したいのですが、 よい手段がわかりませんでした。 なにかいい方法はありませんか??
959 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 21:15:00 ] Excel総合相談所 69 pc11.2ch.net/test/read.cgi/bsoft/1211605143/
960 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 22:26:56 ] VB Editor じゃなくて、自分の好きなエディタでマクロを書きたいのんですが、 何かいい方法ありますか? 今はエディタから全コピーしてVBA側に全ペーストしてます;;
961 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 22:52:06 ] 俺は秀丸派でCもJAVAも書いてたんだけど VBA使ってみてビビった。あれはVBAが 元始にして究極のエディタだと思うんだが。 関数の保管とかしてくれるしもう最高。
962 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 22:52:26 ] ×保管 ○補完
963 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:49:04 ] UserFormで変数を持つにはどうすれば良いですか? UserFormにTextBoxを貼り付けてTextBox1を変数として使うのもよいのですが 内部で使う変数なので表示はしたくないです。 何をやりたいかというと、このUserFormでOKボタンを押されたことをBOOL変数に記録し、 そして呼び出し元で、OKが押されたかどうか判断したいです。 つまりMFCで言えば CDialog dlg; if(dlg.DoModal() == IDOK) { UserFormObj.Show IF UserFormObj.bOk = TRUE THEN 処理 END IF 見たいな事をしたいです。
964 名前:デフォルトの名無しさん [2008/05/30(金) 00:50:38 ] UserFormで変数を持つにはどうすれば良いですか? UserFormにTextBoxを貼り付けてTextBox1を変数として使うのもよいのですが 内部で使う変数なので表示はしたくないです。 何をやりたいかというと、このUserFormでOKボタンを押されたことをBOOL変数に記録し、 そして呼び出し元で、OKが押されたかどうか判断したいです。 つまりMFCで言えば CDialog dlg; if(dlg.DoModal() == IDOK) 処理 みたいな。 VBAだと UserFormObj.Show IF UserFormObj.bOk = TRUE THEN 処理 END IF って感じだと思ってます。
965 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:51:28 ] すみません。2重カキ子しちゃいました。。>>963 は無視してね
966 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:53:35 ] すみません。2重カキ子しちゃいました。。>>963 は無視してね
967 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:54:08 ] >>964 UserFormにOKプロパティを作る 又は、手軽に標準モジュールにPublic変数を宣言する
968 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:54:10 ] すみません。2重カキ子しちゃいました。。>>964 は無視してね
969 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:56:33 ] >>967 ありがとうございます。 OKプロパティーというのがあるのですね。勉強になります。 #今日は書き込みがやたらエラーになる(:_:)。スレ汚しすみません。
970 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:59:35 ] >>969 ごめん、UserFormにOKプロパティ作っても、UserFormが閉じたら変数破棄されるからダメだね Public変数でどうぞ
971 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 14:30:19 ] VCで作成したDLLを使用してVBAでプログラマしてます。 Private Declare Function DataRead Lib "ExcelVBA.dll" Alias "_CareerDataRead@4" (strFileName As String) As String・・・@ だと「DLLが見つかりません」と出てきます。そんで、Dllのパスをフルパスにしてやると動作するんですが、そすると他のPCで パスがないので「Dllが見つかりません。」と出てきちゃいます。 できれば、ブックのあるフォルダにDLLをおいて@のように呼び出したいのですが、無理なのでしょうか?
972 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 14:46:15 ] >>971 つ環境変数
973 名前:デフォルトの名無しさん [2008/05/31(土) 10:10:45 ] セルに挿入されているハイパーリンクを普通にクリックして、ページ先に飛ぶようなことを VBAから実行することは可能でしょうか。 あと、ユーザーフォームにハイパーリンクを張ることは可能ですか?
974 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:36:15 ] 例えば、PC起動時にあるソフトをアップデートしたいとき、VBAできたりするんですか?
975 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 01:46:21 ] そんなもんメールで告知しろ。 内部的なソフトで、アップデート(上書き)したいだけなら バッチファイルとスタートアップのショートカットを駆使すりゃいいやん
976 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 15:16:33 ] VBAからSystem.Text.StringBuilderを使うとき、 オーバロードがどのAppend_数字に対応しているか調べるには どうすればよい?