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


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

Excel VBA 質問スレ Part15



1 名前:デフォルトの名無しさん mailto:sage [2010/04/15(木) 01:07:19 ]
過去スレ
01 pc11.2ch.net/test/read.cgi/tech/1054356121/
02 pc11.2ch.net/test/read.cgi/tech/1168308855/
03 pc11.2ch.net/test/read.cgi/tech/1180192018/
04 pc11.2ch.net/test/read.cgi/tech/1189814602/
05 pc11.2ch.net/test/read.cgi/tech/1197448064/
06 pc11.2ch.net/test/read.cgi/tech/1205231499/
07 pc11.2ch.net/test/read.cgi/tech/1212587819/
08 pc11.2ch.net/test/read.cgi/tech/1219673793/
09 pc11.2ch.net/test/read.cgi/tech/1228372971/
10 pc12.2ch.net/test/read.cgi/tech/1235332603/
11 pc12.2ch.net/test/read.cgi/tech/1241885130/
12 pc12.2ch.net/test/read.cgi/tech/1247566074/
13 pc12.2ch.net/test/read.cgi/tech/1254281104/
14 pc12.2ch.net/test/read.cgi/tech/1262748898/ ←New!

関連スレ
Excel総合相談所 91
pc11.2ch.net/test/read.cgi/bsoft/1270542226/
Word総合相談所
pc11.2ch.net/test/read.cgi/bsoft/1263719084/
【質問不可】Excel総合相談所スレの雑談・議論スレ2
pc11.2ch.net/test/read.cgi/bsoft/1151651536/

357 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 23:13:14 ]
VBEの自動構文チェックって邪魔にしか思えないんだが、あれが便利で使ってるって人いる?
なんであんなものがあるのか不思議でしょうがない

358 名前:デフォルトの名無しさん mailto:sage [2010/05/18(火) 23:21:43 ]
どっかのペインにちょこっとアクティブに表示してくれるだけなら
便利な機能だけどダイアログで出るのが最高にウザいよなw

359 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 11:30:50 ]
>>354
普通の関数であれば参照渡しでいいはず。
値渡しが必要な場合にのみByValを使え。

360 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 11:35:47 ]
midとmid$のパフォーマンス気にする奴が、常にByVal使えとか笑えるわ

361 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 11:59:22 ]
まあそれもそうだね。
ただ、両バージョン混在してるなら$にしろって言うけどね。
参照渡しは本当に理解してないのが多い(特にCとかJavaとかの人)

362 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 12:00:52 ]
俺はかっこ悪いから$とかつけない
ByValもつけない

363 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 12:04:27 ]
変数宣言とか関数宣言だと使うよ。
いちいちAsなんて書いてられない。

364 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 12:11:17 ]
兎に角、統一してあればそれでいいや

365 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 12:23:27 ]
Typename(Mid("a",1,1))ってやるとStringって言われるんだけど、
実際はVariantだってのはどこ見ればわかるのか知りたい。



366 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 12:25:02 ]
第一引数を数値にしてみたけどやっぱり戻り値はStringだなあ
?Typename(Mid(123,1))
String

367 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 12:34:42 ]
そもそもTypeNameってVariant自体は表示しないでしょ

368 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 12:41:11 ]
>>364
なんかネット上に書いてありそうだけど、この本見てね。

Welcome to PowerVB
www.powervb.com/

369 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 13:11:03 ]
midとmid$の差なんて、100万回実行して0.1〜0.2秒位の差しかないよ。
その程度の差が利いてくるほどの計算量が必要な処理なら、そもそもVBAで
やるのがどうかという話もある。
まぁ一般プログラマは気にしなくて良いレベル。

370 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 13:20:40 ]
Mid$()って、MS BASICあたり位からの互換性のためが主な目的な気がする。
そんな細かいことより、文字列の連結方法を教えといた方がいいよね。

371 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 13:21:29 ]
連結方法ってカッコ付ける奴かな。

372 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 13:34:17 ]
>>368
何書いてあんの?
何を読ませたいの?
英語の勉強からするのも面倒だし
ネットに書いてあるとか言うの教えてよ

373 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 13:38:34 ]
>>371
多分このこと。
support.microsoft.com/kb/170964/ja

374 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 13:44:53 ]
別にvbCrLfとvbNewLineが混在してても気にならない。
けど、普通はどっちか一つしか使わんだろ。気分でvbCrLf/vbNewLineをごちゃまぜに使うような奴なら、プログラマ
としての素質を疑うよな。
プロジェクト全体として(というほどの大きなプロジェクトがVBAで構築されることがあるのかどうかは知らないが)、
統一されてなくてもかまわんよ。

例えば、CでいちいちNULを'\0'と書けとか言われたら切れるな。0で済むところは0で書くし。
0と'\0'が混在してても気にならないし、0とNULLが混在してても気にならない。

375 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 14:01:05 ]
上で出てた参照渡しについて
引数として用意した変数に格納してから渡したほうがいい?

call 処理(変数)



引数 = 変数
Call 処理(引数)
変数 = 引数



376 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 14:14:00 ]
>>375
こんなレベルの奴がいるなら、基本ByValで渡せというのもうなずけるな。

377 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 15:17:35 ]
なに一人で戦ってるんだ?
手を貸してやろうか?

378 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 16:07:10 ]
いつもながら、誰がどの発言なのか良くわからずぐだぐだ

379 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 16:25:10 ]
俺も>>314を支持する派に転向するわw

380 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 16:54:16 ]
constさえあれば良かった。

381 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 17:15:06 ]
じゃあ俺も314で

382 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 17:31:06 ]
>>375エスパーすると

Q:
hoge1,hoge2,・・・hogeN
それぞれ何度も演算したり入れ換えたりした後に関数を呼び出し
関数の中でも同じ変数名でスパゲッティ大盛り
引数のhogeA,hogeBを間違えて渡した時の修正コストが半端ない
だから呼び出し前にそれぞれ変数に値を入れておけば、その部分だけ修正すればいい
よって>>375ですか?

A1: つ 参照
A2: つ 規約
A3: そんな時は大抵他の場所でも入れ違いがあるんじゃね

383 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 17:52:06 ]
VBAコーディング規約は、こんな項目を含めるといいかも。

・Option Explicit必須
・デフォルトコントロール名(Text1など)の使用禁止
・伝統的なループ変数(i, j, k, ...)以外の一文字の変数名禁止
・ByVal/ByRefの省略禁止
・変数宣言/定義時は、Variantであっても必ず型名を付ける
・一行の「If ... Then」禁止
・Goto/Gosub禁止
・IIf禁止
・Call禁止(書くな)
・While ... Wend禁止(代わりにDo ... Loopを使え)
・$付き関数がある場合はそれを使え
・「=""」「<>""」の代わりにLenBを使え

384 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 18:50:33 ]
>>383
>Goto/Gosub禁止
On Error は除いてくれ

Call禁止 反対 サブプロシジャ呼び出しであることを明確にしたい

385 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 19:16:01 ]
>「=""」「<>""」の代わりにLenBを使え

俺普段=””使ってるわ。。。



386 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 19:59:17 ]
Integerを使わずLongを使え、というのを足しても良いかもな。

387 名前:デフォルトの名無しさん mailto:sage [2010/05/19(水) 21:25:40 ]
足してもいい。Integerが32bitだと思ってる厨房が多い。

388 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 13:53:14 ]
VBAでオセロでも作ってみようと思うんだけど、まったく分かりません
要点としては
@ゲーム開始ボタンを押した後、盤目をクリックしたら駒を描写する所
A一度置いたところにもう置けない判定
B駒を挟んでひっくり返す判定

どうかご教授ください

389 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 14:03:49 ]
>>388
1. Cells(2, 2).Value = "●"
2. If Len(Cells(2, 2).Value) > 0 Then Debug.Print "おけない" End If
3. Cells(2, 2).Value = "○"

つか、VBAじゃなくて他の言語でオセロ書けるのかよ?

390 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 21:16:48 ]
セルの数字を文字列に変換するマクロを考えていますが、この場合は元の数字に「’」をつける
形で良いのでしょうか?それともCstr を使用した方が適当なのでしょうか? 

391 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 22:00:31 ]
>>385
> >「=""」「<>""」の代わりにLenBを使え
>
> 俺普段=””使ってるわ。。。

おいらも。こっちのがタイプ量少ないし。
LenBだといいことあるの?

392 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 22:01:28 ]
>>390
セルの書式を文字列にすれば?

393 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 23:07:16 ]
>>391
Len 6命令 <=> LenB 5命令
ちょっとだけお得。
これよりもうちょっとコストが付くのが空文字列の比較。
速度で言えば、LenBが最速。

394 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 23:20:39 ]
>>390
Cells(2, 2).Value = Cells(2, 2).Value + ""

395 名前:デフォルトの名無しさん mailto:sage [2010/05/20(木) 23:42:12 ]
>>394
Cells(2, 2).Text & ""



396 名前:391 mailto:sage [2010/05/21(金) 00:02:51 ]
>>393
なるほど。性能か。シビアな場合もあるのかもね。
文字列連結も+使うんじゃなくて領域確保した上でMid()使えとか。

おいらはとりあえず性能関係シビアな用途に使っていないし「= ""」 で良いや。

397 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 00:26:48 ]
>>396
普段使うVBAなんて最速で書けた方が偉いからね。

398 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 00:46:22 ]
差が出るほど大規模なプログラムをVBAなんかで書くのか…

399 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 00:56:18 ]
If文書いてて条件の否定を付けるために
カーソル移動するのがめんどいから
Xor Trueなんて行末に書き足すのは俺だけでいい

400 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 01:06:42 ]
>>398
プログラムの規模じゃなくてデータの規模が問題なんだよ。

401 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 10:49:32 ]
>>383
DoUntill...Loopもだめ?

402 名前:デフォルトの名無しさん mailto:sage [2010/05/21(金) 14:42:26 ]
>>398
ループ内で、普通に文字列連結とかしてたら死ぬときがあるよ

403 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 11:52:57 ]
文字連結で何故死ぬの?

404 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 12:05:08 ]
>>402
これ書いたのだれ?もしかしておれ?

405 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 13:04:22 ]
多分このこと。
support.microsoft.com/kb/170964/ja

文字列連結は、需要が多い上に意外と時間がかかる。
何も考えずに作ると処理が死ぬほど遅くなる。



406 名前:デフォルトの名無しさん [2010/05/22(土) 16:35:49 ]
すいません、しょうもないことと承知で質問します。
xlnoneとは何をするのでしょうか?

407 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 17:17:17 ]
何もしない
ただの書式設定のプロパティ値

罫線描画を線無しにする時とかにプロパティをこれに設定する

408 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 21:00:46 ]
Listviewのリストは、縦には出せないのでしょうか?

409 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 21:13:44 ]
わかりづらかったですね。
Listviewは、縦スクロールにならないのでしょうか?

410 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 22:22:26 ]
変数の規約について
例えば出勤日リストの行を定義する変数名

Shukkin_row_count_
ってするより、

S_r_c_ ' Shukkin_row_count_
としたほうが、タイプミスや誤読が減って設計コスト下がるよね
むしろアンダーラインなくして頭文字を大文字で対応すべきかなあ

コードが長くなると変数の意味が散逸しかねないけど……

411 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 22:45:34 ]
そんな意味ならコメントは日本語でよくね?


412 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 22:55:31 ]
>>410
ワケ判らん変数名は付けるな
下手に短い名前なら意味が判る長い変数名の方がよぉ〜っぽど良いわ、ヴォケ



413 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 23:09:26 ]
問題は長い短いじゃなくて俺の命名センスにあるのかな
300行くらいの短いコード書いてみたが、変数名省略しなくても慣れたらすらすら書けた
コメント部分が200行くらいになったが


>>411
うん、コード書く時は日本語コメントは当然付ける
それに追加で、省略前の変数名明示ってことで

414 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 23:09:28 ]
他の項目にS_r_o_とかあったら死ねるな。
COBOLに侵され気味な俺だと、
SHUKKINrowCountかSHUKKIN_rowCountって感じかなあ。
ベタローマ字は全て大文字というのが俺的基本法則。

415 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 23:22:55 ]
俺ならVBAとC#では気にせず変数名や関数名に日本語使う
それで可読性や開発効率が上がるなら別にいいじゃんてスタンス



416 名前:デフォルトの名無しさん mailto:sage [2010/05/22(土) 23:30:18 ]
>>413
その省略前の変数名という考え方がわからん
s_r_c_'出金の行数
とかでいいと思ってしまう

417 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 00:26:49 ]
S_r_c_と言う記号で見るのと
Shukkinn_row_count_と言う意味で見るのを比べれば、
保守する時の可読性、認識レベルが異なる

だから逆に、接続を長くして意味を持たせるか、後で読み返した時の読みやすさを高めるために省略するかで迷ってる

日本語変数を使うってのが両方満たして楽なんだが……予期しないエラー引き起こすリスクもある

418 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 00:30:35 ]
母音省略でいいよ。
sknRowCnt


419 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 00:32:35 ]
あれ、回答レスになってないな?
省略前って言うのは、今Shukkinn_row_count_って変数があるけど、これをS_r_c_に省略した場合
ってことで使ったんだが、↑のように保守作業時に変数の意味を理解させるって側面もある

420 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 01:23:02 ]
ソースは他人が見てわかるように書くべし
そして「明日の自分は他人」

結論。好きにしろ

421 名前:sage [2010/05/23(日) 23:37:36 ]
すみませんが、どなたか教えていただきたいことがあるのです。
エクセル2003でADOを用いてアクセス2003のデータを抽出したいのですが、
抽出条件で「・・・を含む」としたいのですが、上手くいきません。具体的には

.Source = "SELECT * FROM テーブル1" & _
" WHERE 日時>=" & 開始日 & " AND 日時<=" & 終了日 & _
IIf(Range("B10") <> "", " AND 依頼者='" & Range("B10").Value & "'", "") & _
IIf(Range("B12") <> "", " AND 項目='" & Range("B12").Value & "'", "")

となっておりまして、テーブル1というアクセスのテーブルから、日時と依頼者と項目を完全一致で抽出することはできました。
この中から依頼者と項目に関して、「・・・を含む」条件にしたいのですがLIKE演算子等入れても上手くいきません。
どなたか教えていただけますでしょうか。

422 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 23:40:15 ]
>>421
SQLの問題というなら

SQL質疑応答スレ 9問目
pc11.2ch.net/test/read.cgi/db/1252492296/l50

若しくは同じデータベース板のAccessスレ(あるのかどうかは知らん)へGo !

423 名前:デフォルトの名無しさん mailto:sage [2010/05/23(日) 23:46:23 ]
>>421
上手くいかないとき、Sourceにどんな文字列が入っているのか出力して見てはいかが?

424 名前:421 mailto:sage [2010/05/23(日) 23:53:16 ]
>>422
問題はSQL何ですかね?だとすると手がつけられません。

>>423
デバックしたときに見た文字列は上手くいっていました。
ということは外部データの取り込みではLIKE演算子は無理なのでしょうか・・・


425 名前:デフォルトの名無しさん [2010/05/23(日) 23:54:57 ]
むり



426 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 00:00:03 ]
あれ?できなかったっけ?

427 名前:421 mailto:sage [2010/05/24(月) 00:05:18 ]
たとえば
IIf(Range("B10") <> "", " AND 依頼者='" & Range("B10").Value & "'", "") & _
のところを、
IIf(Range("B10") <> "", " AND 依頼者 Like'%" & Range("B10").Value & "%", "") & _
へ変えてみても上手くいきませんでした。
もしかして書き方が間違ってますか?

428 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 00:14:13 ]
>>424
デバッグで見ただけでは分かりにくいエラーは有るよ
俺はSQL文をテキストファイルに出力するプロシジャを作って
別途確認する様にしてる w



429 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 00:18:14 ]
>>427
Value & "%" の%の後ろのシングルクォートは?
あと一応Like演算子と文字列の間にスペースを入れようか。
それとセルの内容エスケープしてないのはわざとだよね?

430 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 00:25:43 ]
マンドクセだから確認してないけど
先に抜き出す条件を文字列でSQLにぶちこんでみ
それで出来ないなら構文かデータベースチェック

431 名前:421 mailto:sage [2010/05/24(月) 00:28:19 ]
できました!。皆さんありがとうございます。
特に>>427さん
大変ありがとうございます。
恥ずかしながら、後ろ側のシングルクォーテーションが必要とは知りませんでした。
また、Likeの後にスペースを入れていないことも原因のひとつでした。(本当に情けない。。)

>>427さん
後学のため教えていただけますか?
>それとセルの内容エスケープしてないのはわざとだよね?
具体的にはどういったことでしょうか?


432 名前:421 mailto:sage [2010/05/24(月) 00:30:22 ]
興奮してレスを間違えました。
429のレスは427ではなく>>429さんへのレスでした。

433 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 00:32:44 ]
>>431
エスケープっていうのはたとえば、Range("B10")の内容に
シングルクォートが含まれていたりしたらSQL文として
文法エラーになるよ、っていうだけの話。
Like '%'%' みたいになったらシングルクォートの閉じ位置が
変わるので文法エラーになる。

まあ、自分で使うツールってだけならあんまり気にしなくていいよ。

434 名前:421 mailto:sage [2010/05/24(月) 00:40:20 ]
>>433
なるほど・・・
たしかにそうですね。勉強になります。
今回は時間の都合上、運用面で対処したいと思いますが、
今後はそういったことを含めて構築していきたいと思います。
とにかくありがとうございました。

435 名前:デフォルトの名無しさん [2010/05/24(月) 08:17:43 ]
D-SUB9ピンのRS-232Cで接続するバーコードリーダーから文字列を入力する方法を教えてください
TELNETで認識するところまでは出来たのですがそこまでしか出来ませんでした



436 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 09:00:54 ]
だれかイミディエイトウィンドウを画面右側にぴったりフィットさせる方法を教えてくれ。
前はいろいろいじくってたらなんとかできたんだけど、今どうやっても上手くいかない。

437 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 09:22:38 ]
しばらくここ読んでなくて乗り遅れたが、空文字の代わりにvbNullStringって書いたやつ誰だよ。
どういう場面を想定したか知らんがrange("a1").value=vbnullstringなんてのは間違いだよなぁ。

438 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 09:25:46 ]
2ch もう終わってるね

439 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 09:30:59 ]
そんなことを言う人は破門です

440 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 09:48:26 ]
LenBがLenより速いとか書いたやつもしっかりString型の時と書かなきゃいかん。
Excelでよく使うVariant型では逆になるぜ。


441 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 09:53:23 ]
>>435
VBみたくAPI使えばいいんでね


442 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 10:05:25 ]
436
ぐっとしてきゅって右下にばっする

443 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 10:18:36 ]
>>440
くどくなるので必ずこうしろと言うわけではないが、Variant型の2次元配列の
各要素の型が何型か判定する場合が多いと思うが、判定して文字列だったら
String型の一時変数に格納して処理した方がベター。
そうすればLenBが確かに速い。
数値などの他の型でも一時変数に移した方がいいのは同じ。



444 名前:436 mailto:sage [2010/05/24(月) 10:26:51 ]
>>442
d
でけたぜ!
右下にってのがコツなんだな。


445 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 11:04:44 ]
正直、=""とかLenBとかにこだわってるのはほとんど無意味だぜ
そんなの、長い文字列を連結したり、RangeのCopyメソッドを使った瞬間に
無意味になる



446 名前:デフォルトの名無しさん [2010/05/24(月) 14:06:07 ]
Public Type A
ID As Integer
Name As String
End Type

Public Type B
ID As Integer
Name As String
ByRef A As String <-ここでエラーが出る
End Type

Sub main()
Dim TableA() As A
Dim TableB() As B
・・・・
End Sub

TableBでTableAのメンバーの一つを参照させたいのですが、上記のような記述だとエラーが出ます。

構造体のメンバーに参照(ポインタ)を使いたいのですが方法はないものでしょうか?


447 名前:436 mailto:sage [2010/05/24(月) 16:53:58 ]
>>447
文字列の連結に単純連結がいけないのはほとんどの人が知ってるだろ?
あとはいかにスマートにMidステートメント使うかが腕の見せ所。
まぁ今はバカでも使えるJoinがあるので楽になったけどな。

448 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 19:01:08 ]
単純な文字列連結にこだわりすぎるやつも馬鹿だな
文字列連結なんて大抵は短い文字列同士の連結にしか使わず
さらに回数もたいしたことないのが普通なんだから
その辺をわかってて使うなら普通の簡潔な記述の方が優れてる

449 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 20:19:31 ]
>>448
んなこたー当たり前。
回数の多い例が出てたんでね。
こんなのほとんどの言語で共通だと思うが、未だに知らない人もいるみたいなんでね。

450 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 20:34:22 ]
長さ0の文字列かどうかならLenとかLenBの方が""と比較するよりいいかも知らんが、セルが空白かどうかを調べるだけならIsEmptyが一番軽いだろうねぇ。
俺は大体""と比較するけどな。

451 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 22:12:41 ]
そういうチマチマした高速化の技術はどうでもいい
高速化で本当に困るのはそんなところじゃない
上で出てた文字列連結の知識や、valueを配列に一気に出し入れする技、
WorksheetFunctionを使う技などをまず覚えるべき


452 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 22:38:03 ]
>WorksheetFunctionを使う技

意識したことないけど、これどんなん?

453 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 23:43:02 ]
>>451
そんな低レベルな話してもしょうがねぇなぁ。
お前の文字列連結を手直ししてやるからここで書いてみ?
A1:A60000の値をカンマで連結するコードを書け。
ただし

454 名前:デフォルトの名無しさん mailto:sage [2010/05/24(月) 23:44:24 ]
おっと途中で送信したぜ。
ただしJoinはなしな。
これは猿でもできるから。

455 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 02:44:49 ]
高速化言うんならCとかでDLL作って呼び出したらいいんじゃね
VBAですることじゃない



456 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 06:08:39 ]
何で書こうと回数の多い連結を単純に連結しては駄目だわな。
以前VBAを馬鹿にした酔っ払いSQL厨がいたが、アルゴリズムも知らない馬鹿だったぜ。

457 名前:デフォルトの名無しさん mailto:sage [2010/05/25(火) 08:09:07 ]
>>453の素晴らしい回答にご期待ください。

俺は猿でもできるJoin使うけど。






[ 続きを読む ] / [ 携帯版 ]

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

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