[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 04/07 15:59 / Filesize : 248 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA質問スレ Part6



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 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

656 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 15:59:27 ]
>>653
>Excel使ってる人が現実に解かなければならない場面はほとんどないだろう。
その考え方は殆どExcelをExcelとして使っていないから出てくる考え方だな
まぁいい。本来Excelなどをまともに使いこなせるのは200年以上の人生経験(☆比喩)
が必要な世界だからな。
Excelは RDBというリアルタイム志向でアブソリュートな情報の作成ツール
を補佐するツールとして使えばいい。
>>630の問題で言えば、
最小コストと最大コストの推測、コストの分布の概略を掴む。(これを完全にやるのは
まぁ無理だろう)
これにより価格体系や家族構成に問題があるかないかを推測し、交渉する材料とかに
するわけだ。
価格体系や家族構成の分布が悪いと、家族間や家族対ホテルで殺し合いが発生して
双方共に絶滅する可能性すらあるからな。
双方を双方の価値観を厳格に固執する態度じゃリアルタイムには問題は解決しないという
前提に立つのが賢い。

657 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 16:21:20 ]
>>656
例えば客の家族構成に問題がある場合はどのような解決手段がある?

658 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 16:34:31 ]
>>656
君が組み合わせ最適化問題に興味を持っているのはわかった。
そして今の今までそれを専門家向けのソートと呼んでいたこともわかった。


659 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 16:37:43 ]
パソコンなんだから全通り計算させたらしまいだろ

660 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 16:43:37 ]
>>439>>443>>455>>549>>606>>630>>656

661 名前:デフォルトの名無しさん [2008/05/05(月) 17:22:14 ]
>>656
>最小コストと最大コストの推測、コストの分布の概略を掴む。

最適化手法からそのような結果は出てこない。

662 名前:デフォルトの名無しさん [2008/05/05(月) 17:24:43 ]
>>659
基本的にはその通りなんだが、けっこう大変なんだぞ。


663 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 17:43:23 ]
>>658
組み合わせ最適化問題はどこにでも付きまとう問題で
>>630のような問題は、その一つの例
興味を持たないで済ませられる人は余り居ない。

抽象化したら同じになるけど、問題が余りに広範なんで、
問題毎に使える手法に制限に色々とバリエーションが
出てくるので、問題毎に専門分野を作ってる
抽象化すれば>>630に類する問題をまともに扱っている
人はその道の専門家でいいんじゃないの?
そもそも一般人と専門家って両立する概念なんだから。

664 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 17:51:15 ]
>>630と似たような感じの問題で、数理計画とか線形計画、GAの専門家なら聞いたことあるが、
ソートの専門家ってのは聞いたことないな。



665 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 17:52:19 ]
>>663
組み合わせ最適化問題を解くことは非常に有益だし、興味ももっています。
しかし考えてみてください。>>630書いてるやつは>>443なんですよ。


666 名前:側近中の側近 ◆0351148456 [2008/05/05(月) 18:08:01 ]
(っ´▽`)っ
テーブルを作って、その直積(デカルト積)を求めて、
ソートすればいいのでは?

とレスをあまり読まずに言ってみましたが何か?

667 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 18:10:05 ]
>>666
もう少しじっくり読んでくれ。
とりあえず>>443から順番に。


668 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 18:17:55 ]

>>439>>443>>455>>549>>606>>630>>656とか

なんか全部>>443が書いたみたいに思ってる奴がいるみたいだが
ここじゃ皆「デフォールトの名無しさん」だろ?
>>439!=455とか
書いたところで無意味だし...

ねぇ>>667 =? >>439

669 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 18:23:38 ]
>>668
>>667だが>>439ではないよ。

>>439>>443>>455>>549>>606>>630>>656
この中で>>439だけは違うやつだと思う。
>>443>>455>>549>>606>>630>>656
こいつらは同じやつだと思う。


670 名前:側近中の側近 ◆0351148456 [2008/05/05(月) 18:29:13 ]
|▽`)っ
全て(っ´▽`)っの自作自演だったらどうする?
ID無しの板っていいよね☆自作自演し放題で。
|彡☆

671 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:15:32 ]
そんなセンスねーだろよ。

672 名前:側近中の側近 ◆0351148456 [2008/05/05(月) 19:41:29 ]
>>671
(っ´▽`)っ
ある!
(っ´▽`)っは最高20人同時演出可能。
たまに自分のレスだと忘れて、そのレスにマジレスしてしまうことがある。
自分でも勘違いするぐらい、騙されるぐらい自演が美味い。。

673 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:50:21 ]
頭の壊れた奴が住み着いてすっかりスレが腐ってしまった

674 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 20:14:23 ]
>>673
貴方をはじめ>All except >>443etc の腐ってない新鮮な
頭脳が残っただけが救いだと思おうよ



675 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 20:21:53 ]
>>674
めでたいやつだな。
複素数の並べ替えはできたのか?

676 名前:デフォルトの名無しさん [2008/05/05(月) 20:25:30 ]
ソートの専門家 の検索結果 約 111,000 件中 1 - 10 件目 (0.14 秒)

677 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 20:32:45 ]
>>674
>>630
ベクトルをグローバルに標準化はできないけど、恣意的に決めればローカルには定義できる。

つまり大小比較できるの?できないの?もっと詳しく説明してほしいな。


678 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 20:56:58 ]
674と630をどうしても結びつけたい頭の腐った人が居るようでつね

679 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 21:40:38 ]
>>646 = >>678

680 名前:デフォルトの名無しさん [2008/05/05(月) 22:46:09 ]
教えてください。
ブックAに「計1-A」、「計1-B」、「計2-A」、「計2-B」、というシートがあって、

VBAで
「計1」と名をつけた新しいブックを作り、「計1-A」、「計1-B」をそこにコピーする、更に「計2」も同様に・・・

というのを一連の操作で行いたいのですが、
新しいブックの名前をどうつけてやったら良いのか分かりません。
sheets(Array("計1-A", "計1-B", ).CopyではただのBook1に保存されてしまいます。ぜひ名前をつけたいんですが、どうすればよいのでしょう
ご教示願います

681 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 22:55:02 ]
ファイル名とブック名を別にするのにはどうすればいいでしょうか?

682 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:02:02 ]
>>676
"ソートの専門家"の検索結果 2 件中 1 - 2 件目

両方とも、このスレwww

683 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:12:27 ]
saveas

684 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:17:39 ]
>>682
ソートの専門家は種類が多過ぎてもはや専門家とはみなされてないだけだろ。
昔48種に大分類されたらしいが、その後もでるわでるわバリエーションの山。
分類プロジェクトは頓挫中。
ソートくらい奥深い世界は無いみたいだ。たかがソート、されどソート。



685 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:21:26 ]
NSPを解くのも、ソートの専門家なのか?

686 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:22:05 ]
ソートなんてクイックソート+選択ソートで実装すればまず困る事は無いわ。

687 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:22:56 ]
しっー
そーとしておけ

688 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:23:38 ]
場合によってはバケツソートを使えないようでは
ソートの専門家とは言えない。

689 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:24:52 ]
>>684
もはや何を言いたいのかよくわからんが、今や専門家と看做されてないなら、
「ソートの専門家」じゃないだろ。

690 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:26:10 ]
>>688
え?アルゴリズムが違うと、結果も違うのか?

691 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:28:15 ]
「専門家」なら、バケットソートって言うだろ、JK

692 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:31:28 ]
>>690
これはひどい

693 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:31:52 ]
>>691
専門家はそんなくだらない事より本質を重要視する。

694 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:33:33 ]
いいかげんにしとけよ



695 名前:デフォルトの名無しさん [2008/05/05(月) 23:51:17 ]
頭の中をソートしてくれ

696 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 23:57:40 ]
それはやめといたほうがいい
てか、上げるなよ

697 名前:デフォルトの名無しさん [2008/05/06(火) 00:14:14 ]
専門家以前に人としてバルブソートだろ。

698 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 00:24:42 ]
このスレのレスを、くだらない順にソートせよ

699 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 00:31:46 ]
専門家がいるのなら本の一冊や二冊出してるだろ

700 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 01:18:08 ]
ソートの味方くらいでいいんじゃね

701 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 01:34:47 ]
ソートに味方も敵もあるかよ
番号が付いてる限りソートされていると感じる
脳みそにとってはな

702 名前:デフォルトの名無しさん [2008/05/06(火) 11:43:51 ]
グランドシティ大宮イーストタワー グランドシティ大宮イーストタワー グランドシティ大宮イーストタワー
グランドシティ大宮イーストタワー グランドシティ大宮イーストタワー グランドシティ大宮イーストタワー
グランドシティ大宮イーストタワー グランドシティ大宮イーストタワー グランドシティ大宮イーストタワー


703 名前:デフォルトの名無しさん [2008/05/06(火) 13:31:48 ]
>>698
>>443>>455>>549>>606>>630>>656

704 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 14:30:12 ]
近未来と近過去
熱い場所だ
担当者ご苦労さん



705 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 19:16:16 ]
ここはなんのスレ?

706 名前:デフォルトの名無しさん [2008/05/06(火) 20:39:34 ]
ソートの専門家専用スレです。

707 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 21:37:06 ]
その名はExceler

708 名前:デフォルトの名無しさん [2008/05/07(水) 02:11:55 ]
なんで自演とかを気にするんだおまいら?

709 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 08:26:19 ]
ところで>>630よ。うまくソートできたか?
わしはできたぞ。
正確に言うとソートじゃない。最適な組み合わせを求めたということ。

710 名前:708 mailto:sage [2008/05/07(水) 09:20:21 ]
>>708
こういうことが起こりうるから

711 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 11:08:37 ]
M=1000の時でホテル代の価格の組が全部異なり
家族構成も全部異なる場合で実例が出てくるまで
誰も信じないと思う。本当にソートされてるのか
も示せないとな。

712 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 11:55:25 ]
>>711
M=14まででお願いします。ソルバーの制限で200変数までしか扱えないから。
ただしM=14の時に現実的な時間で解けるかどうかわからないけど。
それからソートと呼ぶのはやめないか?

713 名前:デフォルトの名無しさん [2008/05/07(水) 12:40:47 ]
最適組み合わせの問題って、ノーベル賞クラスじゃなかったか?

714 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 12:49:53 ]
>>713
このスレからノーベル賞受賞者が(・∀・)ワクワク



715 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 13:13:03 ]
>>709がウソつき扱いされているみたいだな。不思議な話だ。こんなのできて当たり前なのにね。
前から思ってたんだかこのスレに出入りしてるやつら中学生が多いだろ。
レベル低すぎて話にならん。せめて高校出てからデビューしろ。


716 名前:デフォルトの名無しさん [2008/05/07(水) 15:16:37 ]
中学生が高校生に、受験の答え教えてくれって頼む、そんな主旨のスレだからだと思う

717 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 15:22:28 ]
'''八島 良太'''(やしま りょうた、[[1975年]][[11月8日]] - )は[[埼玉県]][[さいたま市]]出身の[[ウィキペディアン]]。
[[ウィキペディア]]でのアカウント名は[[User:Yassie]]、[[2ちゃんねる]]では◆sMt4YbtR06という[[トリップ]]を使用。
Nanassieというコテハンを使っていた時期もある。身長171cm、体重75kg。さいたま市[[大宮区]]在住。独身。
好きな歌手は[[サラ・マクラクラン]]、好きな女優は[[メグ・ライアン]]。

[[User:Aphaia]](本名・木津尚子)や[[User:Mikihisa]]や[[User:NiKe]]や[[User:掃除屋ケンちゃん]]との死闘で知られており、
現在は[[User:Haruno Akiha]]や[[User:WhiteWing]]をウィキペディアから追放すべく策動を続けている。

==経歴==
[[埼玉県立浦和高等学校]]を経て、[[国際基督教大学]][[教養学部]]社会科学科に入学。学部時代は
[[オハイオ州立大学]]に交換留学し、[[経営学]]を専攻。オハイオ州立大学への編入を望み、願書はほぼ完成していたが
アジア経済危機の煽りを受けて学費を工面できなくなり、相思相愛の恋人をアメリカに残したまま、[[1999年]]、日本に帰国。
のちに当時のことを振り返って「精神面は相当荒れてたね」と語った。[[2000年]]に国際基督教大学を卒業して
外資系企業に入社し、[[英語]]を使用した事務的な職務を担当。[[2004年]]、Excel2002VBAスタンダードに合格。
[[2005年]][[12月27日]]から[[ウィキペディア日本語版]]で北米の地理に関する記事を翻訳・投稿。今日に至る。

私生活では、失恋の傷を忘れるため、[[1999年]]から[[ダンスダンスレボリューション|DDR]]に熱中し、
新宿チルコポルトや大宮タイトーインに出没していたが、自惚れの強さと事大主義ゆえに諸方の反感を買い、
2000年頃には撤退を余儀なくされた。

{{people-stub}}

{{DEFAULTSORT:やしま りようた}}
[[Category:インターネットの人物]]
[[Category:埼玉県出身の人物]]
[[Category:デブ]]
[[Category:日本のダンサー]]
[[Category:1975年生]]

718 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 16:16:48 ]
14*14=196
15*15=225 >200
つまりLPですね。よくできました。

719 名前:麻雀を作りたい mailto:sage [2008/05/07(水) 17:48:28 ]
OS:winXP
excel2000

VBA実行中に、ユーザにいったん制御をもどして、シート上の特定範囲のセルをクリック。
そのクリックをトリガーに処理再開。

というような事をしたいのですが、どうすれば実現できるかわかりません。
良い案やヒントないでしょうか・・?

720 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 18:02:20 ]
セルに対しては通常のクリックは検出できないと思うので、右クリックかダブルクリックのイベントを検出する
どうしてもクリックがよい場合はクリックイベントを検出できるもの(ボタンやシェイプ)を追加する

721 名前:麻雀を作りたい mailto:sage [2008/05/07(水) 18:18:07 ]
>>720
コメントありがとうございます。

BeforeDoubleClick
SelectionChange
とかを使えば良いのかなあとは思ってました。

引っかかってるのは、「VBA実行中に、ユーザにいったん制御をもどして」のところなんです。
中断前の変数の状態を保持したまま、いちどユーザに制御を戻して、シート上のセルを(ダブルor右)クリックでVBA再開。

つまり
@自分の番になったら一枚ツモってきて
Aいらいない牌を手牌の中から一枚選択して(シート上のセルをクリックして)、
Bすてる。
ってことをしたいんですね。

@まではVBAで処理して、Aの動作はシート上のセルをクリックすることで選択して、
BからはVBAにまた処理を戻す。

・・・自分の実力じゃ無理かな・・・orz

722 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 18:40:04 ]
>>721
セルを使わずに、全部ボタンをはっつけてしまったほうが楽なんで内科医?

723 名前:デフォルトの名無しさん [2008/05/07(水) 18:51:17 ]
フォームとボタン使えば?

724 名前:麻雀を作りたい mailto:sage [2008/05/07(水) 19:20:52 ]
そーですね・・。
cell_雀みたいなの作りたかったですが、あきらめようかな。



725 名前:デフォルトの名無しさん [2008/05/07(水) 20:39:11 ]
フォームを作成してデバッグ作業をすると、エラーが出たときにコードが表示されずに
フォーム画面が出るため、どこの行でエラーが起きてるのかわかりません。
解決方法ご教授願います

726 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 21:32:21 ]
ところで>>630はホテル料金の計算できたのか?
>>656
>その考え方は殆どExcelをExcelとして使っていないから出てくる考え方だな
なんていうくらいだから当然できたんだろうな。

727 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 22:04:47 ]
>>719
こんなのじゃだめ?

Do While Len(ActiveCell.Value) = 0

DoEvents

Loop

728 名前:デフォルトの名無しさん [2008/05/07(水) 23:44:06 ]
Excelツールのテストを自動化したいと考えています。
別Bookのフォーム上のテキストボックスの値を取得する
ことはできますか?
ツール側に関数を作ればできることはわかったのですが、
できればツール側に修正を入れたくないです。
ヒントお願いします。


729 名前:デフォルトの名無しさん [2008/05/07(水) 23:56:17 ]
エクセルツールのテストって一般的な言葉?

730 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 00:09:24 ]
「Excelで作成したツールのテストを自動化したい」だから俺は別に違和感ないけど・・・
んなことより、>>728は無理じゃないのかなぁ?
フォームをキャプチャ→画像解析→テキスト取得とか?ごめん、嘘・・・

731 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 00:29:24 ]
>>728
>>729
エスパー&エクセル素人

732 名前:デフォルトの名無しさん [2008/05/08(木) 00:32:01 ]
728です。レスありがとうございます。
やっぱり無理なんですかね。
そもそも、MsgBoxとかもやっているので、どうやってOK押すかとか前途多難です。
みんな手でテストやってるのかな・・・。


733 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 03:08:30 ]
>>732
Win32APIを使えば、OKボタンもAPIでクリックできるけど、より良い方法は、
テスト対象のメソッドでダイアログ入力待ちなどが起きないような設計にする。
とはいえ、どこかでMsgBoxを出さざるを得ないだろうから、そこはマニュアルテストとかかな。

734 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 07:57:19 ]
>>728の説明で回答できる人ってスゴイね
俺にはどっちがツールなのかすら分からないよ



735 名前:デフォルトの名無しさん [2008/05/08(木) 08:30:10 ]
そんなに誉めるなよ

736 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 16:11:05 ]
いや実際、配列とか定数とか何に使うの?とか思ってる俺からしたら紙だ。

737 名前:デフォルトの名無しさん [2008/05/09(金) 13:03:03 ]
モジュールの自動削除って出来るもの?


738 名前:デフォルトの名無しさん [2008/05/09(金) 14:48:45 ]
自分は今セルをクリックしたら別のエリアに多行表示できるようにしたいと考えて。
例にすると


セルをクリックしたら、そのセルについたコメント(7~8行ぐらい)の内容を
A15に22R X 7C以上の範囲にそのコメント内容を載せる という物を作ろうとしてるのですが
全く、できず困ってます。

こういうのは可能でしょうか?


739 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 17:20:23 ]
セルに表示されないデータを埋めこむってこと?ソートとかかかったらどうなるんだろ?ってかできるの?

740 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:57:46 ]
>>737
出来る

>>738
可能

>>739
「セルのコメント」だろ

741 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 22:52:31 ]
ごめん、俺が今やりたいことを言ってしまった。で、できるの?3文字でいいからヒントください。

742 名前:デフォルトの名無しさん [2008/05/09(金) 23:37:18 ]
>>741
でき




743 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 23:39:06 ]
どっちだよ?
>>737 ttp://www.cpearson.com/excel/vbe.aspx
>>738 range.comment, range.notetext

744 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 23:58:10 ]
並べ替えた後、セルを特定することは普通可能
それはソート前にセル探すのとどう違うんだ
と言うか、出来るように設定しておけばいいだけでわ



745 名前:デフォルトの名無しさん [2008/05/10(土) 08:30:40 ]
マクロにパスワードつけて触れないようにしたい。
どうしたらいい?


746 名前:デフォルトの名無しさん [2008/05/10(土) 09:43:16 ]
Function IsCommentCell(sAddress As String) As Boolean
IsCommentCell = Len(Range(sAddress).NoteText) > 0

End Function

Function GetFullCommentText(sRange As String) As String
Dim sComment As String
Dim iPos As Integer

iPos = 1
While Range(sRange).NoteText(, iPos) <> ""
sComment = sComment & Range(sRange).NoteText(, iPos)
iPos = iPos + 255
Wend

GetFullCommentText = sComment

End Function

'コメント取得方法は分かったが
'それをA15に表示する方法がググレナイ…
'例えば A1にあるコメントをクリックしたら(7行)A15以降にそのコメントが表示されて
'その後、B5にあるコメントをクリックしたら、A15に表示されたA1のコメントが消えてB5のコメントが表示できるようにしたい。

'どうしたら良いでしょうか?

747 名前:デフォルトの名無しさん [2008/05/10(土) 10:07:09 ]
連レス失礼
A1から12R X 11Cのどのセルをクリックしても
そのセルについてるコメントを
A15に表示させるようにしたいです。

748 名前:デフォルトの名無しさん [2008/05/10(土) 10:55:14 ]
>>745
VBEditorで
ツール→VBAProject-プロジェクトプロパティ
→保護タブ
→パスワードを入れる


749 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 11:23:54 ]
>747
12R X 11C?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Target.Comment Is Nothing Then
        Range("A15").Value = Target.Comment.Text
    End If
End Sub





750 名前:デフォルトの名無しさん [2008/05/10(土) 11:44:56 ]
>>749 できました! ありがとうございます

751 名前:デフォルトの名無しさん [2008/05/10(土) 11:50:35 ]
あとは
A15の縦の長さを 常時コメントと同じ高さにあわせるように応用するだけか・・・

752 名前:デフォルトの名無しさん [2008/05/10(土) 12:04:27 ]
A15の高さ=コメントの行数x18ピクセルになるマクロを組み込むには…どうすればええやろ。

753 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 18:48:39 ]
いい加減、マクロの記録に気づけよ

754 名前:デフォルトの名無しさん [2008/05/10(土) 23:53:59 ]
ボタンのテキストをマクロで書き換える方法についての質問です。
フォームのボタンの場合は、
Dim s As Shape
Set s = ActiveSheet.Shapes("Button 5")
s.TextFrame.Characters.Text = "ほげほげ"
のようにすれば書き換えられます。

では、コントロールのボタンはどのようにして書き換えればいいのでしょうか?
同じように書くと、s.TextFrame.Characters.Textの行を実行するときに、
 オブジェクトは、このプロパティまたはメソッドをサポートしていません
と叱られます。



755 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 01:33:18 ]
EXCEL2003のVBAで、シートの再計算を強制的に実行するにはどうすれば良いでしょうか?


756 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 04:35:17 ]

・資金ゼロでも優秀な開発者は一千万円の特別賞あり、デモトレードなのに優勝したら三百万円の賞金

●6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
system-trading.jp/news/index.php?cID=3
[シストレFXグランプリとは]
クリック証券が提供するFXのデモ取引環境を利用して、システムトレードにチャレンジできるFX取引のグランプリです。
お客様ご自身で作成したシステムトレードの機能を評価する「シストレソフト部門」とトレード収益を競う「トレード部門」の2部門構成となっております。


●5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
  デモトレードの優勝者には賞金三百万円がプレゼントされます。


▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
www.fx-gp.com/about/

▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円

757 名前:側近中の側近 ◆0351148456 [2008/05/11(日) 11:02:55 ]
>>754
(っ´▽`)っ
ActiveSheet.CommandButton1.Caption = "ddddd"

758 名前:側近中の側近 ◆0351148456 [2008/05/11(日) 11:04:56 ]
>>755
(っ´▽`)っ
Calculate メソッド

計算対象         指定例
すべてのブック     Application.Calculate または Calculate
特定のワークシート  Worksheets(1).Calculate
指定されたセル範囲  Worksheets(1).Rows(2).Calculate

759 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 12:11:02 ]
>757
ありがとうございました。できました。

以下、俺様メモ。
VBAのオブジェクトブラウザを使って
クラスSheetXのメンバをオブジェクト名(たとえばCommandButton1)で探すこと。
ボタンのクラスはCommandButton

760 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 19:04:23 ]
>748
>→パスワードを入れる

でけた。ありがと。



761 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 14:27:05 ]
Dim StrData(1 To 13, 1 To 2) As Variant
これってどういう意味ですか?

762 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 14:50:23 ]
>>761
イメージ的にはA1:B13みたいな縦13*横2の二次元配列。
変数名からしてString型にした方がいいと思うが。


763 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 15:59:00 ]
>>762
ありがとう、把握しました。

後、マクロを無効にしないとエディターで編集が出来ないんですが、これはどうすればいいんでしょう。
csvを読み込んで配置するマクロを編集してるのですが、無効にするとデバッグ出来ません。

764 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 19:29:24 ]
一週間以上たったが>>630はできなかったみたいだな。DQNが消えてこのスレも健全化するだろう。




765 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:10:15 ]
VBAで測定器の制御(GPIB)を行っています。
あるデータを取得する関数の戻り値がString限定なのですが、中身がバイナリ直のDoubleで
どう変換するべきかつまっています。

全体のデータは
#XXX{Data double 8byte}{Data double 8byte}{Data double 8byte}.....
の様な形で {data}の部分は8byte double形式で書かれています。
最初に"#"
その後にデータの数の桁数
その後ろがデータの数
その後は8byte Doubleの数が並んでいます。
例:
#212{data}...({data}が12個)
 ^個数を表す数字が2桁 の意味
  ^{data}が12個あると言う意味

関数はCall ibrd( ID as Int , buf as String , count as long ) にてメモリからデータを
countのByte数だけbufに取り込める仕様です。
ibrd( id , buf , 1) '#の部分取得
ibrd( id , buf , 1) '桁数取得
ibrd( id , buf , N) '上記の桁数分だけ取得
for i = 1 to Num step 1 '上記の数分だけ{Data}を取得
 ibrd( id , buf , 8) '8Byteづつ取得する
next
この時、8byteづつ取得すると
変数 buf には String 形式で 本来Doubleのバイナリ値がそのままつっこまれてしまいます。(ウォッチウィンドウで見ると空白など)
数字の1などが入っていればCdbl(buf)でいけるのでしょうが、
型がStringで中身のバイナリがDoubleになってる状況で、これをDoubleに直して数字を取得したいのですが
何か助言もらえないでしょうか?


766 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:00:48 ]
RtlMoveMemoryとか使えばいいでね?

767 名前:デフォルトの名無しさん [2008/05/12(月) 22:04:34 ]
後はいちいち蒸し返すDQNが居るだけだな

768 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 01:36:36 ]
>>764
甘いな

769 名前:デフォルトの名無しさん [2008/05/13(火) 08:28:32 ]
不正アクセスから、マクロ及びデータを守りたいのですが
パスワードの不正解析されても、データ等を守る方法はない?

770 名前:デフォルトの名無しさん [2008/05/13(火) 12:27:06 ]
不正解析というか、バイナリエディタで、パスワード上書きされたら終わりだしな。

771 名前:デフォルトの名無しさん [2008/05/13(火) 12:34:14 ]
本体から読み込む形にして、不正処理があったらOSから終了させれ
不正アクセスと断定できるなら、偽装データを渡したり

どこまで相手にするかにもよるけど、ある程度以上のクラッカには対策立てられぬ
そもそもマクロ無効で覗かれたらエクセルじゃどうしようもないし、エクセルのパスは飛ばせる裏技あったような

772 名前:765 mailto:sage [2008/05/13(火) 18:42:38 ]
>>766
遅くなりました。
情報ありがとうございます。
試してみます。


773 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 22:45:12 ]
>>771
ttp://www.google.com/search?q=VBA+%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89&rls=com.microsoft:ja:IE-SearchBox&ie=UTF-8&oe=UTF-8&sourceid=ie7&rlz=1I7GGLR

774 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 02:04:38 ]
>>769
できるよ。
以上。
↓次どうぞ



775 名前:デフォルトの名無しさん [2008/05/14(水) 11:51:19 ]
XP、EXCEL2003です。
シート上の図(Shape)を、すべて削除する方法を教えて下さい。
よろしくお願いします。

776 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 13:26:15 ]
モジュールのインポートを一つずつやるのがめんどくさいんだけど、
これって、フォームとかと一緒にまとめられないの?

777 名前:番組の途中ですが名無しです mailto:sage [2008/05/14(水) 15:48:05 ]
>>775
forループで↓をActiveSheet.Shapes.Count分回せばいいかも
ActiveSheet.Shapes(i).Select
Selection.Delete
※iはループカウンタ

778 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 15:53:29 ]
ループの必要はないよ
ActiveSheet.Shapes.Delete

779 名前:775 [2008/05/14(水) 18:14:41 ]
>>777,778
レスありがとうございます。


780 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 19:09:02 ]
>>778
ふーん、いろいろあんだねぇ

781 名前:デフォルトの名無しさん [2008/05/14(水) 22:20:07 ]
VBAを学ぶのにオススメの書籍などはありますか?
目的は、ある外部のデーターベースから、
ブックを開いたときに、選択した情報を効率的に
集めてくるみたいなものをつくりたいのですが。
因みにプログラムの経験はVBAが2週間で、他の言語は知りません。

782 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 22:47:08 ]
>>781
ごめん。まったく何を言ってるのかわからない。
みんなはわかるの?

783 名前:デフォルトの名無しさん [2008/05/14(水) 22:48:32 ]
データベースとの連携を中心にしたものなら、例えば

仕事に役立つ Excel & Access データベース連携テクニック Softbank

といったものがあるけど、
これはある程度VBAを知っている事が前提なんで、やはり最初に入門を中心に勉強してからの方が良いんじゃね?



784 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 22:52:55 ]
>>781
ExcelのVBAなんか覚えるよりデータベースの方が役に立つだろう?




785 名前:781 [2008/05/14(水) 22:57:39 ]
ソフトバンクからでてる初めてのVBAという本の内容は一応マスターしました。
>>783さんの挙げてくださった書籍の姉妹本だと思います。
しかし、Dimが出てこなかったりして、結局出来るようになったことは
セルに色をつけたり足し算したりシートの名前を変えたりといったレベルです。
もっとレベルの高いVBAを勉強したいです。
わかりにくくて申し訳ございません。

786 名前:デフォルトの名無しさん [2008/05/14(水) 23:01:30 ]
>>784
仕事で大量のデーターを扱うので、データーベースはきちんと扱えるようになりたいです。
SQLとかを勉強したほうがいいのでしょうか?
仕事とは別にVBAを打てるようになって、ゲームとか作りたいです。
現時点のレベルは低すぎるわけなのですが・・・

787 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:09:09 ]
>>786
仕事はデータベース
VBAは趣味のゲームで

788 名前:781 [2008/05/14(水) 23:12:13 ]
>>787
すいません、ド素人なのでよくわからないのですが
データーベースという、VBAみたいなジャンルがあるのでしょうか?

周りにパソコンに詳しい人がいなくて困っています。
セクハラ酷いし。あぁ会社行きたくない・・・

789 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:14:35 ]
>>788
自分でデーターベースからブックを開くと言ってたじゃないか。

790 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:25:06 ]
visual basic6ぐらいのデータベース連携の本買って
vbaに関してはエクセルのヘルプよく読め

791 名前:デフォルトの名無しさん [2008/05/14(水) 23:26:11 ]
無料のRDBが沢山有る現在でも、周囲に詳しい人間が居ない状況でデータベース勉強するのはしんどいぞーーーー


792 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:44:05 ]
VBAでゲーム作る奴は変態

793 名前:781 mailto:sage [2008/05/14(水) 23:45:46 ]
なるほど、自分がやるべきことがわかってきました。
親切に答えてくれた方々、ほんとうにありがとうございました。

794 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:48:05 ]
>>792
しかしVBAの正しい利用方法だ。



795 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 07:44:28 ]
>>789
お前、馬鹿

796 名前:デフォルトの名無しさん [2008/05/15(木) 07:55:47 ]
>>788
年上のお姉さんに当てられたり、美少女の後輩にまさぐられたりする職場なんですね、俺と変わってくれ

797 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 08:00:39 ]
データベース/SQL使うんなら、
ExcelVBAより先にAccessのクエリー/マクロ/レポートを覚えた方が金になるぞ

798 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 08:15:17 ]
このスレではVBAでソートを作る方法を質問するといいよ。

799 名前:デフォルトの名無しさん [2008/05/15(木) 09:46:13 ]
Vista、EXCEL2007です。

EXCEL2003(XP)で作成したマクロを動かすと動作が異なっています。

<コード>
Range("A5").Select
ActiveSheet.Pictures.Insert( _
"D:\abc\pic1.JPG").Select
Range("A21").Select
ActiveSheet.Pictures.Insert( _
"D:\abc\pic2.jpg").Select

<現象>
(1)Vistaでは、pic2の画像が、A21の個所でなく、A5の個所に挿入されます
  (pic1の上に重なって)
(2)Vistaで、セルを選択して、画像挿入する操作をマクロ記録すると
Range("A21").Selectは記録されてますが、
ActiveSheet.Pictures.Insert("D:\abc\pic2.jpg").Selectが
 記録されていません。

上記プログラムで、pic2をA21の箇所に挿入できるようにするには
どうすれば良いのでしょうか。
よろしくお願いします。


800 名前:番組の途中ですが名無しです mailto:sage [2008/05/15(木) 14:03:07 ]
Excel2003のVBAでcontinue forが使えないのは仕様ですか?

801 名前:デフォルトの名無しさん [2008/05/15(木) 16:56:49 ]
>>799
スクロールの問題……じゃないよな

802 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 15:32:49 ]
Excel2000

シート上に
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1")
で生成したチェックボックスのみを削除するプログラムを
実行すると

アプリケーション定義またはオブジェクトの定義エラーです

というメッセージが出ます。 s.FormControlType のところで
エラーが出ているのですが、どうやったら動くようになるのでしょうか?

Dim s As Shape

For Each s In Sheets("sheet1").Shapes
If s.Type = msoOLEControlObject Then
If s.FormControlType = xlCheckBox Then
s.Delete
End If
End If
Next


803 名前:799 [2008/05/16(金) 17:00:43 ]
>>801
レスありがとうございます。
スクロールの問題ではありません。
(1)の現象になったので、
マクロと同じ操作をして、マクロ記録してみたら
(2)になりました。

804 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 18:30:33 ]
>799
WorkSheet.Shapes.AddPicture(...) かな?

試してないけど
ActiveSheet.Pictures.Insert( "D:\abc\pic1.JPG").Top = Range("A5").Top
ActiveSheet.Pictures.Insert( "D:\abc\pic2.jpg").Top = Range("A21").Top




805 名前:799 [2008/05/16(金) 20:29:24 ]
>>804
レスありがとうございます。
うまくいきました。

806 名前:デフォルトの名無しさん [2008/05/16(金) 20:37:24 ]
30125なら上位3桁だけとって、゙30100゙から100刻みで表示させたい。
0.002354なら゙0.00235゙から0.00001刻みでグラフの軸に表示したいのです。
何かよい方法はありませんでしょうか?

807 名前:799 [2008/05/16(金) 20:47:07 ]
>>804
別質問ですけど、
804で挿入したオブジェクトのnameは、
どのようにすれば取得できるのでしょうか。


808 名前:デフォルトの名無しさん [2008/05/16(金) 23:37:41 ]
仕事でマクロを使って制御のシミュレーションをしたいのですが
1つのプロシージャ内でループ演算をしつつ、他のプロシージャを実行して
変数を変更したいと考えています。
複数のプロシージャを並列処理できる方法はないのでしょうか?

809 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:12:29 ]
ActiveX EXEを作れば可能。
Win32APIのスレッドも使えるかもねー

810 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:15:28 ]
既出だったらすみません。

excel2000+winXpで開発してるんですが、
処理を走らせるとメモリの使用率がたまる一方で
解放されている気配を感じません。

しまいにはメモリが足りませんとエラーになり
落ちてしまいます。

助けて!!1

DAO3.6使ってるんですが関係しますかね?
メモリを解放する方法ってありますか??

811 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 06:59:32 ]
>>810

DoEvent とか
動的配列を使ってるなら必ずeraseするとか

812 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 08:39:43 ]
>806
刻み幅等を計算する方法を知りたいというのが主旨かな?

30125の常用対数は、log(30125)/log(10) =4.47892705558292
切り上げて、5
上位3ケタだけ取るので、刻み幅は、10^(5-3)=100

切り上げは、round(x-0.5)+1 という感じかな。

813 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 10:29:50 ]
>807
古い環境が無いんで試せてないけど
Dim Pic1 As Picture
Dim Pic2 As Picutre

Set Pic1 = ActiveSheet.Pictures.Insert( "D:\abc\pic1.JPG")
Pic1.Top = Range("A5").Top 
Range("A4").Value = Pic1.Name
Set Pic2 = ActiveSheet.Pictures.Insert( "D:\abc\pic2.jpg")
Pic2.Top = Range("A21").Top 
Range("A20").Value = Pic2.Name


814 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:03:34 ]
>>808
複数のExcelインスタンスを起こして、マルチプロセスでやれば?
これならWin32APIなんか使わずにできるが




815 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 19:17:01 ]
timer使え

816 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:10:29 ]
ループの中でたのプロシージャを呼び出せばいい
灰次

817 名前:デフォルトの名無しさん [2008/05/18(日) 23:31:42 ]
マクロでNORMDISTを使いたいんですが、エラーが出てしまいます。

マクロではどのように記述すればNORMDISTは使えるのでしょうか?

誰か教えてください

818 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 11:05:13 ]
Excel2000上で動的に配置したチェックボックスにイベント処理を追加したいのですが
方法がわかりません。ヒントだけでもいいのでお願いします。

819 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 16:39:14 ]
>>818
classモジュール使えばできるよ

820 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 16:46:45 ]
>>817
ヘルプの例で言えば、

42  対象となる値
40  分布の算術平均(相加平均)
1.5 分布の標準偏差

WorksheetFunction.NormDist(42, 40, 1.5, True)

で、いいんじゃない?

821 名前:デフォルトの名無しさん [2008/05/19(月) 20:24:01 ]
実行時エラー'1004'が出ます。
コマンドボタンで、
Workbook Open "C:\-.xls"
Worksheets("a").Select
Range("A20").Select

と入力し別ファイルのシートのセルを選択したいのですが、
どのように直せばいいか、教えていただきたいです。
よろしくお願いします。

822 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:26:10 ]
>>821
ちゃんと目的のbookが開いているなら、シート名「a」のシートがあれば問題ないよ

823 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 21:55:45 ]
>>821-822
シート上に置いたコントロールツールボックスのコマンドボタンならそんなんでまともに動くわけねーよ。
シートや範囲をちゃんとブックから明示しないと。

824 名前:822 mailto:sage [2008/05/19(月) 22:04:21 ]
>>823
なるほど、 シート上に置いたコントロールツールボックスのコマンドボタン
おまい天才!
スレ汚しスマソ



825 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:21:39 ]
>>823のなかなかのエスパーぶりに嫉妬

826 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:28:05 ]
別に>>823は普通だろ?
Formのコマンドボタンなら>>821でも動くだろうが、どこに書いても同じように動くコードを書かんとね。


827 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:30:47 ]
>>826
どこに書いても同じように動くコードを書く必要はない
コードを書いたクラスでまともに動けば問題ない

828 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:21:17 ]
質問させて頂きます。

デジタル署名付のVBAプロジェクトで、
ブックオープン時にオラクル接続をし、
オートシェイプで線を引くという処理をしております。
処理後、シートを見るとオートシェイプで描いた線の色がありませんでした。
プリンタで出力すると、線が描かれております。
原因と対処法を教えてください

【OS】windows XP pro
【EXCEL】2003

【処理内容】

Dim OraSession As Object
Dim OraDatabase As Object

Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase("TNS", "USER/PASS", ORADB_DEFAULT)

Set OraSession = Nothing
Set OraDatabase = Nothing

ActiveSheet.Shapes.AddLine(98.25, 151.5, 150#, 159.75).Select

といったかんじです

829 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 01:40:10 ]
>>828
オラクル関係なくね?
接続して閉じてるだけだろ?
それとも、オラクルに繋がなければ問題は解消されるの?

830 名前:826 mailto:sage [2008/05/21(水) 07:43:54 ]
>>827
そりゃ確かにそうだね。
冗長な記述を避けるためにもMeとか書かんからね。
>>821のコードに関してはということ。

831 名前:826 mailto:sage [2008/05/21(水) 07:46:16 ]
Me.を書かんことはちょっと違うか。
まどうでもよい。

832 名前:デフォルトの名無しさん [2008/05/21(水) 07:59:09 ]
書式設定指定したら?

833 名前:デフォルトの名無しさん [2008/05/21(水) 17:42:10 ]
XP、EXCEL2003です。

特定のディレクトリの直下にあるファイル(複数)のファイル名を
全て取得する方法を教えて下さい。
よろしくお願いします。


834 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 17:49:26 ]
>>833
ちょこちょこ質問掲示板見てると週に1回は遭遇する質問
ググれば腐るほどコードがある
個人的にはfilesystemobjectを使うのが一番効率いいと思う



835 名前:833 [2008/05/21(水) 19:20:12 ]
>>834
レスありがとうございます。
失礼いたしました。


836 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:22:28 ]
fsoはネットワークドライブ相手だったりするとテキメンに
速度が落ちたりするから困る。
 あと、ワイルドカードが無いのはどーゆーことだ。

837 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:21:02 ]
>>836
独り言はチラシの裏に書け

838 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 06:44:14 ]
確かfsoは、クエリとってからのファイル追加や削除、内容変更に
伴う更新もかなりの直近まで自動的に更新してくれる中々の
優れモンだったという記憶が....
Kernel32.DLL のAPIを使って自分でクエリした場合は、
ファイル数が多く、激しく更新されるような場合は、取得情報と
実態の間に食い違いが発生してユーザーはパニくるのがオチなんだが
(これもチラ裏に書くべきだったか)

839 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:21:06 ]
わざわざfsoやapi使わんでもDir()関数使えばよい

840 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:25:32 ]
Dirだとパスの長さが255以上になると確かエラーになる。

841 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:23:12 ]
sage

842 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:07:41 ]
OS:win xp
excel:2007

初めて質問します。お願いします。

 ・データ用のシート
 ・処理用シート

の二つを用意します。

データ用シート
    店舗→ A   B   C
 商品↓
 りんご   100  200  300
 みかん   10  20   30
 めろん    1   2    3

処理用シートのA1,B1のセルに店舗と商品を書き込むと、データ用のシートを参照して、
そのシートに書かれた数値(例えば、上記の表の「A店(=A1)」の「みかん=B1」だと「100」)が、
処理用シートのC1(「=100」が)に入るようにしたいです。
店舗、商品は任意で追加していきたいので、データ用シートの列、行を検索していくようなやり方がいいのでは、
と考えています。

調べて、VLOOKUP関数を使えば…、というところまで来たのですが、二点のセルの値を見て、
表から一つの値を出力する、というところがわかりません。
何卒、ご指導の方、お願いします。

843 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:01:34 ]
>>842
VBAに関係ないと思うのだが。
vlookup以外にもlookupやmatchもあるんだから何とかなるだろそれくらい。

844 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:16:49 ]
なんとかするのがお前たちの仕事だろ。

あのな、上から目線もいいけどここはVBAに詳しくない奴らが
何をどうやったらいいかを聞きにきてるスレなわけ。
その手ほどきをしてやった上でそういうこと言うならいいけど、
回答も示さずにそういうこと言うのは荒らしとかわんねーんだよ。
こたえる気が無いなら質問スレから消えろよカスが。


↓じゃ、模範的回答を頼む



845 名前:釣られてみる mailto:sage [2008/05/24(土) 00:26:30 ]
いや、それだけの情報でVBAでどうしろと。

846 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 03:07:26 ]
スレタイ読め。ここは質問スレであって回答スレではない。

847 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 03:09:22 ]
>>846
こいつ頭悪そうだな(ゲラゲラ

848 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 07:33:50 ]
>>842
いろんなやり方があると思うけど、私がスマートだと思うのを提案します。

データ用シートをこんなふうにする。
ID 店舗 商品 値段
Aりんご A りんご 100
Aみかん A みかん 10
Aめろん A めろん 1
Bりんご B りんご 200
Bみかん B みかん 20
Bめろん B めろん 2
Cりんご C りんご 300
Cみかん C みかん 30
Cめろん C めろん 3

IDの列は数式で作る。Aりんごのところに
=B2&C2
としてオートフィルで。


849 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 07:53:02 ]
つづき

処理用シートで
C1には
=A1&B1

D1には
データ用シートはSheet1にあるなら
=VLOOKUP(C1,Sheet1!A:D,4,FALSE)
としてできあがり。


850 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 08:12:05 ]
>>842
C1に
=index(「データの範囲」,match(B1,「商品名の範囲」),match(A1,「店舗名の範囲」))
と入れる

これVBAじゃないから、次からはEXCEL総合相談スレの方へ行ってくれ

851 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 10:55:08 ]
VBA初心者ですが質問させて下さい。
Module1で宣言したパブリック変数をThisWorkbookで参照する事はできないのでしょうか。

状況を説明しますと、nullpo.xlsというマスターファイルがあります。
その中のModule1で処理を実行すると、public変数をインクリメントします。

"名前を付けて保存時"の保存ダイアログで、あらかじめ表示されるファイル名に
そのpublic変数を出したいのですがうまくいきませんでした…

852 名前:851 [2008/05/24(土) 13:22:46 ]
クスン…終わらないと帰れないんです
みなさんの力を貸して下さい。

言い忘れましたがわたしは女です。

853 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:26:25 ]
>852
俺が何でも答えますよ
もうちょっとしたら家に着くから待っててね

ところで今日は帰ったらどうするの?
汗かいちゃったってシャワーでも浴びるのかな?かな?

854 名前:851 [2008/05/24(土) 13:34:41 ]
>>853
ありがとうございます。
彼氏と待ち合わせしてるんです。



855 名前:デフォルトの名無しさん [2008/05/24(土) 13:39:32 ]
VBAを自由自在に扱うために、VBの勉強をしようかと思うのですが
VBの種類が多すぎてどれを勉強したらいいのかわかりませんでした。
VBAのためにVBを勉強するには、どのVBを勉強すればいいのでしょうか?

856 名前:853 mailto:sage [2008/05/24(土) 13:41:43 ]
死ね。お前に教えることは何もない
自分でどうにかするんだな

857 名前:853 mailto:sage [2008/05/24(土) 13:42:33 ]
856は>854宛てな

858 名前:851 [2008/05/24(土) 13:59:41 ]
そんな…

他スレで質問することにします。
すみませんでした。

859 名前:側近中の側近 ◆0351148456 [2008/05/24(土) 15:22:18 ]
>>853
(っ´▽`)っ
独身の女の子には優しいのね。最低☆

860 名前:側近中の側近 ◆0351148456 [2008/05/24(土) 15:23:00 ]
>>855
(っ´▽`)っ
VBAならVB6.0だね。

861 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:25:38 ]
>>856
手のひら返しワロス

862 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:29:18 ]
>>851
そのpublic変数値を返す、public関数でも作れば?

つか、ダイアログに値をいれて有効にする処理が出来てないだけの気がするが…

863 名前:855 [2008/05/24(土) 15:29:35 ]
>>860
ありがとうございます。

864 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:39:20 ]
>>860

VB6.0やVB.NETをVBAを使えない人に勧めちゃらめどちらも超ベテラン向けだよ
VBScript位しか残らないけど、VBAとはちょっと合わないかも知れないね。
やっぱしVBAはVBAで覚えるしかないのかな(鬱



865 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 16:18:52 ]
VBAを覚えたいのにVBAを利用しない意味がわからない

866 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:16:49 ]
>>842
商品と店舗の組み合わせが疎であるなら>>848の方法
組み合わせが密であるなら>>850の方法がいいだろうね。

ところで解決したのかどうか反応がほしいもんだね。
コミュニケーションしようや。

867 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:25:26 ]
>>865
これほんとにその通り。
なんでVBAを覚えるためにVBを覚えたいなんて言うのかな。
VBを覚えたいんだって素直に言えばいいのに。

868 名前:デフォルトの名無しさん [2008/05/24(土) 21:29:23 ]
VBってMSDNライブラリ使えるの?

869 名前:デフォルトの名無しさん [2008/05/24(土) 21:38:17 ]
VBAを体系的に勉強するのにいい本とかありますか?

870 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:46:29 ]
実戦力UP! Excel VBAドリル式問題集

871 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:47:13 ]
VBAとはマクロの記録で泥縄式に覚えていくもんだ

872 名前:デフォルトの名無しさん [2008/05/24(土) 22:46:45 ]
エクセル2003で上の行から数字が入ったセルだけをm個
選んで加えるVBAをうちたいんですが、上手くいきません。

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 <>"#na n/a" then
b = b + cells(1 + k + a + s , 1)
k = k + 1
s = s + 1
else
k = k + 1
loop
next

いまこんな感じで打ってるのですが、 if b <>"#na n/a" then
のところで止まってしまいます。
どこがおかしいのでしょうか?
また、もっといい方法はありますか?

873 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:21:29 ]
>>872
「数字が入ってるセル」なら条件をb≧0にすれば?

874 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:33:33 ]
負の数は数字ではないと?



875 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 23:38:47 ]
kとsを+1しているがループするたびに初期値が1に戻るぞw
あと、b = cells(1 + k + a , 1 )の部分、1回目の処理でkの値が判らない。

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_数字に対応しているか調べるには
どうすればよい?

977 名前:デフォルトの名無しさん [2008/06/01(日) 18:51:45 ]
エクセル2000で

指定した名前で
CSVファイルで保存する方法ってわかりますか?


978 名前:デフォルトの名無しさん [2008/06/01(日) 19:29:10 ]
>>977
マクロの記録で出てこないか?

979 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 19:37:44 ]
>>977
使ったことないけど、getsaveasfilename でいいんじゃない?

980 名前:側近中の側近 ◆0351148456 [2008/06/01(日) 20:32:46 ]
>>977
(っ´▽`)っ
Excel2000のVBAでCSV保存すると、
日付型はことごとく文字化けするけどなー☆

981 名前:デフォルトの名無しさん [2008/06/01(日) 20:44:27 ]
>>978
>>977
サンクス


982 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 10:24:47 ]
ビジュアル ベーシック フォー 哀川翔

983 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 15:11:45 ]
>>980
普通に読めますが?

984 名前:側近中の側近 ◆0351148456 [2008/06/02(月) 20:44:29 ]
>>983
(っ´▽`)っ
Jan 1 2007とかにならんかね?



985 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:51:41 ]
>>984
文字化け?

986 名前:側近中の側近 ◆0351148456 [2008/06/02(月) 20:54:18 ]
>>985
(っ´▽`)っ
これは文字化けじゃないか。
細かいことは気にするな☆

987 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:06:08 ]
いわゆるマクロウイルスとかいうやつのコードの書き方教えて。
ウイルスチェックで引っかかるところを見てみたいだけです。

988 名前:デフォルトの名無しさん [2008/06/03(火) 12:49:33 ]
携帯からたどり着きました。スレ違いだったらすみません。
よかったらご教授願います。多分とても簡単な事だと思うのですが…超初心者です。
OSはXP、Excel2003です。


ファイルAの内容を、カメラ機能を使って、ファイルBに取り込もうとしています。
ファイルAのシート名は1〜31までの整数です。(1日1シート)
ファイルB上でマクロを実行した時、実行日に相当するシートの範囲を読むようにしたいのですが、以下のマクロでは、エラーになってしまいます。手直しして頂けないでしょうか。宜しくお願いします。


Sub カメラのリンクを編集()
Dim i As String
i = Day(Date)
ActiveSheet.Shapes("camera").Select
Selection.Formula "='G:\平成20年\[ファイルA.xls]i'!$A$1:$K$60"
End Sub




989 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:02:37 ]
ここは手直しスレじゃないんだが。
せめてどんなエラーになったか位書こうよ。
あー、シート名が変数i(不適当な名前だw)に入っているのなら、文字列を組み立てないとダメだね。
>988では"i"と言う名前のシートを探そうとしてしまう。

990 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:03:52 ]
×ご教授
○ご教示

991 名前:デフォルトの名無しさん [2008/06/03(火) 14:55:10 ]
>989、990
文字列を組み立てるというアドバイスの元見直しをして、無事完成しました。
スレ違い失礼しました、「ご教示」ありがとうございました。

992 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 15:38:51 ]
質問したいけど構文ここに書くの面どくせえ

993 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 18:52:12 ]
・・・

If ActiveCell.Column = 6 Then
Range("A1:A10").Copy ActiveCell
Else
MsgBox "ここは駄目"
End If

・・・

これだと6列目を先頭としてA1〜A10のセルをコピーでき、
6列目以外は入力不可でmsgboxが出るのですが、
例えば6列目〜10列目を入力可能にするにはどうしたら良いでしょうか?

994 名前:デフォルトの名無しさん [2008/06/03(火) 22:18:12 ]
オートシェイプの始点やら終点ってどういう単位?

Sheets(2).Shapes.AddLine(Xs, Ys, Xe, Ye).Select

たとえば、こうやって変数で当てて500から520までかけ。次に520から540までかけ
ってやっても線がつながらんのだが。



995 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 01:32:55 ]
>>994
ちゃんとつながるぞ。単位はポイント

Sheets(1).Shapes.AddLine(50, 100, 100, 50).Select
Sheets(1).Shapes.AddLine(100, 50, 150, 100).Select
Sheets(1).Shapes.AddLine(150, 100, 100, 150).Select
Sheets(1).Shapes.AddLine(100, 150, 50, 100).Select


996 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 10:34:25 ]
VBAを使用して作成したExcelファイルを立ち上げようとすると、
「問題が発生したため、Microsoft Excel for Windows を終了します。 ご不便をおかけして申し訳ありません。」
というMicrosoftのエラーになり、Excelが開かなくなってしまいました。
中のモジュールを何とか見る方法はないでしょうか?


997 名前:デフォルトの名無しさん [2008/06/04(水) 20:06:50 ]
あるセルにある文字列が入っています。特定の文字列では無いのですが、
この文字列から、条件を満たす物を抽出したく考えております。

具体的には、「*」 で囲まれた文字列を抜き出したく考えております。
(「」で囲まれた物以外を削除)

調べてみたのですが、このような処理は可能でしょうか。
可能でありましたらば、教えてくださいませ。よろしくお願いします。 

998 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:23:50 ]
regexp

999 名前:デフォルトの名無しさん [2008/06/04(水) 22:58:25 ]

pc11.2ch.net/test/read.cgi/tech/1212587819/l50


1000 名前:デフォルトの名無しさん [2008/06/04(水) 23:08:39 ]
10000ならオマエラの人生幸せ
それ以外なら一生不幸



1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<248KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef