Excel VBA 質問スレ Part32
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/10/07(月) 22:19:55.86★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。
★2 ExcelのVBA以外の部分に関する質問はNGです。
但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。
★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
VBAとは、『Visual Basic for Applications』の略で
Application
├Workbooks
|└Workbook
| ├Worksheets
| |└Worksheet
というApplication以下のオブジェクトを、VB言語で操作するものを指します。
例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
前スレ:Excel VBA 質問スレ Part31
http://toro.2ch.net/test/read.cgi/tech/1376371376/
関連スレ:VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
0222デフォルトの名無しさん
2013/12/18(水) 14:19:06.90けっこうたくさんのFormを使ってるんですが動きが遅くなるのを心配してるんですが。
0223デフォルトの名無しさん
2013/12/18(水) 18:48:52.04「一年前」の「最古のデータ」だろ
地で曲解するタイプか
0224デフォルトの名無しさん
2013/12/18(水) 20:35:53.78と解釈したが。どうするかはわからぬ。
0225デフォルトの名無しさん
2013/12/18(水) 22:59:15.70エスパー検定受けるつもりも無いんで、下手に日本語でアレコレ言うくらいなら具体的な例を上げて説明して欲しいっすな
0226デフォルトの名無しさん
2013/12/18(水) 23:25:43.80データの何かの日付が2012/1/1のもののうち一番古いデータだろ、たぶん
まあまともなレス欲しいならそのデータのシート例だせと
0227デフォルトの名無しさん
2013/12/19(木) 00:15:07.120228220
2013/12/19(木) 01:48:39.04最古って表現が適切でなかったですね
0229デフォルトの名無しさん
2013/12/19(木) 07:38:05.88いえいえ、私達の助言のおかげで解決できて良かったです
0230デフォルトの名無しさん
2013/12/19(木) 08:25:55.401.エンドユーザー向けに配布するEXCEL
2.項目(150位)を入力して、エラーをチェックして最終的にCSVを吐き出す
3.区分などはCombboxで実装(区分値の追加はたまに発生する)区分は30個ほど
4.入力した複数の条件でコード値を取得する処理あり
5.マルチランゲージ(ただし、日本と海外は別ブック)
項目(150位)のセル位置管理、エラー処理
区分値の管理はどうしたらいいと思いますか?
自分の知識で考えた結果は
項目の管理
→TXTにパラメーターをもたせて、ブックを開いたタイミングでクラスオブジェクト(自作)
に落として、collectionで管理する
区分の管理
→Accessをローカル配置して、ブックを開いたタイミングで更新
0231デフォルトの名無しさん
2013/12/19(木) 18:02:06.46>項目(150位)のセル位置管理
決め打ち
セルに名前つけて名前で管理
セル位置と処理内容の対応シート作って管理
>エラー処理
好きなようにしろ
>区分値の管理
区分値用のシートに書いとく
俺ならEXCELで配布するならそのブックだけで完結するようにするが
区分の管理は一括なのかローカルなのかとか、色々考える事が多くて何とも言えん
まあ、好きなようにしろとしか
0232デフォルトの名無しさん
2013/12/19(木) 18:24:22.860233デフォルトの名無しさん
2013/12/20(金) 16:12:59.17いつ切り捨てするのかよくわかりませんでした。
計算は1度計算したのをさらにかけたり割ったりします。
ここで、
最初にかけ算→小数点切り捨て→かけ算
なのか
かけ算→かけ算→割り算など全部した後いっきに切り捨てた方が良いのか
前者でやっていたんですがこの2つだと当然答えも違ってきますよね
普通どっちが正解なんですか?
0234デフォルトの名無しさん
2013/12/20(金) 16:33:59.75普通は、計算誤差というものに思いを馳せる
0235デフォルトの名無しさん
2013/12/20(金) 16:39:27.59レスありがとうございます
もしあなたが先生だったら回答はどちらにしますか?
0236デフォルトの名無しさん
2013/12/20(金) 16:43:08.850237デフォルトの名無しさん
2013/12/20(金) 16:48:03.001 / 3 * 3を計算して下さい。
0238デフォルトの名無しさん
2013/12/20(金) 16:56:45.30もう冬休み入っちゃって。
あーもう単位落としそうで心配だよお
0239デフォルトの名無しさん
2013/12/20(金) 17:50:29.510240デフォルトの名無しさん
2013/12/20(金) 18:07:18.650241デフォルトの名無しさん
2013/12/20(金) 18:12:45.79その中から特定の日付を見つけたいんですが(実際は日付そのもの
ではなく、その日付のある行を知りたい)、Findの使い方を教えて
ください
Dim target As Range
Set target = Range("A3:A150").Find(What:="2012/3/01", LookIn:=xlValues, LookAt:=xlWhole)
MsgBox target.Row ←
とすると、実行時エラー:91
オブジェクト変数またはWithブロック変数が設定されていません
ってエラーが←のところで発生します。
0242デフォルトの名無しさん
2013/12/20(金) 18:14:17.26="2012/3/1"
0243241
2013/12/20(金) 18:20:00.05テスト用のシートではその日付はA80にあるんですがね
0244デフォルトの名無しさん
2013/12/20(金) 18:24:49.950245デフォルトの名無しさん
2013/12/20(金) 19:39:52.680247241
2013/12/20(金) 20:20:20.05日付を変数として先ほどのものに与えるのはどうするんでしょうか?
Dim dt as Date
として
dt = 日付
Set target = Range("A3:A150").Find(What:=#dt#, LookIn:=xlValues, LookAt:=xlWhole)
とすると構文エラーになるんですが。
0248デフォルトの名無しさん
2013/12/20(金) 20:35:51.50いつ切り捨てするのかよくわかりませんでした。
計算は1度計算したのをさらにかけたり割ったりします。
ここで、
最初にかけ算→小数点切り捨て→かけ算
なのか
かけ算→かけ算→割り算など全部した後いっきに切り捨てた方が良いのか
前者でやっていたんですがこの2つだと当然答えも違ってきますよね
普通どっちが正解なんですか?
0249デフォルトの名無しさん
2013/12/20(金) 20:57:48.50「#〜# で囲む」 と「"〜" で囲む」 の意味の違いが判っていないからその質問になる。
0250241
2013/12/20(金) 21:27:42.490251デフォルトの名無しさん
2013/12/20(金) 22:40:03.70日付リテラル って書いても分からないと思うにで少し解説しておく
VB(A)では#で囲まれた日付と時刻は日付型(Date)の定数になる。("で囲めば文字リテラル・・文字型の定数)
よってWhat:=#3/1/2012# は日付型(Date)をWhatに指定していることになる。
これは
Dim dt As Date
dt = "2012/3/1"
・・・・・What:=dt,・・・・
と同じことになる
ちょっと書きすぎた。ついでに数値リテラルなども勉強しておくのが吉と思う
0252デフォルトの名無しさん
2013/12/20(金) 22:55:40.45あ〜、なるほど〜
その辺りは全然勉強してませんでした
ありがとうございますm(__)m
0253デフォルトの名無しさん
2013/12/21(土) 12:12:08.22なにに処理時間がかかってるかを調べたいのですが
どうするのが得策ですか?
なにが原因かがわかればあとはこちらでコードを改良します。
なので原因の調べ方。
0254デフォルトの名無しさん
2013/12/21(土) 12:27:40.19質問があまりにもざっくりしすぎ
原因も対処法もたくさんありすぎる
まず最初にマシンスペックを確認する
CPUの速度やメモリの量など
0255デフォルトの名無しさん
2013/12/21(土) 12:35:51.56その前後に時間を表示するようにして見てみるとか
というか1分も我慢できないとかwだったらExcelでやるんでなく実行ファイル(exe)作ってそれでやるようにしたら?
0256デフォルトの名無しさん
2013/12/21(土) 12:55:19.70をあちこちに入れまくる
0257デフォルトの名無しさん
2013/12/21(土) 14:12:00.66Application.Calculation = xlManual
0258デフォルトの名無しさん
2013/12/21(土) 14:13:25.50アルゴリズムが悪い
質問のレベルから見てあきらか
0259デフォルトの名無しさん
2013/12/21(土) 14:30:17.09むずか死ね
0260デフォルトの名無しさん
2013/12/21(土) 14:56:17.82そのまま「せっせせっせ」とWordに貼り付けたいんですが
どういうコードを書けばいいですか?
Wordにはページの上から下へそのまんま東の順番で並べ、表と表の間は改行を1行だけ挿入します。
0261デフォルトの名無しさん
2013/12/21(土) 16:46:02.95★zipファイルの「阪神無」フォルダー以下
「平成25年10月」の数値未発表で一部合計値比較不可能の為
平成25年9月〜平成13年4月は以下の各駅を合計・増減から除外して再計算。
「阪神」─「本線」─「阪神梅田」〜「千船」
「阪神」─「なんば線」─「大阪難波」〜「出来島」
★zipファイルの「阪神有」フォルダー以下
除外せず、「平成25年10月」の未発表数値を前年同月(平成24年10月)と同一と仮定
※「Hnn(年度)」…平成(nn-1)年4月〜平成nn年3月
※「中之島」「渡辺橋」「大江橋」「なにわ橋」…「H21」10月の[総数]は日割り(13/31日) 。
※「大阪難波」「桜川」「ドーム前」「九条」…「H21」3月の[総数]は日割り(12/31日) 。
※「総数」…「H18」の7月以降及び年度平均はOTS線を除いた数値となっている。
平成24年4月〜平成25年10月
http://www.city.osaka.lg.jp/toshikeikaku/page/0000020916.html
[2013年12月20日]
http://www.city.osaka.lg.jp/toshikeikaku/cmsfiles/contents/0000020/20916/6-2.xls
平成24年3月〜平成13年4月
http://www.city.osaka.lg.jp/toshikeikaku/page/0000164566.html
[2013年6月4日]
http://www.city.osaka.lg.jp/toshikeikaku/cmsfiles/contents/0000164/164566/12-6.xls
0262デフォルトの名無しさん
2013/12/21(土) 16:58:15.50スクロールも選択もできなくはなるけど
リストはグレーアウトしないの?
コンボボックスはグレーアウトするのに
0263デフォルトの名無しさん
2013/12/21(土) 19:08:01.72そういうコードを書けばいい
何がわからないんだ
0264260
2013/12/21(土) 20:14:42.98具体的には?
Selection.Copyまではわかるが、そのあとはこんな感じか?
Selection.Copy Destination:=Word.Documents(1).ActiveCursor
0265デフォルトの名無しさん
2013/12/21(土) 21:18:08.98多分ワードに直接貼り付けとか出来ないと思う
一旦クリップボード経由させるのが楽なんじゃね
0267デフォルトの名無しさん
2013/12/23(月) 01:32:23.38ユーザーフォームにコマンドボタンAとBがあって
Aをクリックするとデータの抽出
Bをクリックするとデータを抽出した後、特定のデータに色をつける
この場合、BにAと同じ構文を書いた後、色付けしてるのですが
省略ってできないでしょうか?
あまりに長くなるのでなんとかしたいです
0268デフォルトの名無しさん
2013/12/23(月) 03:31:36.24「Sub 抽出」を用意しといて、Aからは抽出を呼び出すだけ
Bは抽出を呼んだあと色付けするようにプログラムを作ればいい
0269デフォルトの名無しさん
2013/12/23(月) 08:32:52.21データの抽出
End Sub
Private Sub btn_B_Click()
データの抽出
データに色付け
End Sub
Sub データの抽出()
End Sub
Sub データに色付け()
End Sub
0270デフォルトの名無しさん
2013/12/23(月) 10:39:37.720271デフォルトの名無しさん
2013/12/23(月) 14:10:40.000272デフォルトの名無しさん
2013/12/23(月) 16:33:14.05ありがとうございました。
全体がすっきりしました。教えてくれた方、素敵です。
0273デフォルトの名無しさん
2013/12/24(火) 12:07:04.760274デフォルトの名無しさん
2013/12/24(火) 12:08:07.16いつも中央に寄っています。
0275デフォルトの名無しさん
2013/12/24(火) 16:22:57.85VBAのフォームのコマンドボタンではTextAlignプロパティが公開されていないので無理です
テキストの後ろにスペースを足して、左に寄っているように見せかけるか、ボタンの上にラベルを貼るか
最初からラベルだけにしてボタン的な使い方をするかしてください
0276デフォルトの名無しさん
2013/12/24(火) 21:56:14.31ティでボタンに貼る。
「PicturePosition」プロパティで、「fmPicturePositionLeftCenter」を
指定すれば、「Picture」プロパティで指定した画像の幅だけテキストが
右に寄り、「fmPicturePositionRightCenter」を指定すれば、左に寄る。
これなら1ドット単位で指定できるが...。
0277デフォルトの名無しさん
2013/12/25(水) 16:13:28.240278デフォルトの名無しさん
2013/12/25(水) 16:14:03.220279デフォルトの名無しさん
2013/12/25(水) 16:32:51.190280デフォルトの名無しさん
2013/12/25(水) 17:22:19.39残業200時間までは働けるぞ、仕事くれ。
0281デフォルトの名無しさん
2013/12/25(水) 19:14:41.33トータルで350時間くらいか。
働き者だなぁ。
0282デフォルトの名無しさん
2013/12/26(木) 13:04:36.260283デフォルトの名無しさん
2013/12/26(木) 21:19:03.410284デフォルトの名無しさん
2013/12/27(金) 12:51:03.640285デフォルトの名無しさん
2013/12/27(金) 12:59:16.930286デフォルトの名無しさん
2013/12/29(日) 21:51:06.62なぜ標準モジュールに作らないとダメなんですか?
ThisWorkbookモジュールやSheet1モジュールじゃなぜ動かないんですか?
理由が知りたいです。
0287デフォルトの名無しさん
2013/12/29(日) 21:59:39.81>シートに自作関数を作るとき
どゆこと?
0288デフォルトの名無しさん
2013/12/29(日) 22:06:15.500289デフォルトの名無しさん
2013/12/29(日) 22:16:09.85(1) 関数、IsNumberとIsNumericの違いはなんですか?
(2) それはどうやって調べましたか? (記憶してた人は回答しないでね)
(2)のほうがすごく知りたいです。なぜなら調べる方法がちゃんとわかっていればこのことに限らずこんご自分で解決できるから。
GoogleというのはできればNGでお願い。
0290デフォルトの名無しさん
2013/12/29(日) 22:45:57.27Yahooならいいんか?
0291デフォルトの名無しさん
2013/12/29(日) 22:54:17.48Ahoo
0292デフォルトの名無しさん
2013/12/29(日) 22:57:57.90VBAの組み込み関数かEXCELのワークシート関数かとか
型チェックするか暗黙の変換するとかしないとか
とりあえず両方のヘルプみれば済む話
0293デフォルトの名無しさん
2013/12/29(日) 23:05:10.44マイクロソフトがそう言う風にEXCELを作ったから
それ以上はマイクロソフトに聞かないとわかりません
0294デフォルトの名無しさん
2013/12/29(日) 23:05:12.81簡単にヘルプとおっしゃいますが
どうやってヘルプを起動するかとか
そのあとどうやって知りたい機能の関数を検索するかとか
そういうのが知りたいのですが
0295デフォルトの名無しさん
2013/12/29(日) 23:06:26.77マイクロソフトがどう言う風にEXCELを作ったかを調べるほうほうを聞いているのですが
0296デフォルトの名無しさん
2013/12/29(日) 23:18:02.59ヘルプだしたことないのかよ?
VBEのメニューにあるし、普通は知りたいところでF1押すだけだ
0297デフォルトの名無しさん
2013/12/29(日) 23:19:47.85それはマイクロソフトに聞いてください
0298デフォルトの名無しさん
2013/12/30(月) 00:36:13.04つか簡単におっしゃいますがとか臭いな、行き遅れのキチガイババア的な臭いだ
0299デフォルトの名無しさん
2013/12/30(月) 01:13:49.38あなたはそれをマイクロソフトに聞いたのですか?
0300デフォルトの名無しさん
2013/12/30(月) 04:23:14.97第3者の解説等で十分じゃないですかね
必要があればマイクロソフトに問い合わせますがね
問い合わせが全部タダと言うわけでもないので
030118
2013/12/30(月) 09:37:31.590302デフォルトの名無しさん
2013/12/30(月) 09:42:45.56その公式や非公式のドキュメントは具体的になんなのか
PCのどこかにdocファイルとして存在してるのか
もしそうならそのPathはどこなのか
ヘルプ機能で見るものなのか
もしそうならその呼び出し方は
そういうのを質問者様は聞いてると思うぞ
抽象的なことではなくて
0303デフォルトの名無しさん
2013/12/30(月) 10:44:40.440304デフォルトの名無しさん
2013/12/30(月) 11:40:58.82CreateObject("InternetExplorer.Application")やCreateObject("Outlook.Application")のように
そのソフトをオブジェクト変数として扱うにはどのような呪文を唱えればいいでしょうか?
そしてそのソフトの機能を呼びだすためどのようなメソッドがあるかを調べる方法は?
0305デフォルトの名無しさん
2013/12/30(月) 11:45:39.16差し支えるよ
全然違うから
0306デフォルトの名無しさん
2013/12/30(月) 11:53:59.12部屋に鍵をかけずに買い物に行くのがDoEvents
鍵をかけて眠るのがSleep
0307デフォルトの名無しさん
2013/12/30(月) 13:28:00.33そのフリーソフトがCreateObjectできるように作られてるソフトじゃないと無理
普通はまずそのフリーソフトの作者側で公開された情報がないか調べるんだがな
そう言う風に作られてるなら、メソッドの調べ方は参照設定してオブジェクトブラウザで見るとか
0308303
2013/12/30(月) 13:30:08.67じゃあ鍵をかけずに眠るのはどんなステートメント/関数?
0309303
2013/12/30(月) 13:30:54.040310デフォルトの名無しさん
2013/12/30(月) 13:31:16.47その例えはおかしくないか
郵便物チェックするのがDoEvents
無視して寝るのがSleep
だろ
0311デフォルトの名無しさん
2013/12/30(月) 13:34:05.560312デフォルトの名無しさん
2013/12/30(月) 13:52:47.65Sleepはそのまんまの意味
DoEventsはイベント処理中に後続のイベントを割り込ませるもの。
なのでスリープ同様CPU使用率を下げるが全くの別物。
というかDoEventsはそんな認識で使われるとバクの元だし必要とする時点で設計ミスの可能性が高いので忘れた方がいいよ。
0313デフォルトの名無しさん
2013/12/30(月) 14:26:52.86「DoEvents関数を抜けて戻ってきたら船が無くなってていきなり海中に叩き込まれた」みたいな
愉快な体験がいくらでもできるよ やったねたえちゃん!
0314デフォルトの名無しさん
2013/12/30(月) 20:17:35.02Windowsに処理を明け渡すんじゃなくて?
0315デフォルトの名無しさん
2013/12/30(月) 22:06:05.570316デフォルトの名無しさん
2014/01/01(水) 11:16:42.52ようするに仕事の順序が変わるだけ
0317デフォルトの名無しさん
2014/01/01(水) 11:19:51.82やることは決まってんだよ
Sleepは溜まった仕事をそのままずっと先送りするだけ、DoEventsは順番が変わって急ぎの仕事を先にやるだけ
0318デフォルトの名無しさん
2014/01/01(水) 14:23:24.77会社のイントラWeb(?)から見れるデータベースを参照するためにすべきことはなんですか?
データベースにもURLとかサーバの名前みたいなのがあるんですよね?
どういうしくみか分かってないので、それも含めて質問できたらなと存じます。
0319デフォルトの名無しさん
2014/01/01(水) 15:37:21.51まず社内のシステム管理者に聞け
0320318
2014/01/04(土) 09:54:05.01教えてくれないんですよ。
空ファイルをつくり拡張子をudlにしてそれを開くと道は開けるみたいな情報を得ましたがそこから先がわかりません。
イントラWebのFormを使ってアクセスしてるDBをVBAで自由に扱うには
どうすればいいですか?
DBのサーバ名を調べればいいんですよね?
それはHTMLのソースのどこかに書いてるんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています