27 :デフォルトの名無しさん:2011/02/24(木) 15:27:19.57
【コラム】あまりに便利すぎた・・・Excel VBAの「行き詰まり」問題〔07/02〕
http://pc11.2ch.net/test/read.cgi/pcnews/1246498806/
検索してたらこんな切ないスレがあったんだけど、今からExcelマクロ勉強するのって無駄?
まあ、ちょっと頑張って正規表現と両方憶えれば万能なんだけれども・・・
28 :デフォルトの名無しさん:2011/02/24(木) 17:07:59.98
無駄ってことも無いとは思うが、昔納品した客から
Excelのバージョンアップしたら色々問題が出て
VBA使うPCのExcelを前のバージョンにしたと聞いた
29 :デフォルトの名無しさん:2011/02/24(木) 18:28:27.62
>>27
このスレを見てればわかるとおり、VBAのエキスパートになる必要はないけど
Excelを使うならVBAは知ってた方が捗る
30 :デフォルトの名無しさん:2011/02/24(木) 18:37:52.75
このスレを見てればわかるんですか?
31 :デフォルトの名無しさん:2011/02/24(木) 19:41:43.64
VBAのエキスパートにならなくても
ここで質問すれば解決って意味でしょ
71 :デフォルトの名無しさん:2011/03/01(火) 10:29:40.84
問題で月別売上集計のマクロを作成しないといけないのですがわからないのでどなたかおしえてください!
例えばセルB2からセルB299までに1年分の日付がランダムで入力されてるとします。
で、セルK2からセルK299に金額がランダムで入力されています。
マクロを使って月別の売上を出すにはどのようにしたらよろしいですか?
説明が下手で申し訳ないです
72 :デフォルトの名無しさん:2011/03/01(火) 10:56:03.69
VBA使わずDSumでいけるという話だが
あえてなおVBAならWorksheetfunction.DSum
73 :デフォルトの名無しさん:2011/03/01(火) 11:04:52.81
ありがとうございます!
VBAでしないといけないのです。。。
とりあえずWorksheetfunction.DSum
でやってみます
74 :デフォルトの名無しさん:2011/03/01(火) 11:54:19.80
何度もすみません
1月の集計 ○○円
2月の集計 ○○円
・・・
と続くのですが月別にするのがわかりません。。。
またアウトラインを使わないといけないのですが
1、総計
2、月別
3、全体の表示
としないといけないのですがわかりません。
どなたかおしえてください
75 :デフォルトの名無しさん:2011/03/01(火) 12:48:31.73
>>74
アウトラインって集計か?
集計とか統合はウンコだから覚えなくてよい。
ピボットテーブルを覚えりゃよい。
月でグループ化すれば簡単だ。
ピボットテーブル使えない人は日付でソートして同じ月の間だけ加算していくマクロになるが,、ピボット覚えた方が楽。
76 :デフォルトの名無しさん:2011/03/01(火) 12:55:41.90
VBAでやるにしたって、ソートなんて必要ないだろ…
月をインデックスとした配列に順番に足すだけ
77 :デフォルトの名無しさん:2011/03/01(火) 13:07:26.23
>>76
1年分の月に関しては確かにそうだな。
一般的なピボットの内部ロジックを書いた。
78 :デフォルトの名無しさん:2011/03/01(火) 13:11:52.15
複数年の月別でも列が年で行が月とかなら次元配列でもいいか。
79 :デフォルトの名無しさん:2011/03/01(火) 13:12:42.21
上は2が抜けた。
80 :デフォルトの名無しさん:2011/03/01(火) 15:32:01.88
問題でって書いてるから、まあなんかの実習問題なんだろうけど
それってVBAでやれって問題なのか?
VBAでやるのにアウトライン使えとか普通ないだろ
エクセルの機能とかの実習ならむしろVBAつかっちゃいかんのじゃないか
81 :デフォルトの名無しさん:2011/03/01(火) 20:32:10.83
>>74
VBAで「ピボット操作して集計シートにコピペ」までやれば
「マクロを使って月別の売上を出」したことにならないかな。
同じ結果を出すなら、自作コードでやるより
エクセルの機能を使ったほうが明らかに動作速いし。
82 :デフォルトの名無しさん:2011/03/01(火) 21:23:33.63
ワンタッチで全部済むと
とても気分はいいけどな
83 :デフォルトの名無しさん:2011/03/02(水) 01:22:15.86
>>81
月別なら自作の方が速いだろ?
112 :デフォルトの名無しさん:2011/03/03(木) 21:07:27.25
Excel 2003と2007、XP SP3またはVistaが対象です。
諸事情あって、VBAからWin32 APIを直接使っています。
DIBを使って画像処理をしているのですが、ワークスペース上の画像を
直接LoadImage(API)するような荒業ってありますでしょうか。
今は、SaveAsを使いxlhtml形式でまるごと保存>そのうち画像ファイルをLoadImageでメモリ上にロード
>保存しているファイルを削除・・・・という方法でやっていますが、どうにも泥臭くて・・・。
139 :デフォルトの名無しさん:2011/03/04(金) 20:49:05.69
ATPVBAEN.XLAM!Histogramで作成したヒストグラムのグラフを
任意の位置、大きさに表示することは可能ですか?
140 :デフォルトの名無しさん:2011/03/05(土) 00:01:17.85
WorkSheetFunction.matchって#N/Aは返さないんだよな?
on error resume next
val = WorkSheetFunction.match
blnIsFind = iif(err.number=0, true,false)
on error goto 0
みたいな使い方にしないと駄目?
145 :デフォルトの名無しさん:2011/03/05(土) 22:37:51.89
ビジュアルプログラミング言語というものがあるようですが
将来的にEXCELもそんな感じにならないものでしょうか?
146 :デフォルトの名無しさん:2011/03/06(日) 09:33:14.07
そんな余裕があるなら、とっくにVBAから.NETベースに切り替わっていたと思う。
147 :デフォルトの名無しさん:2011/03/06(日) 21:06:06.11
.NETに移行しやすいVBAの記述法
・BASE 1を使わない
・Variantを使わない
・クラスモジュールを使う
・コレクションとかディクショナリ、FSOを使う
148 :デフォルトの名無しさん:2011/03/06(日) 22:07:55.91
>BASE 1を使わない
むしろ配列のインデックス0を使わない(作らない)方が分り易い。
Excelが絡む時は、VB.NETでも下限値1の配列を作ることがあるな。
>クラスモジュールを使う
使う事で大分判り易くなる時くらいか。
VBAの実装は中途半端過ぎて、よっぽどでないと使う気が起こらない。
149 :デフォルトの名無しさん:2011/03/06(日) 22:58:21.00
セルの値がVariant型だからVariant使うのはしょうがないもんね。
150 :デフォルトの名無しさん:2011/03/07(月) 01:43:06.31
つーかExcel VBAやってる人が
VB.Net移行なんてするの?
VSTOでも使う気?
151 :デフォルトの名無しさん:2011/03/07(月) 01:52:56.98
そんなもん人によるだろ
152 :デフォルトの名無しさん:2011/03/07(月) 01:53:52.74
例えばどんな場合?
Excel捨てるの?
153 :デフォルトの名無しさん:2011/03/07(月) 08:06:23.39
>>149
FSOで取得すりゃ全てString
154 :デフォルトの名無しさん:2011/03/07(月) 08:32:44.58
その前にVBAをVBにしてくれ
変な制限が多すぎる
161 :デフォルトの名無しさん:2011/03/07(月) 13:15:24.41
>>152
VBAじゃ無くてVB6以前から移行するのはよくあるよ
199 :デフォルトの名無しさん:2011/03/11(金) 00:32:16.35
保護について教えて下さい。
シートを保護する時にロックをしてるセルを選択出来なくなる
する奴あるじゃないですか?
あれをやると時々エクセルの挙動がおかしくなります。
矢印キーが効かなくなったり
アクティブセルの周りに普段なら出る黒い枠線が出なかったりとか。
スクロールロックが掛かってるとかそんなんじゃないです。
ロック有り無し関係なくして、シートイベントで制御した方が良いでしょうか?
前から時々なってて、ぐぐって調べたんですが
特にこれと言って解決策が見つかりません。
これだという絶対的な発生条件も不明です。なったりならなかったりします。
201 :デフォルトの名無しさん:2011/03/11(金) 12:39:01.06
>>199
VBA?
203 :デフォルトの名無しさん:2011/03/12(土) 07:46:57.11
別のPCのエクセル2003で作成したマクロを、別のPCのエクセル2010で動かそうとすると、
「マクロが実行できません。このブックでマクロが使用できないか、
またはすべてのマクロが無効になっている可能性があります。」
と表示されます。エクセル2010で作成したマクロは2010で当然動きます。
なにが理由か分かりません、助けてください。
204 :デフォルトの名無しさん:2011/03/12(土) 14:18:36.86
>>203
まくろが無効になってるから。
マクロ有効ファイルで保存しなおすか、
オプションでマクロの設定を変更するか、
信頼できる発行元の設定をすればいける。
205 :デフォルトの名無しさん:2011/03/12(土) 14:21:17.24
無効になってたら2010も無理なんじゃね?
206 :デフォルトの名無しさん:2011/03/12(土) 14:56:38.84
>>204 信頼できる発行元以外は全て設定しました。
>>205 なぜ無効になるのでしょうか?なんか分かります?
207 :デフォルトの名無しさん:2011/03/12(土) 15:42:26.87
なんか2010になってそこらへん変わってるな
それで駄目ならこれとかやってみれば。
http://okwave.jp/qa/q6197506.html
208 :204:2011/03/12(土) 16:57:07.81
>>206
.xlsm形式でブックの保存をし直してみましたか??
209 :デフォルトの名無しさん:2011/03/12(土) 19:17:14.67
>>207 うん。試してみます。
>>208 はい。マクロ有効のファイルにしましたがダメです・・・。
210 :デフォルトの名無しさん:2011/03/12(土) 19:26:05.43
>>207 だめでした・・・。
211 :デフォルトの名無しさん:2011/03/13(日) 21:36:27.84
>>210
なんでかって言われると、マクロを悪用したトラブルが世界中で起きたから、
簡単には使えないように制限をかけたんだよ。
マクロを使うには、まずマクロ有効ブックとして保存しなおしたあと、
そのファイルを保存したフォルダを「信頼できる場所」に登録しなきゃいけない。
212 :デフォルトの名無しさん:2011/03/13(日) 22:06:13.43
>>211 有効ブックにして信頼できる場所にしています・・・。
213 :デフォルトの名無しさん:2011/03/14(月) 03:17:11.77
>>212
もしかして64bit版Excelだったりしない?
32bitのマクロはそのままだと使えない機能があるんだけど
217 :デフォルトの名無しさん:2011/03/18(金) 23:43:20.20
BMPのピクセル情報を取得して1ピクセル=1セルとして扱って
エクセルで画像を再現できると聞いたのですが詳しく教えてくれませんか?
VBAでそういうことできるらしいのですがまったくわかりません
誰かわかりやすい解説サイトのURl貼るか解説してくれませんか?
218 :デフォルトの名無しさん:2011/03/19(土) 00:12:19.73
>>217
別に難しいことじゃないだろ、そんぐらい独学でやれよ
BMPのピクセル情報を取得する方法を調べる
セルの背景色を設定する方法を調べる
分ったら、とりあえずBMPのピクセル情報を一つ一つ調べて、それに基づいて
セルの背景を設定していく
ただそれだけだ
219 :217:2011/03/19(土) 10:03:18.56
その調べるってのがわかんないんですけど…
馬鹿ですかあなた?
224 :デフォルトの名無しさん:2011/03/19(土) 21:45:36.13
>>218
ありがとう
調べても急にプログラミング言語が云々とか出てきて
具体的にどういうことをしてそうなるのかがわからなかったんだ
それがわかっただけでもマジ助かったわ
サンクス
243 :デフォルトの名無しさん:2011/03/23(水) 18:01:16.51
転職用のアピール材料として、アプリを構築した。そんで、提案書とサルでも分かるような仕様書も作った。
転職の際、同じことした御方みえますか?
259 :デフォルトの名無しさん:2011/03/26(土) 17:50:35.81
>>243
> 転職用のアピール材料として、アプリを構築した。そんで、提案書とサルでも分かるような仕様書も作った。
> 転職の際、同じことした御方みえますか?
あるよ
260 :デフォルトの名無しさん:2011/03/26(土) 20:39:43.48
>>243
運悪くコードオタクとかがその会社にいたら、中身見られて汚いコードだから不合格とか言われるかもw
Selectだらけのど下手でもプロとしてやってる奴いたりするから会社次第とは思うが。
261 :デフォルトの名無しさん:2011/03/26(土) 21:49:10.81
俺は恥ずかしくてそんな事出来ない。
新卒だったら考えるけど
262 :デフォルトの名無しさん:2011/03/26(土) 22:40:16.83
>>261
お前のコードはそんなに恥ずかしいのか?
263 :デフォルトの名無しさん:2011/03/26(土) 23:05:05.69
コードじゃなくて、そういう幼稚なアピールの仕方が恥ずかしいのでは?
264 :デフォルトの名無しさん:2011/03/26(土) 23:41:37.57
ならどうやってアピールする?
265 :デフォルトの名無しさん:2011/03/26(土) 23:43:30.52
それは自分で考えるべきだ
266 :デフォルトの名無しさん:2011/03/27(日) 10:55:16.31
他人と同じ事やったんじゃアピール弱いもんな
267 :デフォルトの名無しさん:2011/03/27(日) 12:23:49.91
デザイナーとかだと作品を持ってくるのは当たり前みたいだが。
プログラマの能力を見るにはコードを見るのが一番だけど、
持ってこさせないのは面接官がコードを読めないんだろうな。
268 :デフォルトの名無しさん:2011/03/27(日) 14:35:32.50
面接するのは人事の人間であってプログラマが見るわけじゃない(一般的には)
269 :デフォルトの名無しさん:2011/03/27(日) 14:44:35.26
>>267
そんなのは当たり前だが、プログラマがVBAってのがダメダメすぎw
つーかVBAじゃまともに能力計れないし
小学生のソフトボール投げが、大人になると砲丸や槍になるように
VBAで能力計れるのは、精々中学生1年生まで
270 :デフォルトの名無しさん:2011/03/27(日) 14:53:09.07
少しは評価してやれよ
VBAは便利だぞ
271 :デフォルトの名無しさん:2011/03/27(日) 15:02:09.60
VBA自体は評価してるし、便利なのも認める
しかしVBAでアピールしようとする奴は、評価に値しない
272 :デフォルトの名無しさん:2011/03/27(日) 15:16:38.45
転職先がプログラマだとはどこにも書いてない
構築したアプリがVBAだとはどこにも書いてない
まあ、スレ違いだからこれ以上はよそでやってくれ
273 :デフォルトの名無しさん:2011/03/27(日) 15:26:43.86
> 転職先がプログラマだとはどこにも書いてない
そこはどうだろうと関係ない部分だけど?
> 構築したアプリがVBAだとはどこにも書いてない
ここはVBAスレなんだから、VBA以外でアピールする話をVBAスレでしてるなら
まともな判断能力が欠如してるってことで、それこそ就職どころじゃないw
252 :デフォルトの名無しさん:2011/03/26(土) 07:20:50.44
おたずねします。
グラフエリア上にツールバーからコンボボックスを作りました。
①[コントロールの書式設定]でリストの入力範囲を設定し、
②[マクロの登録]で、VBエディッタにコードを作成できたのですが、
コンボボックスでクリックされた値を②のサブプロシージャ-で取得する
方法がわかりません。ヒントでよいので、お願いします。
253 :デフォルトの名無しさん:2011/03/26(土) 10:41:35.15
追伸:
つまり、グラフエリア上に作成したコンボボックスのコードとして記述するための名前がわからないのですが、、、
276 :デフォルトの名無しさん:2011/03/27(日) 20:24:31.26
すいませんよくわかりません
もうちょっと分かりやすくお願いします。
初心者なんで
277 :デフォルトの名無しさん:2011/03/27(日) 21:23:18.20
「初心者」が免罪符になるって?
278 :デフォルトの名無しさん:2011/03/27(日) 21:28:29.64
はぁ、もういいです
279 :デフォルトの名無しさん:2011/03/27(日) 22:19:56.33
何かスレッド荒れてきたな。
態度でかい奴ばかり
280 :デフォルトの名無しさん:2011/03/27(日) 22:30:06.84
上から目線で見下してる回答者も増えたよな
281 :デフォルトの名無しさん:2011/03/28(月) 00:16:17.14
ほんとにそうですね。
例えば、自己PRとしてアプリ提出することが何故いけないの?相手に売り込むための、プレゼンの一環だと思うし。
例えば、初心者だからと前置きしていて不遜な態度をとっていないのにもかかわらず、上から目線とか余裕ないですよね。
282 :デフォルトの名無しさん:2011/03/28(月) 00:27:17.74
いけないことだなんて誰も言ってないのに被害妄想が強すぎだな
なんでそんなに余裕がないの?
283 :デフォルトの名無しさん:2011/03/28(月) 06:45:07.89
面接官が率直に思うだろうこと
企画系の募集じゃない場合
(ここでプレゼンとか何様だよ)
面接官がプログラマーの場合
(うわVBかよ)
面接官がプログラマーじゃない場合
(これ採用の評価基準にしろと?じゃめんどいから不採用で)
アプリ提出が前提でよっぽど自信作じゃない限り危険
284 :デフォルトの名無しさん:2011/03/28(月) 10:08:05.00
否定するおまえは、ビジネスライクなまともなアプリ作ったことないだろ。あ、そもそも作る能力ないか。かわいそうに。
285 :デフォルトの名無しさん:2011/03/28(月) 10:17:38.05
負け犬の遠吠え?
VBAスレでビジネスライクなまともなアプリとか言ってもカッコワルイだけだし
VBAスレなのにVBA以外での話だなんて言い訳しだしたらもっとカッコワルイw
286 :デフォルトの名無しさん:2011/03/28(月) 10:47:27.91
VBAけなす奴は一体、何ののためにVBAという言語つかってるわけ?
287 :デフォルトの名無しさん:2011/03/28(月) 11:26:09.69
Officeの標準マクロ言語だから使ってるだけで
あえてVBAを選択して使ってるわけじゃないし
中にはVBAを簡易開発環境代わりにしてなんでもVBAでやる奴も居るけど
俺はOfficeアプリが必要な場合以外はVBAなんて使わないし
288 :デフォルトの名無しさん:2011/03/28(月) 12:45:29.11
言語の優劣とかまだ言ってるやつがいるのか
Windowsのプログラミングはライブラリで決まる
何から呼び出しても結果は一緒
あと、なんかもう開発環境をわざわざインストールするのがめんどい
Officeは最初から入ってるし
最近のマシンは処理速度も十分
VBAを嫌ってるのは知識の古い老害だけ
289 :デフォルトの名無しさん:2011/03/28(月) 12:59:45.38
C,C++,C#,javaとかそこそこ使えるようになるとVBAを見下して
俺はすごい、レベル高いって思いたくなっちゃうんだよな
まあ、動物的本能というか感情の問題だな
290 :デフォルトの名無しさん:2011/03/28(月) 13:21:41.55
生産性が一番高い言語はExcelVBA
データを共有しないスタンドアロンアプリではExcelVBAが最強
291 :デフォルトの名無しさん:2011/03/28(月) 13:25:48.49
>>283
プログラマ募集でソース付きで作品を提出させればいい判断材料になりそうだけどな
292 :デフォルトの名無しさん:2011/03/28(月) 13:29:16.85
VBAしか使えない子がキレちゃったねぇ
滑稽極まりないw
293 :デフォルトの名無しさん:2011/03/28(月) 13:41:50.90
> Officeは最初から入ってるし
> Officeは最初から入ってるし
> Officeは最初から入ってるし
何時からOS標準になったんだ?
294 :デフォルトの名無しさん:2011/03/28(月) 15:02:55.38
ここまで全部俺の自演
295 :デフォルトの名無しさん:2011/03/28(月) 15:17:53.07
まともに呼べないライブラリが多いのもVBAの弱み
296 :デフォルトの名無しさん:2011/03/28(月) 15:31:03.12
APIリファレンス
297 :デフォルトの名無しさん:2011/03/28(月) 15:42:53.29
なんだ、やっぱり解ってないのか
298 :デフォルトの名無しさん:2011/03/28(月) 16:37:39.07
VBA勉強したいけど2003と2010で互換性低かったりとかだったら不安
299 :デフォルトの名無しさん:2011/03/28(月) 17:21:33.69
>>298
99%は一緒だから安心しろ
300 :デフォルトの名無しさん:2011/03/28(月) 18:51:04.92
>>290
言語じゃねーよ
301 :デフォルトの名無しさん:2011/03/28(月) 19:56:33.06
:
302 :デフォルトの名無しさん:2011/03/28(月) 20:23:54.55
>>299
サンクス
303 :デフォルトの名無しさん:2011/03/28(月) 21:48:00.87
自分だけ使うもの作るとき、クラス使おうか悩んで最終的に構造体に逃げる俺
モジュールすら公開しないのに、わざわざ使う気力が湧かないわ
304 :デフォルトの名無しさん:2011/03/29(火) 00:24:55.97
クラスは難しいよな。VBA極めるくらいの気がなきゃ、下手に手を出さないのが得策かも
305 :デフォルトの名無しさん:2011/03/29(火) 01:18:24.75
そういえばVBAにもクラスがあるな。
現場で使ってるのを見たことがあるけどその時は
クラスとか全然知らなかったから全く分からなかった。
JAVAとか勉強した後にこのサイト見るとそんなに難しくなさそうだ
http://codezine.jp/article/detail/499
VBAしかやったことがない人にはクラスは難しそうに見えるけど
JAVAを勉強すればそんなに難しくない事に気がつく。
306 :デフォルトの名無しさん:2011/03/29(火) 01:24:01.89
VBA(とVB6)のクラスは独特すぎて他言語環境に慣れてる人には辛いかも
307 :デフォルトの名無しさん:2011/03/29(火) 04:40:54.10
クラスはコントロール大量に作るぐらいしか役に立たない
構造体はapiの引数にしかたなく使う感じ
どっちも配列使うのに制限があって使い勝手が悪い
308 :デフォルトの名無しさん:2011/03/29(火) 06:48:07.29
クラス作ると見やすくなる
俺の場合はそれだけだな
309 :デフォルトの名無しさん:2011/03/29(火) 07:01:51.83
俺は連想配列にぶち込むオブジェクトとしてクラス使うことが多いかな
構造体と似た、ほぼグローバル変数のみのクラスだが、
代入できる値の範囲を制限したり、値の代入に伴って行う簡単な処理を置いたり
特定の値が入った場合にRaiseEventでイベント起こしてやったり
307も言ってる仮想コントロール配列も、結局はコレだしね
310 : 忍法帖【Lv=2,xxxP】 :2011/03/29(火) 07:25:48.04
!ninja
311 : 忍法帖【Lv=15,xxxPT】 :2011/03/29(火) 09:18:56.22
!ninja
312 :デフォルトの名無しさん:2011/03/29(火) 10:36:10.36
エクセルで散布図グラフを作成した時に
近似曲線の追加からグラフに傾きと切片の式を追加できるとおもうんですが
この式が表示されるテキストボックス(データラベル?)の位置を取得
したいと考えています。
その際、この式の位置やサイズを取得するときのコントロールオブジェクトを
教えてください。
314 :デフォルトの名無しさん:2011/03/29(火) 16:08:25.84
自己解決しますた
318 :デフォルトの名無しさん:2011/03/29(火) 19:32:25.08
Excel2007
ループで処理実行中の間、マウスカーソルを砂時計が回っている奴に変えたいのですが、
どうすればよろしいんでしょう?
320 :デフォルトの名無しさん:2011/03/29(火) 20:04:38.14
>>318
マウスカーソルの変更はVBAではなくVBの分野。(>>3参照)
スレ違い。
321 :デフォルトの名無しさん:2011/03/29(火) 20:24:15.49
>>318
Application.Cursor = xlWait '砂時計
'ループ処理
Application.Cursor = xlDefault '通常
322 :デフォルトの名無しさん:2011/03/29(火) 20:29:02.84
>>320
…
>>321
ありがと
326 :デフォルトの名無しさん:2011/03/29(火) 21:57:12.95
>>321
俺もそれだと思ったんだが、俺のExcel2010じゃ砂時計にならないんだよな。
丸いのがぐるぐる回ってる。
砂時計はどうやって出すんだろ?
329 :デフォルトの名無しさん:2011/03/29(火) 23:38:26.78
>>326
APIでアイコンセットを切り替え
313 :デフォルトの名無しさん:2011/03/29(火) 16:02:41.54
使用ver 2007
A1セルに数字を入力し、B1セルに数に応じた背景色を反映させたいのですがどうすれば良いでしょうか
2003だと条件書式で3つまでは入力できたのですが、2007は条件追加ボタンが見当たらず・・・
20001~青
15001~20000水色
10001~15000緑
5001~10000黄色
0~5000赤
315 :デフォルトの名無しさん:2011/03/29(火) 18:00:09.65
上記条件付書式のコピーについてもうひとつ質問です
Z1に入力した数字次第(○○以上○○未満の場合)で、W1セル背景が5段階に変色するという書式をAND関数を使って設定しています
以降入力数字に対する変色は同条件で、Z2に入力したものをV1に反映、Z3に入力したものをU1に反映と、縦の入力データを横左方向に出力、といった書式を一括でコピーしたいのですが方法はあるでしょうか
現状W1をコピーすると、V1にもZ1からデータをひっぱってくる数式がコピーされてしまいます
W1セルに対して
Z1<5001 のとき背景赤色
AND(Z$1>=5001,Z$1<10001) のとき背景黄色といった感じで記入してます
$の位置が悪いか不要ですかね
316 :デフォルトの名無しさん:2011/03/29(火) 18:03:45.25
VBAで設定するなら、$がどうとかはあまり関係ない
つーか、ここはExcelスレではなくVBAスレなんだが
おまえはそれが解って来ているのか?
317 :デフォルトの名無しさん:2011/03/29(火) 18:10:31.69
エクセル質問で検索するとここが出てきたんでそりゃ失礼!
319 :デフォルトの名無しさん:2011/03/29(火) 19:34:27.89
>>316
細かい事言うな
323 :デフォルトの名無しさん:2011/03/29(火) 20:37:03.65
>>319
本人納得して移動してるのに、他人が細かい事言うな
324 :303:2011/03/29(火) 21:30:38.26
>>307 >>309のように、カスタムコントロール(ラッパー?)で
コントロール配列を実装するのがいちばん使いでがありそうな感じだね
構造体はWin32APIとかで必須だけど、VBScriptだと使えないから
泣く泣くクラスで実装してる人も多いんだろうか
わざわざクラス使ってるVBS見たことないですわ
325 :309:2011/03/29(火) 21:45:28.88
俺はVBSでもクラス使いまくりだ
> 連想配列にぶち込むオブジェクトとしてクラス使う
は、VBAでもVBSでも変わらないからな
ぶち込む先がVBA.CollectionかScripting.Dictionaryかの違いで
あとはVBAでは標準モジュール毎にPrivateメンバを持てるけど
WSFでインクルードする場合は、ファイル毎にPrivateメンバを持てないので
Privateメンバを持たせたい場合は必然的にクラス使うことになる
327 :デフォルトの名無しさん:2011/03/29(火) 23:07:16.51
>>325
VBSで入力補完が出来るエディタってある?
328 :デフォルトの名無しさん:2011/03/29(火) 23:11:26.42
いくつかあるけどVBSはスレ違い。
330 :デフォルトの名無しさん:2011/03/30(水) 09:33:22.55
プログラム未経験です。
仕事で必要なため、勉強したいが、
最初に読む書籍でオススメがあれば、
教えてください。
バージョンはExcel 2003です。
331 :デフォルトの名無しさん:2011/03/30(水) 09:51:56.85
>>330
先ずはこの3冊がおすすめ。2007でもいいかも。
かんたんプログラミング Excel2003 VBA 基礎編
かんたんプログラミング Excel2003 VBA 応用編
かんたんプログラミング Excel2003 VBA コントロール・関数編
332 :デフォルトの名無しさん:2011/03/30(水) 17:03:17.22
> 499 名前:デフォルトの名無しさん [sage] 投稿日:2009/03/30(月) 23:56:12
> できる大辞典 Excel VBA
> がオススメ
>
> 大村あつしは知識はあるが根本的にバカなので
> こいつの書いた本は素人にはオススメしない
> バカな内容に引きずられないだけの基礎スキルを持っていて
> 知識だけ上乗せしたい中級者以降なら構わないが
かんたんプログラミング Excel2003 VBAシリーズは大村あつし
333 :デフォルトの名無しさん:2011/03/30(水) 21:49:48.50
>>330
プログラム未経験なら
ExcelVBAより、CやJavaから始めたほうが、
学びやすい
ExcelVBAを1年間学ぶより、
Javaを11ヶ月学んで1ヶ月ExcelVBAを学ぶほうが
はるかにプログラマとしての実力がつくだろう
334 :デフォルトの名無しさん:2011/03/30(水) 22:03:22.88
だからどうしたって
335 :デフォルトの名無しさん:2011/03/30(水) 22:05:42.34
>>330
ハードウェア(PCアーキテクチャ)に多少なりとも造詣があるならC
それほどでも無ければJAVA
Windowsしか解らんのであればC#
336 :デフォルトの名無しさん:2011/03/30(水) 22:28:37.87
>仕事で必要なため
ExcelVBAが仕事で必要という事ではないのか?
337 :デフォルトの名無しさん:2011/03/30(水) 22:44:23.32
ExcelVBAじゃなければならないケースなんてそんなないだろ
338 :デフォルトの名無しさん:2011/03/30(水) 22:57:10.13
プログラムが目的ならそんなにはないだろうけど
Excelを使うのがメインならExcelVBA以外でどうする気だね?
339 :デフォルトの名無しさん:2011/03/30(水) 23:08:25.58
エクセルメインの会社なんて沢山あるだろ
340 :デフォルトの名無しさん:2011/03/30(水) 23:09:54.98
Excel自体がActiveXアプリなので、WSH等からの操作が可能
つまり、JScriptはもちろんのこと、Perl、Ruby、Pythonなどでも
VBAと同等とは言えないが、かなりの操作が可能だよ
まあ俺は別言語が使いたいわけじゃないから、外部から弄る場合もVBSだが
341 :デフォルトの名無しさん:2011/03/30(水) 23:17:09.38
俺もVBAから入ったからVBSだな
342 :デフォルトの名無しさん:2011/03/30(水) 23:18:09.83
エクセルで既に動いてる奴を修正するパターンでも
別ので作り直すの?
343 :デフォルトの名無しさん:2011/03/30(水) 23:23:22.79
作り直すのが目的じゃないんで、滅多にやらないが
既に開いてる奴を外部から操作することもあるよ
まあExcelの操作できる言語はVBAのみじゃないってだけの話だし
344 :デフォルトの名無しさん:2011/03/30(水) 23:46:48.37
C#からExcelを弄ると苦痛
引数省略できねぇえぇぇ
345 :デフォルトの名無しさん:2011/03/31(木) 02:08:31.03
C#だって原則は省略できないだろ
346 :デフォルトの名無しさん:2011/03/31(木) 11:29:59.92
計算を手動にしてるんですが、VBAで再計算を行わせるように出来ないですか?
Excel2003です。お願いします
347 :デフォルトの名無しさん:2011/03/31(木) 11:51:43.54
ヘルプ検索すればすぐ出てくるし
手動での再計算操作をマクロの記録にとっても解るし
なんでこのレベルのことを自分で調べられないの?
348 :デフォルトの名無しさん:2011/03/31(木) 20:04:40.56
VBAのコードを書いていると、「コンパイルエラー メモリが足りません。」とのエラーが出るようになりました。
(実行時のエラーではなく、記述している最中のエラーです。)
ヘルプを見ると「メモリが不足しています。(Error 7)」というエラーのようです。
ヘルプに記載されている対処は行ってみたものの、改善されませんでした。
どのようにすればこの問題は解決できるのでしょうか?
Excel2007です。よろしくお願いします。
349 :デフォルトの名無しさん:2011/03/31(木) 20:23:08.73
ハードウェア環境を省略するような質問に答えてくれる親切な人がいるとは思えない
350 :348:2011/03/31(木) 20:31:16.72
>>349
すみません。ハードウェア環境は以下の通りです。
WinXPProSP3
CPU i7 2.80GHz
メモリ 2.96 GB
仮想メモリのページングファイル 2046 - 4092 MB
他の人のPCで起動しようとしても同じエラーが出ました。
351 :デフォルトの名無しさん:2011/03/31(木) 21:12:32.06
コード書けよ。俺たちはエスパーじゃねーから
352 :348:2011/03/31(木) 21:18:50.73
>>351
すみません。業務で作成したコードのため、公開することができませんでした。
自己解決しました。
ttp://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200604/06040032.txt
にあるように、新規でエクセルファイルを作成し、全コピーをすることで問題を解消することができました。
ただし、気になる点が1つだけあります。
全てのシート及びコードをコピーしたはずなのに、(数人で確認しました。)
新しいファイルが657KBに対し、エラーのあるファイルは17644KBでした。
これが原因だったのかもしれませんが、詳細は不明です。
353 :デフォルトの名無しさん:2011/03/31(木) 22:39:26.82
>352
たぶん、どれかのシートの最下行(Excel2007なら数百万行だっけ)あたりになにかゴミデータでもあるんじゃないか?
354 :デフォルトの名無しさん:2011/04/01(金) 00:50:47.68
>>345
Excelのオブジェクトは省略パラメータだらけだって事だよ
Excel.Workbook oWb =
mExcelApp.Workbooks.Open(
str_filename,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
こんな感じになる
355 :348:2011/04/01(金) 09:42:16.41
>>353
返信が遅くなりました。
Ctrl+A->Ctrl+C->Ctrl+P の繰り返しでコピーしたので
ごみデータがあればそれも一緒にコピーされる気がしますが・・・。
ともあれ、問題は解決しました。
新規作成中のコードもうまく動くようになりました。
ご回答下さった皆様、ありがとうございました。
356 :デフォルトの名無しさん:2011/04/01(金) 09:48:14.24
×Ctrl+P
◎Ctrl+V
361 :デフォルトの名無しさん:2011/04/01(金) 13:55:00.59
2010でマクロの挙動が変わってしまいました。
Auto_OpenでExcelの起動と同時にマクロを走らせているのですが、
2007では起動と同時にワークシートも表示されていたのが
2010ではマクロが終了するまでシートが表示されません
なんとかなりませんか?
362 :デフォルトの名無しさん:2011/04/01(金) 15:19:27.73
>>360
アドインにすればいいと思うが。。
さうすれば他のPCでも使える。
363 :デフォルトの名無しさん:2011/04/01(金) 16:56:53.55
現在複数のエクセルファイルで、同一のコードを使用するために、
各エクセルファイルそれぞれのに同一のコードをコピペしたり、
エクセルファイル自体をコピーしてコードをそのまま持ってきて使用しています。
現状で、そのファイルが10個以上となっていますが、
vbaのコードに仕様を変更したり修正したりすると、それらのファイルのすべてそれぞれで
同様にコードを書きなおさないとなりません。
全選択のコピペで済む話ですが、かっこ良い仕様とは言えませんね。
なので、DLLみたいな感じで、コード自体は一つのファイルとして、
各エクセルファイルでそれを参照するようにすれば、もとのコードファイルを書き換えるだけで済むような仕様にしたいのですが、
そういう場合はどのようにすればよいのでしょうか?
364 :デフォルトの名無しさん:2011/04/01(金) 17:05:09.10
個人用マクロブック
365 :デフォルトの名無しさん:2011/04/01(金) 17:09:29.77
分かりにくい長文になってしまいましたが、
要するに、別ファイルに記述されているvbaコードを使えるかどうかです。
ちなみに BeforeDoubleClick等のイベントプロシージャも使用しています。
366 :デフォルトの名無しさん:2011/04/01(金) 17:17:20.93
だから個人用マクロブック
もしかしたら個人用マクロブックでは出来ないとか勘違いしてるのかも知れないけど
イベントも含めてちゃんと出来るから
367 :デフォルトの名無しさん:2011/04/01(金) 17:30:11.45
>>366
自己解決ですが、参照設定でコードが書かれたxlsファイルを直接指定しておけばグッドそうです。
ありがとうございました><
>>366
個人用マクロブックだとそれらとは関係ないエクセルファイルを使用する時もいちいち読みこまれるのがカッコ悪いと思います。
368 :デフォルトの名無しさん:2011/04/01(金) 17:59:41.21
あぁ、この子勘違いしてるんだね
369 :デフォルトの名無しさん:2011/04/01(金) 20:43:03.14
かっこ悪いと思います!
人に聞くのは
370 :デフォルトの名無しさん:2011/04/01(金) 20:48:16.27
選択した図形にくっついてるコネクタの情報ってどうやったらわかる?
→■
上の状況で■を選択してマクロを実行、いろいろした最後に、→を繋ぎ直す処理をしたい。
くっついてる最初の時点で名前を取っといて、最後にendconnect selectionすればいいと思うだけど。
371 :デフォルトの名無しさん:2011/04/01(金) 21:57:43.94
>>363
かっこいい…しびれた……
372 :デフォルトの名無しさん:2011/04/02(土) 14:15:20.95
>>370
自己解決しました。
374 :デフォルトの名無しさん:2011/04/02(土) 15:19:21.87
>>368
何か勘違いしていたでしょうか?
もしかして、個人用マクロブックの中のマクロで、開いたファイル中で呼び出すことがないマクロに関しては読み込まれないんですか?
380 :デフォルトの名無しさん:2011/04/02(土) 23:16:00.88
オフィス田中の田中亨が出してるSE出版のリファレンスに最近ハマッている。
リファレンスという側面以外に学習教材としての側面も大いに持ち合わせていてかなり良い!
377 :デフォルトの名無しさん:2011/04/02(土) 22:40:38.13
クラスって今まで使ったことないけどあれってどういうときに使うの?
378 :デフォルトの名無しさん:2011/04/02(土) 22:44:44.35
簡単に言うと、クラスモジュールで作成したプログラムによって、標準モジュールなどで、独自のメソッドやプロパティが使えます。
379 :デフォルトの名無しさん:2011/04/02(土) 22:50:35.56
俺は昔、やりたいことがあって方法を調べてたら、クラスを使う手法に行き着いた
>>377もそうやって必然性に迫られるまでは、クラスなんか使わなくていいよ
381 :デフォルトの名無しさん:2011/04/03(日) 00:24:47.36
今のとこ、クラスじゃなきゃできないってことは
VBA環境の右クリックに独自イベント処理を追加したとき、くらいかなぁ
こんなかんじ
Private WithEvents cmmndBrEvents1 As CommandBarEvents
Private Sub cmmndBrEvents1_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
・・・
End Sub
ネタ元はこれね
Excelプロフェッショナルエンジニアテクニック
ttp://www.amazon.co.jp/dp/4904412028/
387 :デフォルトの名無しさん:2011/04/03(日) 22:15:50.29
A1 B1 C1に値が入っていて、
D1が =SUM(A1:C1)となっていた場合に、
F1にD1の値のみコピーをしたいんだけど、
A1 B1 C1に数値を入力するたびに、
F1にD1の値のみコピーってできる?
エクセル2007 VBAのコードを教えて。
特に、「A1 B1 C1に数値を入力するたびに」のコードの解説もよろ。
388 :デフォルトの名無しさん:2011/04/03(日) 22:25:34.32
>>387
ワークシートのChangeイベントで出来る
この説明で解らないなら、基礎を勉強して出直せ
ここは丸投げでコード書いて貰うスレではなく、要点だけ教えて貰えば、
あとは自分でコード書ける人がヒントを貰いに来るスレなので
389 :デフォルトの名無しさん:2011/04/03(日) 22:56:21.79
>>382と>>387は釣りだよ
この種のクソ虫が最近増えてきたな
390 :387:2011/04/03(日) 23:02:50.15
すまんくそ蒸しでw
本当に困っているvba初心者なんだ.
サンプルコード教えてw
391 :デフォルトの名無しさん:2011/04/03(日) 23:14:18.17
>>390
sub サンプルコード()
do
if msgbox("あなたは糞虫ですか?", vbyesno) = vbyes Then
msgbox "やはり糞虫だったんですねw"
exit do
end if
loop
end sub
392 :387:2011/04/03(日) 23:23:04.84
>>391
アフォかおまえ
おれはくそ蒸しであって糞虫ちゃうちゅうねんw
こいつじゃあ話にならん。
コードかける人かもーんw
393 :コードかける人:2011/04/03(日) 23:32:04.10
C G Am Em F C Dm/F G
コード書いたよ
大逆循環な
394 :デフォルトの名無しさん:2011/04/03(日) 23:36:23.20
>>393
なんの曲だよw
395 :デフォルトの名無しさん:2011/04/03(日) 23:40:12.94
>>387
普通に数式で、F1セルに「=D1」とかじゃあダメなのか?
396 :デフォルトの名無しさん:2011/04/03(日) 23:43:12.39
>>394
大逆循環はコード(進行)最適化の一つの結論だぜ
http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%8E%E3%83%B3_%28%E3%83%91%E3%83%83%E3%83%98%E3%83%AB%E3%83%99%E3%83%AB%29#.E5.A4.A7.E9.80.86.E5.BE.AA.E7.92.B0
397 :デフォルトの名無しさん:2011/04/04(月) 00:13:17.03
>>396
あーそういやそんなコード理論あったなぁ
つーか進行的に普通すぎて名前なんか出てこないぞw
398 :デフォルトの名無しさん:2011/04/04(月) 01:08:21.43
>>387
' ワークシートに変更があった場合
Private Sub Worksheet_Change(ByVal Target As Range)
' 変更された行が1行目なら
If Target.Cells.Row = 1 Then
' 変更された列が1列目~3列目の間なら
If 1 <= Target.Cells.Column And Target.Cells.Column <= 3 Then
' 1行目の6列目の値に1行目の4列目の値を代入
Cells(1, 6).Value = Cells(1, 4).Value
End If
End If
End Sub
399 :387:2011/04/04(月) 02:00:59.90
>>398
ありがとうございます。
ここから、Copyメソッドや、PasteSpecialメソッドが続くと思うのですが、
よくわかりません。どうしてもエラーが出てしまいます。
400 :デフォルトの名無しさん:2011/04/04(月) 02:14:46.11
>>399
横レスだけど、>>398は、標準モジュールじゃなくて
ワークシートモジュールに書くんだよ
CopyメソッドとかPastSpecialメソッドとか関係ないよ
401 :デフォルトの名無しさん:2011/04/04(月) 02:43:22.07
忠告しとこうか、質問スレで無意味な回答するくらいならスルーするんだな
するくらいなら
スルー
する
んだな!
402 :387:2011/04/04(月) 02:55:56.78
>>400
ワークシートモジュールに書いてます^^;
>>A1 B1 C1に値が入っていて、
>>D1がA1+B1+C1場合に、
>>F1にD1の値のみコピー(形式を選択してコピー)をしたいんだけど、
>>A1 B1 C1に数値を入力するたびに、
>>F1にD1の値のみコピー(形式を選択してコピー)ってできるでしょうか?
' ワークシートに変更があった場合
Private Sub Worksheet_Change(ByVal Target As Range)
' 変更された行が1行目なら
If Target.Cells.Row = 1 Then
' 変更された列が1列目~3列目の間なら
If 1 <= Target.Cells.Column And Target.Cells.Column <= 3 Then
Cells(1, 4).Value = Cells(1, 1).Value + Cells(1, 2).Value + Cells(1, 3).Value
Cells(1, 4).Value.Copy
Cells(1, 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End If
End Sub
どこが誤りなのでしょうか?
403 :387:2011/04/04(月) 03:05:15.99
×形式を選択してコピー
○形式を選択して貼り付け
でした。すみません。
404 :デフォルトの名無しさん:2011/04/04(月) 06:23:27.58
>>402
CopyやPasteSpecialは関係ない
>>398のままでいい
>>387でD1セルに「=SUM(A1:C1)」となっている
と書いてあるのを前提として
405 :デフォルトの名無しさん:2011/04/04(月) 19:04:57.44
だんだんと壮大なことになってきてるなw
答えてる方も釣りかw
406 :デフォルトの名無しさん:2011/04/04(月) 19:06:21.05
あー。わかった!
>>387のエクセルの自動計算がオフになってるだけじゃないのか?
407 :デフォルトの名無しさん:2011/04/04(月) 20:34:41.64
>>406
>エクセルの自動計算がオフ
何のこと?どこにチェック項目がある?
408 :デフォルトの名無しさん:2011/04/04(月) 21:03:13.46
少しはググれ
409 :デフォルトの名無しさん:2011/04/04(月) 22:32:47.27
>>402
Cells(1, 4).Value = Cells(1, 1).Value + Cells(1, 2).Value + Cells(1, 3).Value
が思いつくのに、
Cells(1, 6).Value = Cells(1, 4).Value
が思いつかないのは不思議だ
いっそ、プロシージャの中身、全部消して
上の2文だけにしたら?
410 :デフォルトの名無しさん:2011/04/04(月) 22:45:36.59
まあ、どこが間違ってるって話だから
× Cells(1, 4).Value.Copy
○ Cells(1, 4).Copy
411 :387:2011/04/04(月) 23:44:22.94
>>410
ありがとうございます。自己解決してましたがw
ところで、このプログラムを実行すると、
Cells(1, 4)がコピー元の選択状態になってうざいのですが、
PasteSpecialメソッドを実行した後、
この状態を解消するメソッドってあります?
412 :デフォルトの名無しさん:2011/04/04(月) 23:47:39.17
選択解除とかじゃなくて、なんで素直にみんなが言ってるように
Cells(1, 6).Value = Cells(1, 4).Value
ってやらんのだね?
そこまでコピペにこだわる特別な理由でもあるのか?
413 :387:2011/04/04(月) 23:59:20.91
>>412
実際、仕事で使っているエクセルには>>398さんのように、
Cells(1, 6).Value = Cells(1, 4).Valueの代入で、
プログラミングしております。皆様ありがとうございます。
コピペはもう必要ないのですが、
初め、CopyメソッドとPasteSpecialメソッドが必要と考えていたので、
この使い方もできれば習得したいと思いまして。。。
414 :デフォルトの名無しさん:2011/04/05(火) 00:30:23.15
>>411
Application.CutCopyMode = False
415 :387:2011/04/05(火) 00:36:20.38
>>414
おお、ありがとうございます。
ヘルプで調べればよいのですが、
VBEのヘルプがなぜか
このページはご利用いただけません
お探しのページはご利用いただけません。以下のことを試してみてください。
ツールバーの [更新] をクリックする
ツールバーの [戻る] をクリックした後、目的のページへのリンクをもう一度クリックする
コンピュータに保存されたオフラインのコンテンツを表示する
となってしまい、調べられないのです。
ううう。なぜだ?
416 :387:2011/04/05(火) 00:43:38.46
VBAをいじる前に
http://www.trickpalace.net/windows/tips/excel.open.window.htm
により、エクセルを多重起動に設定したのが
もしかしていけなかったのか?
417 :デフォルトの名無しさん:2011/04/05(火) 07:03:42.39
>>415
そうとう知能の低いクソ虫だな
その画面から「オフラインのコンテンツ」で調べるんだよ
あと2chで書き込む前に一度ググれ
例えば「vba ヘルプ オフライン」とか入力して検索してみろ
お前の知能ではVBAは向いてないから以後は関わらないしろ
435 :デフォルトの名無しさん:2011/04/05(火) 15:38:17.73
最近、的外れな指摘して恥かくのが流行ってるのか?
>>426とか>>428とか>>433とか
436 :デフォルトの名無しさん:2011/04/05(火) 15:38:27.81
>>433
見やすさを考慮するとどういった
記述になるでしょうか?
437 :デフォルトの名無しさん:2011/04/05(火) 16:37:31.93
435
遅れてるなあ超流行ってるよ知らないの?
438 :デフォルトの名無しさん:2011/04/05(火) 16:43:22.49
納得した俺に、どこが恥ずかしい回答なのか教えてplz
439 :デフォルトの名無しさん:2011/04/05(火) 16:56:21.71
>>438
どれの恥ずかしさを晒して欲しいの?
恥ずかしい回答、いっぱいあるのでw
440 :デフォルトの名無しさん:2011/04/05(火) 17:13:06.27
さっきの3つをお願いします
446 :デフォルトの名無しさん:2011/04/05(火) 21:03:32.72
>>440
さっきの3つは何処が恥ずかしいか晒されてるだろ
449 :デフォルトの名無しさん:2011/04/05(火) 22:09:00.79
〉〉446
どこにだろう
451 :デフォルトの名無しさん:2011/04/05(火) 22:36:16.98
>>449
今大流行の的外れで恥ずかしい回答の実践見せてやってんだよそんくらい判れよ
466 :デフォルトの名無しさん:2011/04/07(木) 00:14:23.73
独学でやってるんで、一般的な意見が聞きたいです。
入力用ユーザーフォームの実際の処理は
標準モジュールに記述するものなんですか?
それと、標準モジュールはいくつかつくって、
処理内容ごとにわけたりしますか¥?
プロシージャが増えるほど視認性が悪くなってきたもので。
467 :デフォルトの名無しさん:2011/04/07(木) 00:40:06.57
>>466
プログラミングの作法は宗教みたいなもんで統一されてないし、
VBAにはとくにガイドラインもなかったと思う
468 :デフォルトの名無しさん:2011/04/07(木) 00:52:27.55
>>467
ピュアオーディオ宗教みたいな感じですか。
自分が見やすかったり、使いやすければ
とくに問題なし、いったところのようですね。
僕は
dim aaa , bbb , ccc as integer
や
aaa = 1 : ccc = 3
bbb = 2 ddd = 4
とかまとめたくなってしまいます。
469 :デフォルトの名無しさん:2011/04/07(木) 00:53:04.14
>>468
コロンが抜けてました・・・
470 :デフォルトの名無しさん:2011/04/07(木) 01:27:37.25
vbaでよくやる間違いに
dim aaa , bbb , ccc as integer
ってやっちゃうのがある
上でも言われてるけど、それでintegerになるのcccだけだから
471 :デフォルトの名無しさん:2011/04/07(木) 07:35:23.63
逆に、VB.NETだとその書き方で全部にIntegerが適用されるから
ややこしいんだよな。
472 :デフォルトの名無しさん:2011/04/07(木) 08:13:38.60
別にややこしく無いじゃん
今後はともかく現状ではExcelVBAにVB6準拠のとVB.NET準拠のがあるわけではなく
全てVB6準拠で統一されているんだから
473 :デフォルトの名無しさん:2011/04/07(木) 23:04:05.17
xmlhttp で取得したhtmlを
タグで解析するにはどうすればいい?
例えば10個目のtdタグ内容をinnertextで
抜きだすとか
474 :デフォルトの名無しさん:2011/04/07(木) 23:16:40.61
.NET移行を視野に入れた作法なら、フォームモジュールに画面処理を書いて、
ビジネスロジック部分はクラスにして管理って感じかねぇ
モジュールに入れるのは汎用関数ぐらいにして
VBAでもそういう意識を持てば、独学でも業務で通用するセンスを磨けるよ
475 :デフォルトの名無しさん:2011/04/07(木) 23:19:37.75
はやくVBAも.NETに統一してほしい
.NET環境使わないのはもったいない
476 :デフォルトの名無しさん:2011/04/08(金) 00:24:35.68
VBAは利用者(プログラマー)の数が他の言語より圧倒的に多くてレベルも様々だから
言語仕様を大幅に変えようとすると大混乱が起こるだろうな
483 :デフォルトの名無しさん:2011/04/08(金) 22:42:30.45
何故おしえたがりは考え方ではなく、コードを提示したがるのか
484 :デフォルトの名無しさん:2011/04/08(金) 22:56:57.43
日本語文章で説明すると、日本語理解できないバカの場合に再質問責めで大変なことになるが
コード出しておけば、コード読めないバカでもとりあえずコピペで動き、大人しく帰ってくれるから
485 :デフォルトの名無しさん:2011/04/08(金) 23:00:24.84
>>483
楽だからだろ
考え方はお前が教えてやれよ
486 :デフォルトの名無しさん:2011/04/09(土) 00:37:04.26
Excel VBAから、Accessを呼び出したあとお、クローズ処理の書き方を教えてください。
Sub Main()
Dim Acc As Object 'New Access.Application
On Error GoTo Err
Set Acc = CreateObject("Access.Application")
'''何らかの処理
'既存mdbがオープンされていたらクローズ
If *****************Then '←★ここの条件が書けません。
Call Acc.CloseCurrentDatabase
End If
'Accessアプリケーションのクローズ
If TypeName(Acc) = "Application" Then
Call Acc.Quit
End If
'Accessオブジェクトの開放
If Not (Acc Is Nothing) Then
Set Acc = Noting
End If
Final:
Exit Sub
Err:
Debug.Print Err.Description: MagBox (Err.Description)
Resume Final
End Sub
487 :デフォルトの名無しさん:2011/04/09(土) 00:52:15.12
>>486
激しくスレ違い>>3★3,4
488 :デフォルトの名無しさん:2011/04/09(土) 00:59:53.95
アクセスオブジェクトをクリエイトして操作しているんだよ!
489 :デフォルトの名無しさん:2011/04/09(土) 01:26:44.86
まずは>>3★3,4読め
エクセルオブジェクトを操作するのがExcelVBAであって
アクセスのそれはスレ違い
逆にアクセスのVBAでエクセルオブジェクトを読んで操作する話なら
ここで質問して良し
490 :デフォルトの名無しさん:2011/04/09(土) 02:44:50.12
outlookもダメなのかい?
491 :デフォルトの名無しさん:2011/04/09(土) 03:49:17.00
うん
492 :デフォルトの名無しさん:2011/04/09(土) 10:46:41.61
>>483
お前は俺か?w
俺も常々そう思ってるが、この程度ならコードだけでもしょうがねーなぁ。
IsNumericよりVarType使ったほうがいいと思うが。
493 :デフォルトの名無しさん:2011/04/09(土) 11:13:40.96
VarTypeは数値に見える文字列で素人がはまる
右寄せにしてたら区別が付かない
494 :デフォルトの名無しさん:2011/04/09(土) 11:34:47.37
「数値だったら」なら普通はVarTypeだな。
IsNumericは「数値に変換できるものなら」だから"1D1"とかでもTrueになる。
495 :デフォルトの名無しさん:2011/04/09(土) 11:38:57.68
つーか教室での指導や部下の教育なら考え方や意味から教えるべきだが
ここはそれらとは違う、何の利害関係にもない赤の他人同士だってことを忘れてないか?
それ解っている上で>>483を『行動として示す(補足説明を行う)』なら単なるお人好しだが
口先でちょっかい出すだけだと、単なるバカってことにしかならないねw
496 :デフォルトの名無しさん:2011/04/09(土) 11:47:07.19
VarTypeにもIsNumericにも落とし穴がある
不特定多数が使うことを想定して作るなら、どちらを使うにしても落とし穴への例外処理が必要
自分だけが使うなら、想定さてる値と落とし穴が被らない方を使えば良し
どちらの場合でも、「普通は~」なんて一概に言う奴は考えが浅い
497 :デフォルトの名無しさん:2011/04/09(土) 11:58:33.65
適材適所、臨機応変ってことですね。
498 :デフォルトの名無しさん:2011/04/09(土) 12:00:11.86
素人は想定外のミスを色々やってくれちゃうからなあ
数字を全角で入れたり「1500*1.05」みたいに計算式を入れたり
スペースいっぱい入れて消したつもりになってたり(表示されない部分にデータが残ってる)
ゼロとオーを間違えたり3桁ごとのコンマを手打ちで入れたり
あらゆるケースを想定してたらコードをどんだけ書いても足りないぜ
499 :デフォルトの名無しさん:2011/04/09(土) 12:01:42.76
481=483=484本人じゃねーの?
わかってて書いてるっぽいし。
俺は説明するのに1行ごとにコメント書くやつ見ると頭どつきたくなるわ。
よいコードはコメントは最小限でもわかる。
500 :デフォルトの名無しさん:2011/04/09(土) 12:02:26.93
あらゆるケースを想定できない奴には商用ソフトなんて作れないぜ
501 :デフォルトの名無しさん:2011/04/09(土) 12:05:11.19
>>496の考えの深さを見てみたいもんだぜw
普段は抜けだらけのコード書いてるのは想像できる。
502 :デフォルトの名無しさん:2011/04/09(土) 12:08:26.18
>>500
それは言えてるが、こういう掲示板での回答じゃgdgd長いコードは書いちゃいかんよな。
503 :デフォルトの名無しさん:2011/04/09(土) 12:11:03.54
>>501 ←こういうのなんて言うんだっけ
ほら、なんたら犬の遠吠えとかなんとか
504 :デフォルトの名無しさん:2011/04/09(土) 12:14:24.30
うん、お前は誰にも負けんよ。
よっ!大統領w
505 :デフォルトの名無しさん:2011/04/09(土) 12:19:12.34
強がっちゃって可愛いなぁ
506 :デフォルトの名無しさん:2011/04/09(土) 12:23:09.02
>>505
あんまり相手にするな。
507 :デフォルトの名無しさん:2011/04/09(土) 12:31:39.00
あー、一人4役は疲れる
508 :デフォルトの名無しさん:2011/04/09(土) 12:44:18.81
そういえば某所に「普通」に敏感な素人がいたなぁ。
509 :デフォルトの名無しさん:2011/04/09(土) 12:52:45.15
あー、一人507役は疲れる
>>1から>>507までは俺1人で書いたw
510 :デフォルトの名無しさん:2011/04/09(土) 13:48:32.52
>>498
そういうのはデータチェック用のモジュールを1個作っといて使い回せばいいんだよ
何かあったらどんどん追記してけばいい
怪しいデータや判定不能な物を発見したらメッセージ表示するだけの簡単なやつを
511 :デフォルトの名無しさん:2011/04/09(土) 16:19:41.68
>>486
ldb有る無しで判定
最終更新:2011年04月18日 17:40