Excel VBA 質問スレ Part32
レス数が1000を超えています。これ以上書き込みはできません。
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/
0002デフォルトの名無しさん
2013/10/07(月) 22:20:27.8202 http://pc11.2ch.net/test/read.cgi/tech/1168308855/
03 http://pc11.2ch.net/test/read.cgi/tech/1180192018/
04 http://pc11.2ch.net/test/read.cgi/tech/1189814602/
05 http://pc11.2ch.net/test/read.cgi/tech/1197448064/
06 http://pc11.2ch.net/test/read.cgi/tech/1205231499/
07 http://pc11.2ch.net/test/read.cgi/tech/1212587819/
08 http://pc11.2ch.net/test/read.cgi/tech/1219673793/
09 http://pc11.2ch.net/test/read.cgi/tech/1228372971/
10 http://pc12.2ch.net/test/read.cgi/tech/1235332603/
11 http://pc12.2ch.net/test/read.cgi/tech/1241885130/
12 http://pc12.2ch.net/test/read.cgi/tech/1247566074/
13 http://pc12.2ch.net/test/read.cgi/tech/1254281104/
14 http://pc12.2ch.net/test/read.cgi/tech/1262748898/
15 http://pc12.2ch.net/test/read.cgi/tech/1271261239/
16 http://hibari.2ch.net/test/read.cgi/tech/1280045912/
17 http://hibari.2ch.net/test/read.cgi/tech/1289182437/
18 http://hibari.2ch.net/test/read.cgi/tech/1298240666/
19 http://hibari.2ch.net/test/read.cgi/tech/1305754555/
20 http://hibari.2ch.net/test/read.cgi/tech/1312435844/
21 http://hibari.2ch.net/test/read.cgi/tech/1316931607/
22 http://toro.2ch.net/test/read.cgi/tech/1322400978/
23 http://toro.2ch.net/test/read.cgi/tech/1327763113/
24 http://toro.2ch.net/test/read.cgi/tech/1334305148/
25 http://toro.2ch.net/test/read.cgi/tech/1341722983/
26 http://toro.2ch.net/test/read.cgi/tech/1345363310/
27 http://toro.2ch.net/test/read.cgi/tech/1353842387/
28 http://toro.2ch.net/test/read.cgi/tech/1359607536/
29 http://toro.2ch.net/test/read.cgi/tech/1364689772/
30 http://toro.2ch.net/test/read.cgi/tech/1370088822/
0003デフォルトの名無しさん
2013/10/07(月) 22:21:12.68http://toro.2ch.net/test/read.cgi/tech/1381151717/
0004デフォルトの名無しさん
2013/10/07(月) 22:35:27.600005デフォルトの名無しさん
2013/10/08(火) 07:40:28.60経緯は過去ログを見てください。
「コードを書いてはいけません」
大事なことなので二回言いました。
0006デフォルトの名無しさん
2013/10/08(火) 07:59:12.14クレクレ君はお断りという意味。
クレクレ君に餌を与える行為もお断りっていう意味もあるね。
自分は本スレに干渉しておきながら、他人にはコード作成依頼スレを干渉するなと命令するのは虫が良すぎるだろ。
0007デフォルトの名無しさん
2013/10/08(火) 11:44:35.65いや、書くし。
お前には止められないよ。
0008デフォルトの名無しさん
2013/10/18(金) 19:20:53.390009デフォルトの名無しさん
2013/10/22(火) 12:16:24.020010デフォルトの名無しさん
2013/10/22(火) 13:19:18.33http://uni.2ch.net/test/read.cgi/newsplus/1382414731/
0011デフォルトの名無しさん
2013/10/26(土) 13:42:28.95まずは>>1どうぞ意見を述べてください。
0012デフォルトの名無しさん
2013/10/26(土) 15:53:02.34>>232
そんなに一文字変数を使いたいのなら仮引数も一文字に統一しろよw
統一感全くなしw
書いてて恥ずかしくないのかな。
ローカル変数と引数は異なるものだから同じにするのはどうかと思うなあ。
0013デフォルトの名無しさん
2013/10/26(土) 17:55:38.35これはもの凄くいい例が出て来たな。
>>240
「VAL関数は」の後に「1文字ずつ値を取得し」の文が挿入されていれば理解出来るだろうか。
これは1文字変数にも通じる所があって、本人は分かっていて相手も分かると思っていても
実は相手は理解に至らないということがままあるということだ。
ましてや1文字変数など、その変数の意味を一見で理解するのはもっと困難だろう。
こじつけだな。ちょっと黙っててくれないかな。
0014デフォルトの名無しさん
2013/10/26(土) 18:51:43.681文字でも十分な事があるのは今まで散々論議されてる
ソース全体での使われ方を見ないで単に変数の長さだけを問題にするやつは相手にする価値はない
0015デフォルトの名無しさん
2013/10/26(土) 18:52:49.900016デフォルトの名無しさん
2013/10/26(土) 18:58:12.17俺もそれに完全に同意。
0017デフォルトの名無しさん
2013/10/26(土) 19:13:35.80あると分かった時点で議論の余地はない。
むこうのスレの>>196はいいものを見つけてくれたもんだ。
196 :デフォルトの名無しさん:2013/10/26(土) 03:59:07.74 そういや前なんかそんなことで荒れてたね。
何かこんなの見っけたよ。
http://msdn.microsoft.com/ja-jp/library/aa291593.aspx#vxconcodingtechniquesanchor3
これはVisualStudio.Netのものだけど
VB.Netの元になっているVB6も、VB6と同じ文法のVBAも
当てはまりそうなんで載せとくよ。
0018デフォルトの名無しさん
2013/10/26(土) 19:34:25.93>>252
公開範囲考えるなら可読性も考えろよ。
関数が短いからと言っても処理を見るまで分からないものは可読性は低い。
1文字変数をよしとするとそれ以外の変数と混在させそう。
こうなると、作り手が何考えてるのか分からなくなる。
知らないうちにバグを埋め込むことになってるって意識ないんんだろうなぁ。
1文字変数だけじゃなくコメントなしっていうのも大いに問題があるんだが。
1文字変数をなくしたところで可読性は変わらないよ。むしろ悪くなるんじゃないかな。
0019デフォルトの名無しさん
2013/10/26(土) 21:21:52.87どうして数式やロジックをいちいち解読すること前提で話を進めるんだよ
0020デフォルトの名無しさん
2013/10/26(土) 21:26:21.83この変数はこのループでしか使わないものですなんて
間抜けなコメント書かないだろ。コードの可読性とコメントは別物だよ。
0021デフォルトの名無しさん
2013/10/26(土) 21:36:04.30どのくらいそのコードが読みやすいか、って問題を話してるんだが
0022デフォルトの名無しさん
2013/10/26(土) 21:49:12.140023デフォルトの名無しさん
2013/10/26(土) 21:50:19.58常識以前の問題
0024デフォルトの名無しさん
2013/10/26(土) 22:12:12.01なるほど。
多数の初心者が来るこのスレで
可読性そっちのけで相手の技術力だよりと言うことか。
余り威張って言えることではないな。
変数のスコープが狭ければ1文字変数使っても可読性は落ちないよ。
0025デフォルトの名無しさん
2013/10/26(土) 22:15:43.72常識が欠落しすぎて失笑
0026デフォルトの名無しさん
2013/10/26(土) 22:21:28.82捨て変数ってなんだろ・・・
それでは実装を比較してみようか。
クイックソートを実装してみよう。
俺は1文字変数使って実装するから
>>25は1文字変数使わずにこれが理想だって言うのを書いてみて。
もちろんコメントを入れるのがいいと思ってるのならコメントも入れて。
0027デフォルトの名無しさん
2013/10/26(土) 22:29:28.51qsort [] = []
qsort (pivot:xs) = qsort [x | x <- xs, x < pivot] ++ [pivot] ++ qsort [x | x <- xs, x >= pivot]
0028デフォルトの名無しさん
2013/10/26(土) 22:32:35.52>>267
ネットに残してるわけだから1文字変数なんて使えないだろw
イミフw
0029デフォルトの名無しさん
2013/10/26(土) 22:44:43.22>>267
言いたいことは分からなくもない。
だが初心者などはその様な背景を読み取れる訳もなく、
そのままそれを当たり前だと思ってしまう。
俺には1文字変数を使うなという強制力は全く無いが、
それはクソコードだと罵られるのは仕方のないことだとも同時に思っている。
当たり前と思って何が悪いんだ。クソコードと罵るのは自分なのに
まるで責任が自分にないかのような言い方だなあ。
0030デフォルトの名無しさん
2013/10/26(土) 22:48:10.47>>267
短いコードなら最初からきちんと作っても、適当に作るのとそんなに時間は変わらない。
何が問題なのかさっぱりなんだが。
っていうか可読性を無視してる時点でアセンブラでも使ってろと言いたい。
だから1文字変数使っても可読性落ちないってば
0031デフォルトの名無しさん
2013/10/26(土) 22:59:16.31Sub Quick(a)
InQuick a, LBound(a), UBound(a)
End Sub
Sub InQuick(a, lo, up)
l = lo
g = up
p = a(lo)
Do While l <= g
Do While a(l) < p
l = l + 1
Loop
Do While a(g) > p
g = g - 1
Loop
If l > g Then
Exit Do
End If
Swap a, l, g
l = l + 1
g = g - 1
Loop
End Sub
Sub Swap(a, x, y)
t = a(x)
a(x) = a(y)
a(y) = t
End Sub
0032デフォルトの名無しさん
2013/10/26(土) 23:05:30.25逆にそのアルゴリズム知ってる奴からすれば変数名は関係なくコードの形だけでやってることは把握できるし
0033デフォルトの名無しさん
2013/10/26(土) 23:26:37.64>>286
今更何言ってんだ?w
逃げちゃった・・・
0034デフォルトの名無しさん
2013/10/26(土) 23:32:18.85>>289
>>189であれば、rの意味するもの、cの意味する適切な名前をつければいいだけだと思うが。
糞コード読む気にもならないから何を意味するものか知らんから書けないw
わからないんだ……
0035デフォルトの名無しさん
2013/10/27(日) 01:02:38.550036デフォルトの名無しさん
2013/10/27(日) 01:27:28.700037デフォルトの名無しさん
2013/10/27(日) 01:42:44.410038デフォルトの名無しさん
2013/10/27(日) 02:00:39.330039デフォルトの名無しさん
2013/10/27(日) 02:10:44.180040デフォルトの名無しさん
2013/10/27(日) 02:47:42.380041デフォルトの名無しさん
2013/10/27(日) 07:31:44.97ここは荒らしを隔離するためのスレってことでいんじゃないかな。
あっちのスレで荒らしにレスして汚したくないんだよね。
0042デフォルトの名無しさん
2013/10/27(日) 08:03:49.26テンプレを見ればわかるようにここが本スレです
0043デフォルトの名無しさん
2013/10/27(日) 10:05:07.77良かったじゃないか
多少なりとも賑わって
0044デフォルトの名無しさん
2013/10/29(火) 18:15:59.91それとも本当に口だけ?
0045デフォルトの名無しさん
2013/10/29(火) 20:09:38.23コードが書けるわけないじゃないですか
0046デフォルトの名無しさん
2013/10/29(火) 20:29:33.83口だけテンプレ君
でいいな
0047デフォルトの名無しさん
2013/10/29(火) 23:31:40.42人のコードにいちゃもん付けてコード書けない奴ってなんなの?
0048デフォルトの名無しさん
2013/10/30(水) 08:41:20.76的確な事やもっともな事を言える評論家ならまだしも
コードも書けない上に、下らないいちゃもんしか書けない
口だけ厨は単なる鼻つまみ者だし
もっと実のある書き込みをする人だったら
ここまで馬鹿にされまくることもないだろうに
0049デフォルトの名無しさん
2013/10/30(水) 18:03:45.31荒らしまくっていいスレはここですか?
0050デフォルトの名無しさん
2013/10/30(水) 19:11:59.82すでに荒地状態なのでいくらでもどうぞ
0051デフォルトの名無しさん
2013/10/30(水) 20:04:57.06・1文字変数の許容可否
・Nothingによる変数の後始末
・クレクレ君の許容可否
・口だけテンプレ君の存在価値
0052デフォルトの名無しさん
2013/10/31(木) 00:21:00.08特に3番目は丸投げ、4番目はコードすら書けないということはプログラマですらないということで
>>1★5に抵触する可能性があります。
以後クレクレ君、口だけテンプレ君はこのスレではスレ違いになると認識してください。
0053デフォルトの名無しさん
2013/11/01(金) 13:31:13.81格納した値をもとにδr、δg、δbを計算して出力するというプログラムなのですが
81600行くらいしたところで ”実行時エラー1004:アプリケーション定義またはオブジェクト定義のエラーです。”とでます。
何がだめなのでしょうか。
005453
2013/11/01(金) 14:10:22.01https://friendpaste.com/wQmRdo4I0YvpYqsEVhdCk
0055デフォルトの名無しさん
2013/11/01(金) 14:29:09.520056デフォルトの名無しさん
2013/11/01(金) 15:21:01.55いちいちwritesheetに値を書き込むのはなんで?
あと、直接のエラー解消策じゃ無いけど、この程度のデータ量なら配列作ってオンメモリで計算したら?
0057デフォルトの名無しさん
2013/11/01(金) 15:27:29.31あっちにも回答はあったようだけど、とりあえず。
行数は変数S、Ysで変更している。
81600行ということから、Yのループで何回実行されたかを算出する。
Tのループは最大3263なので
81600 / 3263 = 25.0076・・・
ということで25回程度実行されている。
後は問題となっている行にブレークポイントを貼り付けて
Yが25回付近の時点でステップ実行しながら
変数の値をチェックしていけば何かしら分かると思う。
0058デフォルトの名無しさん
2013/11/01(金) 18:15:52.37そうなんですよね、別に書き込まなくてもいいんですよね。。。
δr、δg,δ,bを計算すればいいだけですから 笑
そうですね配列でオンメモリ使った方がわかりやすいプログラムかけますね
でも3*4000*3000の値を拾いますけど大丈夫ですかね?
>>57
はい、もっと列を活用しようとおもいます。
0059デフォルトの名無しさん
2013/11/14(木) 21:23:57.500060デフォルトの名無しさん
2013/11/22(金) 10:00:38.91ある条件のときそのループをぬけるにはどんなコード書くんでしたっけ?
全体をぬけるExit Forではなく、その単一ループをぬけてiを次の値で繰り返したいんです。
0061デフォルトの名無しさん
2013/11/22(金) 10:43:51.83Excel VBA 質問スレ Part33
http://toro.2ch.net/test/read.cgi/tech/1382015080/
0062デフォルトの名無しさん
2013/11/22(金) 10:55:08.38Cなんかにある continue ってのは無いから
for next
if then
end if
end enxt
でやるしかないのでは?
0063デフォルトの名無しさん
2013/11/22(金) 11:08:37.690065デフォルトの名無しさん
2013/11/22(金) 11:38:40.76初心者にいいかげんなこと教えるなよ
VBAはFor〜Nextだぞ
0066デフォルトの名無しさん
2013/11/22(金) 11:55:12.50ちょっとしたタイプミスぐらいに目くじらを立てんなヴォケ
それくらい判るだろ、低能
0067デフォルトの名無しさん
2013/11/22(金) 11:56:27.76ま、判ってるからいいだろ w
0068デフォルトの名無しさん
2013/11/22(金) 13:01:17.73...
If ... Then GoTo LOOPEND
...
LOOPEND:
Next
0069デフォルトの名無しさん
2013/11/22(金) 13:21:05.22Excel VBA 質問スレ Part32
http://toro.2ch.net/test/read.cgi/tech/1381151717/
の次スレは、このスレじゃなくてこっちです。
Excel VBA 質問スレ Part33
http://toro.2ch.net/test/read.cgi/tech/1382015080/
0070デフォルトの名無しさん
2013/11/22(金) 13:22:55.41一人でやってろカス
0071デフォルトの名無しさん
2013/11/22(金) 13:39:06.67Part32時代に、ほとんどの人がこのスレ>>1を忌避し、もう一つのスレしか使ってません。
よって、一人ではありません。
なし崩し的にまた>>1を復活させるのを阻止するための誘導です。
本スレはこちら↓
Excel VBA 質問スレ Part33
http://toro.2ch.net/test/read.cgi/tech/1382015080/
0072デフォルトの名無しさん
2013/11/22(金) 13:51:14.72選択しテンプレ議論に終止符を打ち、さらに次スレまで用意されてたという怪我の功名。
0073デフォルトの名無しさん
2013/11/22(金) 13:56:28.020074デフォルトの名無しさん
2013/11/22(金) 14:18:09.060075デフォルトの名無しさん
2013/11/22(金) 15:04:52.960076デフォルトの名無しさん
2013/11/22(金) 16:08:16.730077デフォルトの名無しさん
2013/11/23(土) 00:02:08.630078デフォルトの名無しさん
2013/11/23(土) 08:30:35.61>>38
ネタの質問だな。ググれば数秒で解決。
0079デフォルトの名無しさん
2013/11/23(土) 08:32:39.90>>41
続きはこのスレでやりましょう。
Excel VBA 質問スレ Part32
http://toro.2ch.net/test/read.cgi/tech/1381151995/
0080デフォルトの名無しさん
2013/11/23(土) 08:39:10.39> 41 返信:デフォルトの名無しさん[sage] 投稿日:2013/11/23(土) 07:15:02.62
> >>40
> ネタなつもりは全くなくて、
> ググっても分からないので聞いているんですが・・・
> WMIのShadowCopyなどを使えば何となく出来る気がするんですが、
> 実際に名前やタイムスタンプを取得する方法を、
> コード上でどう記述すればいいのか未だに分かりません。
> 数秒で解決出来たなら教えて頂いても宜しいでしょうか。
VB6のサイトだけど、使えると思う。
http://www.red.oit-net.jp/tatsuya/vb/FileSystemObject.htm
ファイルシステムオブジェクトだからこれ以上のやり取りはしないけど。
0081デフォルトの名無しさん
2013/11/23(土) 08:40:42.40★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。
0082デフォルトの名無しさん
2013/11/23(土) 08:44:31.07よう、テンプレ厨。
0083デフォルトの名無しさん
2013/11/23(土) 08:46:33.85このスレはテンプレが絶対のテンプレスレです。
テンプレとわずかでもずれてたら即刻出て行ってもらいます。
0084デフォルトの名無しさん
2013/11/23(土) 08:48:42.62どうぞ別スレに行ってください。
0085デフォルトの名無しさん
2013/11/23(土) 08:52:15.78ようはルールを理解してないというか、理解しようとしてないんだよな。
★3、★4の意味が全く理解できていない。
前にも話が出ていたから説明は割愛するけど、
>>80のレス程度なら問題ないと思うが。
0086デフォルトの名無しさん
2013/11/23(土) 08:57:48.65>>80は★3★4のルールに明確に違反しています。
あなたに思うところがあるのはわかりますが、このスレはルールを守ってもらうのが絶対原則です。
ルールに従えないならどうぞ出て行って、よそのスレでやってください。
0087デフォルトの名無しさん
2013/11/23(土) 09:02:45.32重複スレを使うのは止めて頂けませんか?
0088デフォルトの名無しさん
2013/11/23(土) 09:22:40.63>>45
アンチテンプレ厨の自演ネタ質問なので降りるわ。
わからないだけのくせにwちなみにこいつはテンプレ厨、このスレを建てたやつですww
0089デフォルトの名無しさん
2013/11/23(土) 09:47:25.86>>45
何の為に必要なの?
49 :デフォルトの名無しさん [↓] :2013/11/23(土) 09:43:54.19
>>45
何の為に必要なの?
荒らしだしたw
0090デフォルトの名無しさん
2013/11/23(土) 09:50:16.17カッコつけて逃げようとしたけどバレて
ファビョって荒らす ←いまここ
>>1は毎回こんなことをやっています
0091デフォルトの名無しさん
2013/11/23(土) 09:53:25.48>>38
ネタの質問だな。ググれば数秒で解決。
質問を理解せずにFileSystemObjectをググって見つけて質問を解決した気になっただけのテンプレ厨w
0092デフォルトの名無しさん
2013/11/24(日) 13:39:45.22LANネットワークの共有フォルダに置いてある1つのExcelのファイルを数人で書き換えている場合に
他の人が開きっぱなしにしていて何時間たっても書き込みができない状態で明らかに忘れていると思われるような場合に
VBAのコマンド等で強制的に使用者を非アクセスの状態にすることはできないのでしょうか?
0093デフォルトの名無しさん
2013/11/24(日) 13:54:50.59VBAのコマンドでほかのPCの操作ができたらびっくりするわ
複数アクセス状態で実行したらどうなるか知らんけど
Workbook.ExclusiveAccessdsで共有解除できるらしいから試してみたら?
0094デフォルトの名無しさん
2013/11/24(日) 19:22:18.42共有するのはダメなん?
0095デフォルトの名無しさん
2013/11/24(日) 20:09:30.78すべて普通の数値に変換するためにはどうすればいいですか?
対象はアクティブになってるシートのすべてのセルでそうなってるものすべて。
0096デフォルトの名無しさん
2013/11/24(日) 21:33:36.05ざっくりやればこんな感じじゃね
Dim c As Range
For Each c In ActiveSheet.UsedRange
If IsNumeric(c.Value) And c.NumberFormat = "@" Then
c.ClearFormats
End If
Next
数値の判定とかいろいろ細かい考慮点はあるかもしれんがしらん
0097デフォルトの名無しさん
2013/11/24(日) 21:38:28.16全てのセルに対して値が数値であるかどうかみて数値だったら書式を変更すればできるんじゃないの?
0098デフォルトの名無しさん
2013/11/24(日) 21:45:22.51それじゃできないんですけど。
数値はたとえば
アポストロフィのあと数字を入力した'123や
書式を文字列にしたあとに123と入力したものとか
全然変換されない。
0099デフォルトの名無しさん
2013/11/24(日) 21:48:13.50そこまで言えるのなら、どうすればできるかわかってるだろうし解決できるでしょ。
0100デフォルトの名無しさん
2013/11/24(日) 22:21:26.790101デフォルトの名無しさん
2013/11/25(月) 08:35:41.82キーワードを入力、検索ボタンをクリック、までで数秒が過ぎてしまう
場合によってはページの読み込みを待ってる間に数秒が過ぎてしまう
結果がたくさん出る→選ぶ→読む→実行する→結果を確認する
ここまでできて初めて解決と言える
最低でも数分はかかる
0102デフォルトの名無しさん
2013/11/25(月) 08:56:08.330103デフォルトの名無しさん
2013/11/25(月) 09:03:11.160104デフォルトの名無しさん
2013/11/25(月) 11:28:49.740105デフォルトの名無しさん
2013/11/25(月) 11:35:06.080106デフォルトの名無しさん
2013/11/25(月) 12:49:38.62わかりました
0107デフォルトの名無しさん
2013/11/26(火) 11:11:49.44マクロブックからCSVファイルを開き、その1部をtokei_book(統計データ.xlsx 既にオープン済み))の最終行以降にコピーしようとしているんですが、
Range(Cells(3, 1), Cells(i - 1, 9)).Copy Destination:=Workbooks(tokei_book).Worksheets("sheet1").Cells(lastrow + 1, 1)
この部分でインデックスが有効範囲にありません
ってエラーになってしまっています。
どう直せばいいんでしょうか
tokei_bookには"統計データ"
iには6が
lastrowには504
という値がそれぞれ入っています
0108デフォルトの名無しさん
2013/11/26(火) 11:51:02.510109107
2013/11/26(火) 11:54:18.06んん、ありがとうございます
0110デフォルトの名無しさん
2013/11/29(金) 14:28:14.190111デフォルトの名無しさん
2013/11/29(金) 15:20:53.25しらべてみるわ
0112デフォルトの名無しさん
2013/11/29(金) 19:04:14.25クラス、メソッド、プロパティ、定数、列挙 ほかなんか有ったっけ
0113デフォルトの名無しさん
2013/11/29(金) 19:54:59.510114デフォルトの名無しさん
2013/11/29(金) 20:29:49.820115デフォルトの名無しさん
2013/11/29(金) 21:00:05.10>>114
おもろいやんけ
0116デフォルトの名無しさん
2013/11/29(金) 21:35:56.46VBEの入力支援に出てくるアイコン?のようなものってそれぞれ意味あるかしら
111 名前:デフォルトの名無しさん[] 投稿日:2013/11/29(金) 15:20:53.25
どうかしらね
しらべてみるわ
112 名前:デフォルトの名無しさん[sage] 投稿日:2013/11/29(金) 19:04:14.25
ヘルプやオブジェクトブラウザとかで使われてるアイコンと同じだろ
クラス、メソッド、プロパティ、定数、列挙 ほかなんか有ったっけ
113 自分:デフォルトの名無しさん[sage] 投稿日:2013/11/29(金) 19:54:59.51
アイコンは16年位の歴史がある
114 自分:デフォルトの名無しさん[sage] 投稿日:2013/11/29(金) 20:29:49.82
アイコン16歳?
115 自分返信:デフォルトの名無しさん[sage] 投稿日:2013/11/29(金) 21:00:05.10
>>113
>>114
おもろいやんけ
0117デフォルトの名無しさん
2013/11/30(土) 09:17:31.61http://toro.2ch.net/test/read.cgi/tech/1242136180/698
から誘導されてきました。
ExcelからJavaで作ったフォームを表示したいのですが、
java.swing.JFrameで作ったフォームを起動後、閉じるとExcelが最前面にきません。
Excel上のボタンを押す
->Javaの画面が最前面に起動
->Javaを終了するとExcelが最前面に戻ってくる
としたいのですが、なぜかExcelの上にその下にあったエクスプローラー等が表示されます。
ソースは下記です。実物が見れないので、一部間違ってる可能性はあります。
Sub Test_OnClick()
On Error Goto EEXIT
Application.Interactive = False
Set Shell = CreateObject("WScript.Shell")
Shell.Run "java -jar jframe.jar", True, True
EEXIT:
Application.Interactive = True
End Sub
Excel 2010, Windows7です。
java側の問題かもしれませんが、宜しくお願い致します。
0118デフォルトの名無しさん
2013/11/30(土) 10:53:47.24再現が面倒なので試さずに適当に答えるけど
プロセスが終了した時のウィンドウの順番をWindows任せにしないで、
Javaアプレット側のTerminateイベントでExcelのウィンドウをアクティブにしてから抜けるようにするか
VBAで自分自身を最前面にするか、どっちでも行けるんじゃないかと思う
AppActivate試してみ
0119デフォルトの名無しさん
2013/11/30(土) 12:33:56.02ありがとうございます。
試してみます。
0120デフォルトの名無しさん
2013/12/03(火) 15:30:44.33arr("りんご","色")としたら、"りんご"行の"色"列の値が取り出せるようにしたいです。
Enumがそれっぽいですが、"りんご"や"色"の位置はあらかじめ決まってなくて
Enum宣言時に値を入力できません。どうすればいいですか。
0121デフォルトの名無しさん
2013/12/03(火) 16:45:56.53find or filter
0123デフォルトの名無しさん
2013/12/03(火) 21:27:43.18必死だなw
0124デフォルトの名無しさん
2013/12/03(火) 22:47:21.250125デフォルトの名無しさん
2013/12/04(水) 05:41:42.670126デフォルトの名無しさん
2013/12/04(水) 06:12:37.46その2次元配列とやらのデータは元々シートに書かれてるの?
0127デフォルトの名無しさん
2013/12/04(水) 10:05:10.570128デフォルトの名無しさん
2013/12/04(水) 23:35:56.61ありがとう。
0129デフォルトの名無しさん
2013/12/07(土) 22:35:46.63BVAが記述されたていないの方のbook2のa1セルを参照するときに
ブックをアクティブにすればすぐ参照できますが
アクティブにしなくてもbook2のa1の数値を参照することはできるのでしょうか?
If Range(A1) < 0 Then 'A1をブック2のA1を参照させるには。。
Range(a2).Value = 0
End If
0130デフォルトの名無しさん
2013/12/07(土) 23:07:01.61yes
0131デフォルトの名無しさん
2013/12/07(土) 23:24:16.83オープンしておけばアクティブにしなくてもアクセスできる。
Workbooks("ブック名").Sheets("シート名").Range("A1").Value
Range(A1)というようにブック名、シート名を省略はできないけど。
ブック名、シート名を指定するのは面倒ということなら
With Workbooks("ブック名").Sheets("シート名")
.Range("A1").Value
End With
のようにWithステートメントを使えばいい。
0132デフォルトの名無しさん
2013/12/07(土) 23:29:02.792次元配列のデータ元がシートの場合
2次元配列の変数に格納する必要はなく、
arr("りんご","色")という指定できるプロシージャを作ればいい。
2次元配列のデータ元がシート以外の場合
2次元配列に格納されているデータをシートに書き出してから
arr("りんご","色")という指定できるプロシージャを作ればいい。
0133デフォルトの名無しさん
2013/12/07(土) 23:34:03.24> ★3、★4に明確に違反しています。スレ違いです。
ってかさ、明確に違反しているっていうのは一方的な見方でしかない。
作り方によっては★3、★4に全く違反しないように作れるわけだが。
0134デフォルトの名無しさん
2013/12/07(土) 23:38:31.11> 演算子と言えばXor(排他的論理和)ってのがあって
> True Xor True = False
> True Xor False = True
> False Xor True = True
> False Xor False =False
> みたいにどちらか片方のみがTrueの場合にTureを、
> そうじゃない場合はFalseを返すんだけど、
> これの使い道って何か有る?
状態が変わったことを検出したい場合とか。
0135デフォルトの名無しさん
2013/12/07(土) 23:55:38.78>>131
ありがとうございました参照数百箇所参照させたら激しく点滅して時々謎のerrorが出て困っていましたが解決できそうです。
0136デフォルトの名無しさん
2013/12/08(日) 09:38:27.18★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で出来ることは全てスレ違いだと思ってください。
0137デフォルトの名無しさん
2013/12/08(日) 09:40:52.10違反の可能性があるってだけで違反のわけだが。ルールとはそういうもの。
従えないなら出て行ってもらうほかないわけだが。
0138デフォルトの名無しさん
2013/12/08(日) 09:45:22.28保有の恐れがあるので大量虐殺したイラクの件もあるし。
有ろうが無かろうが「有るかもしれない」と言われた時点で犯罪が確定する。
警察に頼めば証拠はあとからいくらでも作れるし。
0139デフォルトの名無しさん
2013/12/08(日) 11:14:22.32「違反の可能性がある」で返すとかドンだけアスペなんだろうこの人
>>137「ルールとはそういうもの。(ドヤァ)」
言葉が通じないならこの世から出て行ってもらうほかないわけだが。
0140デフォルトの名無しさん
2013/12/08(日) 11:20:17.94DataTableがほしいな。
DBから値を取得するとき不便だわ
0141デフォルトの名無しさん
2013/12/08(日) 11:47:25.77そこでADOですよ
0142デフォルトの名無しさん
2013/12/08(日) 17:12:27.36Sheet1の入力データをコピペマクロで
Sheet2に貼付けまでできています。
これを仮にマクロAの登録とします。
Sheet2に貼付け、調整したデータをそのまま
同じSheet2内でコピペしたいのですが、
マクロBとして登録しようとすると、マクロAが消えて
マクロBだけが残るのですが、マクロA、Bそれぞれ
別のマクロとして残すにはどうしたら良いのでしょう?
新しいマクロで登録すれば良さそうなのですが、
上手く行きません。何か記述が悪いのでしょうか?
0143デフォルトの名無しさん
2013/12/08(日) 18:34:11.07マクロA、マクロBはそれぞれどこに登録してるのかな?
Sheet1とかSheet2とか直接シートに登録している?
それともThisWorkbookとか標準モジュールに登録している?
そもそもマクロが消えるという状況がよくわからない。
考えられるのはマクロが登録されているシートを削除してるのかなと
思うんだけど。
0144デフォルトの名無しさん
2013/12/08(日) 19:26:14.11シート2内でコピペしたいのは、セルのデータなのかマクロなのか
そのコピペは手でやりたいのかマクロでやりたいのか
0145デフォルトの名無しさん
2013/12/08(日) 19:37:09.92マクロA、BともにSheet2に置いた
Wordアートに登録してあります。
マクロが消えるというか、macroに番号が振られるのですが、
一つ登録して次を登録すると前の番号で登録したはずのマクロが消えて
今、登録したマクロだけが残るような症状です。
0146デフォルトの名無しさん
2013/12/08(日) 20:37:44.67バージョンは違うWinXP + Excel2002の環境で試してみたけど、
こういうことなのかな?
マクロA、マクロBは標準モジュールに実装してあって
WordアートにマクロA、マクロBの二つをマクロ登録したいんだけど
Wordアートのマクロ登録は一つのマクロしか登録できない。
これならマクロCを新たに作ってマクロCからマクロAとマクロB
をコールすればできるような気がするけど。
0147デフォルトの名無しさん
2013/12/08(日) 21:46:33.81ちょっと試してみます。ありがとうございました。
0148デフォルトの名無しさん
2013/12/09(月) 08:30:48.91横だが、おっさんエスパー検定何級?惚れた
0149デフォルトの名無しさん
2013/12/10(火) 00:35:03.48セルの計算結果を特定のセルに書きこむ処理をしてるんですが、
この時にVBAで書きこんだ内容をExcelにある元に戻すボタンで戻せるようにする方法ってありますか?
宜しくお願い致します。
0150デフォルトの名無しさん
2013/12/10(火) 01:15:07.25もとに戻すボタンと処理を追加する
マクロの処理中に段階的にコピーをすれば親切
ブックの終了時にコピーを破棄すること
0151デフォルトの名無しさん
2013/12/10(火) 07:17:22.38> もとに戻すボタンと処理を追加する
要件変えんなよ
0152デフォルトの名無しさん
2013/12/10(火) 07:42:40.74>要件変えんなよ
要件どおりの案を書けよ
0153デフォルトの名無しさん
2013/12/10(火) 07:43:41.310154デフォルトの名無しさん
2013/12/10(火) 14:06:31.70指摘されて逆ギレ、カッコ悪 (w
0155デフォルトの名無しさん
2013/12/10(火) 17:34:28.49質問をするスレの選択を間違えたね、
出来るのに回答できる人間はいない。
0156デフォルトの名無しさん
2013/12/10(火) 18:12:15.78149と155が別人なら単に155が変人なだけだが
自演なら155の他に149までが変人なんだが
あ、結局のところ変人は一人だけかワラ
0157デフォルトの名無しさん
2013/12/10(火) 18:14:50.24覚えておく処理をいれておきゃ良い
0158デフォルトの名無しさん
2013/12/10(火) 19:13:32.79作業フォルダを用意して、ボタンを押すごとにファイルを別名保存していくのが一番簡単
0159デフォルトの名無しさん
2013/12/10(火) 19:53:31.30ユーザー定義関数ならUndo可能だが書き込むセルを計算式にしとくのは無理か?
0160デフォルトの名無しさん
2013/12/10(火) 20:34:52.05難しそうです。
VBA内で他プログラムを参照して、そこからの回答をセルに書きこみたいのです。
セルに書きこんだ後は、ユーザーがそれを編集する想定です。
0161デフォルトの名無しさん
2013/12/10(火) 21:07:11.17ボタンを押したらってタイミングは難しいけどね
ボタン押したらフラグ立ててシート再計算
関数はフラグ立ってたら他プログラムから値を取得して返す
実際やると大変だろうがこんな感じ
0162デフォルトの名無しさん
2013/12/10(火) 22:51:56.50うーん、処理のルーチンとしては以下のような感じなのです。
ユーザーがセルに値を入力する。
ボタンを押したら現在のセルの状態を取得してサーバー側のプログラムに渡す。
サーバー側は現在のサーバーの状況で渡された文字列を編集してテキストに吐き出す。
それをFTPでとって来てテキストを開いて中身の文字列でセルを上書きする。
ユーザーがさらにそれを編集した上でDBに保存するボタンを押す。
VBAでDBに保存。
関数をどこにおけるかが問題なのですが、
関数ってユーザーが編集する部分を書き変えたりってできますか?
0163デフォルトの名無しさん
2013/12/10(火) 23:10:29.93上書きする直前にコピーしておけばいいじゃん。
それをExcel標準のundoボタンに似せたボタンをすぐ横に生成して利用すればいいんじゃね。
それか、適当な理想論だけど、Excel標準のundoボタンでイベント作れるのなら、コピーしたのを先に挟み込めば。
関数は記述したセルでしか動かないよ
0164デフォルトの名無しさん
2013/12/12(木) 10:51:13.33標準モジュールのコードからいっぱい貼り付けたいのですが
それにはどうすればいいですか?
例えばある変数xの数だけ、LabelとTextのペアを位置を計算してUserformに貼り付けるといったことをしたいです。
0165デフォルトの名無しさん
2013/12/12(木) 11:49:05.910166164
2013/12/12(木) 12:05:18.41最大100組使用する可能性があれば100個とりあえず配置しておいて
コードで使うやつだけを表示させ残りは非表示にしないといけないですか?
0167デフォルトの名無しさん
2013/12/12(木) 12:55:50.94サンプル
Private Sub UserForm_Click()
Dim Ctrl As Control
For i = 1 To 5
Set Ctrl = UserForm1.Controls.Add("Forms.TextBox.1", "テキストボックス_" & i)
Ctrl.Top = i * 20
Ctrl.Left = 20 + i * 8
Ctrl.Width = 100
Ctrl.Height = 18
Ctrl.Value = "テスト " & i
Next
End Sub
0169デフォルトの名無しさん
2013/12/13(金) 01:54:45.07workbooks.open file name:=book1
worksheets(sheet1).copy
end sub
といれるとコピーするだけじゃなくて新しいブック作ってそれに貼るのですが、どうしたらそれを抑えることが出来ますか?
0170デフォルトの名無しさん
2013/12/13(金) 02:25:35.60今発見できたのですが、どういうわけか
worksheets(sheet1).cells.copy
だとうまくいきました。なぜ、これだとうまくいくのでしょう?
0171デフォルトの名無しさん
2013/12/13(金) 03:47:05.07ヘルプぐらい読め
>Worksheets.Copy メソッド
>引数 Before と引数 After の両方を省略した場合は、新規ブックが自動的に作成され、シートはそのブック内にコピーされます。
0172デフォルトの名無しさん
2013/12/13(金) 04:37:01.18すみません。いくらググっても出て来ませんでしたがヘルプに載っていたとは。役に立たないと思っていました。ありがとうございます。
cellsというのが引数になるのですね。sheet.activate
sheet.copy
ならコピーされるかと思っていました。
0173デフォルトの名無しさん
2013/12/13(金) 11:01:43.70cellsは引数じゃない
そもそもCells(が返すRange)のCopyとWorksheetsのCopyは別の命令
0174デフォルトの名無しさん
2013/12/13(金) 17:33:05.46どう違うのか教えていただけないでしょうか。
引数でないのですか。わからなくなってきました。
実際にやってみると前者が普通にコピーをし、後者は新規ブックを作ってしまうというのはわかるのですが、どうしてかは調べても見つからなかったのです
0175デフォルトの名無しさん
2013/12/13(金) 17:39:04.38なんでVBAの入門書読まないの?
0176デフォルトの名無しさん
2013/12/13(金) 17:43:54.25インターネットでいろいろ検索して入門書も読んでいるのですがこれをこうすると地がうことになるというような説明はされていなくて。
とにかくそういうものだと理解して使うのは出来るのですが気になって。
0177デフォルトの名無しさん
2013/12/13(金) 18:23:45.100178デフォルトの名無しさん
2013/12/13(金) 18:51:13.050179デフォルトの名無しさん
2013/12/13(金) 19:19:53.04だからそもそも別の命令
前者のCopyがRangeのコピーする命令
後者のCopyがWorkSheetsのコピーする命令
違う命令なんだから違う結果になっても当たり前だろ
0180デフォルトの名無しさん
2013/12/13(金) 21:21:12.26君は「異なるオブジェクトの同名のメソッドは別のものだ」ということを
理解していない。(たぶん「どちらも同じ関数を呼ぶ」とでも思っているのだろう)
だから >>175 の突っ込みを入れられたのだ。
0181デフォルトの名無しさん
2013/12/13(金) 21:28:45.320182デフォルトの名無しさん
2013/12/13(金) 21:38:01.35>>180
>>181
ありがとうございました。
特に>>180のおっしゃる通りで、それについてはほとんど何も理解していませんでした。
0183デフォルトの名無しさん
2013/12/14(土) 00:36:28.14どこで質問すればいいのか分かりません。
Excelのアドイン 「XLL」 をC++で作成しようと思っているのですがセルに可変文字列を返すとき
普通はfreeとかdeleteとか使うのですが関数として戻り値を返す前にdeleteできないので
どうすればいいかと考えています。
0184デフォルトの名無しさん
2013/12/14(土) 00:47:16.86忍者のレベルを上げるとか・・・。
面倒なので上記の質問を取り下げます。
ご迷惑をおかけしました。
0185デフォルトの名無しさん
2013/12/14(土) 01:55:30.97オブジェクトやクラスの型が違うと、
同じ関数名でも、動作が全然違う
例えば、車オブジェクトの走ると、
猫オブジェクトの走るは、全然違う
入門書を買って、読んだほうが速い
総合的・段階的に学べるし
0186他のブックのセルからコピペするコード
2013/12/14(土) 14:42:31.13Sub test()
Dim book1 As Workbook
Dim str As String
Set book1 = Workbooks("b.xls")
str = book1.Worksheets("Sheet1").Range("a1:c1").Value
Range("a1:c1").Value = str
End Sub
2つのブックがありまして
ブックb.xls の a1:c1 に書かれている数値を
ブックa.xls の a1:c1 へコピペするコードを書いてますが、
上のコードですと Dim str As String の型がエラーを起こしますが
何という型にすればいいのでしょうか?(無提議で動いてますが)
また上記のコードをなるべく変数を使わずにもっと完結に記述することは可能でしょうか?
宜しくお願い致します。
0187186
2013/12/14(土) 15:14:38.18自己解決しました
Sub test()
Range("a1:c1").Value = Workbooks("b.xls").Worksheets("Sheet1").Range("a1:c1").Value
End Sub
こう書けば動きましたが
変数を割り当てる必要なんて微塵もないですね。w
参考にしたサイトが悪かったのか・・ なんで変数を使って解説してるのか謎です、、
0188デフォルトの名無しさん
2013/12/14(土) 16:28:59.64"変"数だからな
プログラム中で中身変えたり、使いまわしたりするのに都合がいいから使うんだよ
そう言った事が全くなければ変数なんていらんが、そう言うプログラムはあんまりない
0189デフォルトの名無しさん
2013/12/14(土) 18:08:55.53Range("a1:c1").Valueは配列。配列をString型に入れようとすればエラーだわな
セル範囲の値を変数に入れるには Dim str As Variant
コピーなら同じ範囲を指定して Sheets(X).Range("a1:c1").Value = str として
もよいが、それなら >> 187 で十分。
セル範囲をVariant変数に入れる本来の目的は str(1, 1) が a1 , str(1, 3) が
c1 の値 といった配列で扱えることにある。
そしてこれはExcelVBAでは非常に有効なテクニックでもある。
0190デフォルトの名無しさん
2013/12/14(土) 18:21:29.08それを本来の目的って言うのは違うだろ
0191デフォルトの名無しさん
2013/12/14(土) 18:43:33.71一番うまくまとまっている解説サイトはどこですか?
0192186
2013/12/14(土) 19:29:03.71>>188
ご丁寧な解説ありがとうございます。大変勉強になりました。
同じ処理を行や場所を変えて繰り返しやるときは変数を使うのが有効なようですね。
0193デフォルトの名無しさん
2013/12/14(土) 22:11:17.25Dim の変数提議の場所について教えてほしいのですが
IF 等条件によっては使わない場合がある変数は
Elseなどの結果のコードの直前に書いても問題ないでしょうか?
使わない変数もすべて先頭に並べておく必要があるのでしょうか?
0194デフォルトの名無しさん
2013/12/14(土) 22:26:29.75MSのガイドラインには、1行に1つずつとは書いてあるけど、宣言の位置については記述が見当たらない
こういうのは真面目に論ずると宗教戦争になるんで、その場ごとに先輩に合わせとけ
0195デフォルトの名無しさん
2013/12/14(土) 22:31:27.06この話題は荒れる
0196193
2013/12/14(土) 22:53:56.18>>194
>>195
初心者的の素人考えかもしれませんが
既に複雑化しているコードの中に追加でIFやCaseで命令をお試しで付け足す場合に
先頭に書いてあると消すときに少し手間がかかったり
しばらく触ってなかったら何の提議か忘れてしまったりする場合もあるかと思うのですが
直前に書いておけば一目瞭然で消す時も簡単ですし処理的にもIFの結果を先読みしていなければ
読み込まれないのでごくわずかでしょうが処理が軽減されるのではないかと思いました。
0197デフォルトの名無しさん
2013/12/14(土) 23:01:48.05提議じゃなくて定義な
双方にメリットとデメリットがあって、優劣が決まらないから荒れるんだよ
初心者なら議論に参加して、そういうのを再確認するのは無駄ではないと思うけど、
このスレでは何度も同じ話題がループしてるんで、常連はもう飽き飽きしてる
0198193
2013/12/14(土) 23:30:51.83>定義 失礼しました。。
なにやら振れてはいけない話題であったようですね
今書いているVBAは仕事ではなく趣味の週末データー解析ですので
動作に問題がないようでしたら自分のやりやすいように書く事にします。
ありがとうございました。
0199デフォルトの名無しさん
2013/12/14(土) 23:33:55.42先頭で定義する「必要」はないよ。(宣言必須なら)その変数を使うまでに宣言すればいい
>>194
そのガイドラインってのが何を指してるか知らんが
すくなくともヘルプのDimステートテメントには
>プロシージャ内で Dim ステートメントを使用する場合は、通常、Dim ステートメントをプロシージャの最初で記述します。
と書いてあるわけだが
>>196
お前一人が見るプログラムならどこで定義してても良いよ
他人も見るプログラムなら、ルール決めてそれを守れば良い
おそらく定義だけの位置では処理速度は変わらん
プロシジャ単位で実行時にコンパイルするからな
New付きで定義したらどうなるかはしらん
0200デフォルトの名無しさん
2013/12/14(土) 23:51:09.23http://10up.20ch.net/s/10mai2010845.png
0201デフォルトの名無しさん
2013/12/15(日) 01:56:07.75基本的に、なら、例外的に、で返せるが。
なんて邪推か。とりあえず上に書いておくのが慣例よ。
各自都合のいいルールを模索しそれに従ってください。程度だろうね。
自動で半角スペースの処理が行われてしまうみたいに、
宣言句は関数の上の方に移動させられてしまうわけでもないし。
0202デフォルトの名無しさん
2013/12/15(日) 01:56:59.76シーぷらぷらスレでエクセルネタとしてレスするのが無難加藤
0203デフォルトの名無しさん
2013/12/15(日) 01:57:31.300204デフォルトの名無しさん
2013/12/15(日) 02:11:46.970205デフォルトの名無しさん
2013/12/15(日) 02:43:02.74何が?
forみたいなシステムに最初から入ってるキーワードがForになるのを防ぐ方法はないよ
0206デフォルトの名無しさん
2013/12/15(日) 08:49:33.250207デフォルトの名無しさん
2013/12/15(日) 09:05:07.040208デフォルトの名無しさん
2013/12/15(日) 10:09:18.120209デフォルトの名無しさん
2013/12/15(日) 15:47:09.25VBEエディターで置換をするときに
改行を含まない1行のコードのみ置換できるようですが
複数行をまとめて置換する方法は無いのでしょうか?
0210デフォルトの名無しさん
2013/12/15(日) 16:15:10.27無理
0211デフォルトの名無しさん
2013/12/15(日) 17:13:17.83モジュールを30個ほど連結させたのですが
全モジュールの特定の箇所に数行コードを追加したいときに
複数行置換ができたら1発でできるのになあと思いましたが。
1モジュールだと他のエディターで置換して戻せばいいですが
モジュールが別れていて数が多いとひたすらコピペを正確に繰り返すしか手がないようで骨折れまくってます。
0212デフォルトの名無しさん
2013/12/15(日) 18:23:31.030213デフォルトの名無しさん
2013/12/15(日) 19:13:37.07っていうか、ある程度長いコードは最初から外部エディタ使うだろ
内蔵エディタは編集機能が貧弱すぎて話にならない
0214デフォルトの名無しさん
2013/12/15(日) 19:34:13.78>モジュールを30個ほど連結させたのですが
>1モジュールだと他のエディターで置換して戻せばいいですが
30モジュールを連結して1モジュールにしたのではなくて?
というか30回繰り返す程度ならたいした手間ではないような・・・
0215デフォルトの名無しさん
2013/12/15(日) 22:35:19.55三行目と四行目には空行があるよ。行間を嫁。
30Mod時なら1Mod丸々置換すればいいが、と言っている
0216デフォルトの名無しさん
2013/12/15(日) 22:37:54.88>モジュールが別れていて数が多いとひたすらコピペを正確に繰り返す
ここか。ここがbefore/afterをわからなくさせてるな。ごめん>>214。
0217デフォルトの名無しさん
2013/12/15(日) 22:40:25.310218デフォルトの名無しさん
2013/12/15(日) 22:46:29.720219デフォルトの名無しさん
2013/12/15(日) 22:48:22.390220デフォルトの名無しさん
2013/12/17(火) 22:45:22.58WorksheetFunction.Matchで照合の型を-1で、降順に並び替えれば
うまくいきますが、データは昇順の状態で
一年前の最古のデータ行を拾う方法ありますか?
昇順のままで照合の型を-1だと当然失敗します
(最新のデータを拾ってしまいます)
いろいろ調べたのですが、いい方法がみつかりませんでした
どなたかいい方法ありませんか?
0221デフォルトの名無しさん
2013/12/18(水) 07:31:12.64一年前の最古って何?
仮に今日が2013/1/1なら一年前の最古って何年何月何日なの?
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のソースのどこかに書いてるんでしょうか?
0322318
2014/01/04(土) 11:00:04.71でもやりたいんですよ。
0323デフォルトの名無しさん
2014/01/04(土) 11:26:36.290324デフォルトの名無しさん
2014/01/04(土) 11:32:17.50DB ? サーバ ? クライアント
こういうふうになっていて
HTMLはサーバとクライアント間のやりとりに使われるものだから
DBのアドレスはHTMLのソースに書かれてないはずよ。
DBに接続するときふつうはDBのアドレスとユーザIDとパスワードが必要。
システム管理者からそれを教えてもらえないのであれば、
システム管理者と一緒にお酒飲みにいって酔わせて聞き出したり、
ノーパンしゃぶしゃぶに接待して聞き出すしか手はないと思うよ。
ノーパンしゃぶしゃぶがおすすめかな。しゃぶしゃぶできるし。
0325318
2014/01/04(土) 11:55:05.29なにが危険ですか?
データを更新しないかぎり大丈夫じゃんと思いますが。
>>324
IDパスワードはそのサイトのログインと同じもので良さそうな気がしてますが。
DBのアドレスかホスト名がHTMLに書かれてなければどこに書かれているの?
黒画面からnetstatみたいなコマンドはダメですか?
しゃぶしゃぶのことは分からんがポン酢だれじゃなきゃイヤだ。ゴマだれは不味い。
0326デフォルトの名無しさん
2014/01/04(土) 12:02:56.72数値らしきものが入っているセルについての質問です。
これはIsnumeric関数ではTrueを返すのはやめてほしいです。
これは文字列なんだから。
このような処理をする必要に駆られたとき
みんなはどうしてますか?
0327326
2014/01/04(土) 12:05:05.32こんな機能は即廃止してほしい。
この機能を切る方法はない?
プログラミングでもvariant型みたいな中途半端な道具は即刻廃止してほしい。
数値らしきものも+や*で計算したら数値扱い、&や文字列とくっつける演算をしたら文字列扱いという機能もうざすぎる。
この機能も切る方法はない?
0328デフォルトの名無しさん
2014/01/04(土) 12:07:02.81文字列と判断させる方法はない?
これもIsnumeric関数ではTrueと返しくさる。
0331デフォルトの名無しさん
2014/01/04(土) 12:23:36.78まともな管理者ならDBの接続IDとサイトのログインIDを同じにするとは思えない。
>>325にDBの情報を教えなかったのならまともな管理者。ゆえにDBのIDとログインのIDは違うもの。
DBの接続に必要な情報はDBにアクセスするサーバ側のプログラムのソースコードに書かれているか、
またはサーバ側のプログラムから参照されてるはずよ。netstatで見えるのはサーバの状態。
DB <-> サーバ <-> クライアント
という形になるんでクライアントがやりとりするのはサーバ。
サーバの向こう側にあるDBはクライアントから見えない。
0332デフォルトの名無しさん
2014/01/04(土) 12:42:08.74年末のバッチ処理が管理外のセッションのロックでこけて大混乱になってクビにされた!!!
おまえらのせいだ!!! ぜったいにゆるさんぞ!!!!
0333デフォルトの名無しさん
2014/01/04(土) 15:04:35.092015年の1月まで、一年間何もしなかった怠慢の結果だろ、クビになって当然。
未来が予想できるなら、対策しろ。
0334デフォルトの名無しさん
2014/01/04(土) 15:10:01.15「こけて」ってなに?
こういうまぎらわしい言葉の使い方はやめなさい。
[正しい使い方] (マラソンで)コケちゃいました。
0335デフォルトの名無しさん
2014/01/04(土) 15:29:14.77別に紛らわしくはないよね。揚げ足どりやめようよ。
0336デフォルトの名無しさん
2014/01/04(土) 15:53:45.27これが正しい用法だ。
http://www.youtube.com/watch?v=z8PbFRV287c
0337デフォルトの名無しさん
2014/01/04(土) 16:12:51.030338デフォルトの名無しさん
2014/01/04(土) 16:53:32.530339デフォルトの名無しさん
2014/01/04(土) 20:24:00.49次の関数を作ってくれ。
・引数は3つ。すべてInteger。仮にx, y, zとする。
・戻り値は配列形式で、整数xから整数yまでの範囲の中の重複しないz個の乱数。
例えばx=10, y=20, z=5なら、返り値は11, 12, 16, 18, 20みたいな感じ。
不可能なx, y, zの組み合わせ(例えばx=10, y=12, z=5)なら返り値なしでMsgBox "アホ"でいい。
さあ時間だ。答えを聞こうる
0340デフォルトの名無しさん
2014/01/04(土) 20:26:43.66アホ
学校の宿題は自分でやれ
0341339
2014/01/04(土) 20:29:53.75アホ。
宿題ではない。
このスレの住人のスキルをためしているんだ。
2分でレスがきたから2分で回答できたのかなと思ったら
アホとはなんだアホ。
0342デフォルトの名無しさん
2014/01/05(日) 01:33:49.04へい
friendpaste.com/ZYnwC5HKmO7uUdrIygMUr
0343デフォルトの名無しさん
2014/01/05(日) 03:37:54.01へい
>>1★1〜1★4
0344デフォルトの名無しさん
2014/01/05(日) 09:56:45.34仕様がアホ
0345デフォルトの名無しさん
2014/01/05(日) 12:20:51.84z個の乱数をx〜yの範囲で発生させ
それらが同一のものが1つもないかどうか調べて (←このアルゴリズムも簡単ではないが)
なければそれで終了、あればまた最初からやりなおし、
という方法はどう?
もっといい方法ある?
0346デフォルトの名無しさん
2014/01/05(日) 12:23:53.870347デフォルトの名無しさん
2014/01/05(日) 13:07:00.55Excelと何の関係がある質問なのかが俺にはわからん
0348デフォルトの名無しさん
2014/01/05(日) 13:16:30.450349デフォルトの名無しさん
2014/01/05(日) 20:43:08.46コードからFormのコントロールを貼り付けたときに
そのコントロールに対してのイベントプロシージャってどこに書けばいいのですか?
例えばコマンドボタンをx個(コードの時点では数は不特定)貼り付けたとき各ボタンを押したときの処理を書きたいとき。
0350デフォルトの名無しさん
2014/01/05(日) 23:16:12.60別に決まりはないんじゃないかな
0351349
2014/01/05(日) 23:23:09.77そのオブジェクト名もまだ決まってないのよ
0352デフォルトの名無しさん
2014/01/06(月) 00:31:50.250353デフォルトの名無しさん
2014/01/06(月) 09:21:30.74クラスモジュールに書けばいいんじゃね?
0354349
2014/01/06(月) 10:49:35.66具体的にはどうすればいいですか?
クラスというのは設計図と聞くけど
それをつかってコントロールを生成するには
どんな呪文をとなえればいいのでしょう?
0355349
2014/01/06(月) 10:50:52.64どんな書き方をすればいいですか?
単にコントロールボタンを置いてそれに1-2行の処理コードを書くだけのシンプルなものでいいのですが。
0356デフォルトの名無しさん
2014/01/06(月) 11:12:25.62同じシートを10枚くらいとなりにコピーしてるだけなのですが。
0357デフォルトの名無しさん
2014/01/06(月) 12:00:36.770358356
2014/01/06(月) 12:12:32.18Sub セシウムさん()
Dim i as Integer
For i=1 to 10
Sheets("ひみつのあっこちゃん.xls").Copy After:=Sheets(Sheets.Count)
Next i
End Sub
0359デフォルトの名無しさん
2014/01/06(月) 12:45:47.60そんなのはここで質問するよりググればいいよ
0360デフォルトの名無しさん
2014/01/06(月) 23:26:08.03ワークシート名がファイル名と一緒なん?
まぁほんとにそのコードで動いてるんなら、単にコピー元のシートが大きいだけじゃね。
どうしようもないなら描画抑制すれば?
0361デフォルトの名無しさん
2014/01/07(火) 02:22:41.82セルに外部参照とかあって再計算が遅いだけじゃないのか
それか単純に使ってるマシンが貧弱か
0362デフォルトの名無しさん
2014/01/07(火) 10:00:26.33インデックスが有効範囲にありませんとエラーになります。
メソッド名も間違ってないし、メソッドはPublicにしてるし、他に何の原因が考えられますか?
0363デフォルトの名無しさん
2014/01/07(火) 12:10:13.78シート名が間違ってる
ワークシートじゃなかった場合、コレクションを片っ端からチェック
0364デフォルトの名無しさん
2014/01/07(火) 12:59:21.42そういう時は現象が発生する最低限のコードで試すんだ
本当に呼んでるメソッドに問題がないなら、引数に問題があるんじゃね
0365デフォルトの名無しさん
2014/01/07(火) 13:22:03.22エラーメッセージは読まない主義?
0366デフォルトの名無しさん
2014/01/07(火) 14:32:56.47今までに見たエラーは忘れる主義?
覚えてたら「インデックスが有効範囲にありません」は正式なエラーメッセージだってわかるじゃん?
http://www.07ch.net/up2/src/lena10519.png
0367デフォルトの名無しさん
2014/01/07(火) 14:59:55.51重複しない整数の乱数をx〜yの範囲でz個出力するにはどうすればいいですか?
0368デフォルトの名無しさん
2014/01/07(火) 15:03:59.54Variantで
Dim a as Variant
Dim a() as Variant
に違うはありますか?
Dim b() as String
の場合、b(1)=・・・、b(2)=・・・と代入しようとするとエラーがでてエラいこっちゃとなります(いま話題の「インデックスが有効範囲にありません」のエラー)。
それなら動的配列の意味ないじゃん?と思いますが。
0369デフォルトの名無しさん
2014/01/07(火) 15:10:39.77これはどのVBAの本を読んでも載っていないんですよね。
他の言語では使われてるらしいけど(ちなみにわたしは他言語は全く知りません)。
0370デフォルトの名無しさん
2014/01/07(火) 16:07:00.18年末〜年始の授業が乱数、教師はここを含めて見てる
ここで教えてもらったの提出しても点数貰えないよ
2012年にも、ネットで得たのを、そのまま提出した生徒がいた
0371367
2014/01/07(火) 16:09:30.50そんなこと言わず早く教えてくれよ。
あしたがしめきりなんだよ!
先生はこんなところ見るような人じゃないんで大丈夫だよ。
0372デフォルトの名無しさん
2014/01/07(火) 16:29:51.49>>369
さすがにggrks
0373368
2014/01/07(火) 18:04:42.24そんなのイヤなこった、パンナコッタ。
0374デフォルトの名無しさん
2014/01/07(火) 18:11:17.83Dim ran() As Integer: Dim x As Integer: Dim y As Integer: Dim z As Integer
Dim n1 As Integer: Dim n2 As Integer: Dim m As Integer: Dim ck As Boolean
x = InputBox("x"): y = InputBox("y"): z = InputBox("z")
ReDim ran(y - x)
For n1 = 0 To z - 1
ck = False
m = Int(Rnd * (y - x + 1))
For n2 = m To y - x
If ran(n2) = 0 Then
ran(n2) = 1
ck = True
Exit For
End If
Next n2
If ck = False Then
For n2 = 0 To m - 1
If ran(n2) = 0 Then
ran(n2) = 1
ck = True
Exit For
End If
Next n2
End If
Next n1
Dim str As String
For n1 = 0 To y - x
If ran(n1) = 1 Then
str = str + CStr(n1 + x) + ","
End If
Next
MsgBox str
0375367
2014/01/07(火) 18:22:42.41ありがとう。
ちょっと動作確認してみます。
あとx〜yの範囲よりzの個数が大きいときに「アホ」と出ずにすべての範囲の数字が表示されるというバグがあるぞ。
0376デフォルトの名無しさん
2014/01/07(火) 18:47:58.46この手法での回答は自分で考えてないと、先公にチクッとく
0377デフォルトの名無しさん
2014/01/07(火) 19:00:29.61簡単なことは自分でやってくれ。
あと19行目のck = Trueは余分だった、消してくれ。
0378デフォルトの名無しさん
2014/01/07(火) 19:10:24.76出番だぞ
0379デフォルトの名無しさん
2014/01/07(火) 20:30:12.180380デフォルトの名無しさん
2014/01/07(火) 20:59:23.370381デフォルトの名無しさん
2014/01/07(火) 21:24:14.13泣き寝入りだろうな
0382デフォルトの名無しさん
2014/01/07(火) 22:20:52.87誰の何の先生なんだろう・・・かかりつけのお医者さんとか?おだいじにどうぞ
0383デフォルトの名無しさん
2014/01/08(水) 20:42:14.12標準モジュールの宣言部分の変数を扱いときは、Me.iTestValueみたいに"Me"は使えないのはなぜですか?
0384デフォルトの名無しさん
2014/01/08(水) 20:50:31.13そのMeは何を指してるのか考えてみれば?
とは言えVBAではインスタンスって概念が解りにくいからなぁ
標準モジュールはインスタンス作成されないからインスタンスをあらわすMeは使えません
0385デフォルトの名無しさん
2014/01/08(水) 21:03:54.67なるほど、さっぱりわかりませんがありがとうございます。
インスタンスならMeが使えるということですか。
0386デフォルトの名無しさん
2014/01/08(水) 21:05:24.61Public iTest as Integer
とし、貼り付けたボタン押せばiTest=iTest+1としてるんですが
標準モジュールで書くiTestは別人となってるようなんです。
これはどういうことでしょうか?
0387デフォルトの名無しさん
2014/01/08(水) 21:15:33.34フォームと標準モジュールでそれぞれiTestを宣言したのか?
そりゃ宣言が二つあるんだからiTestは二つ(以上)あるだろ
0388デフォルトの名無しさん
2014/01/08(水) 21:17:12.77>標準モジュールで書くiTestは別人となってるようなんです。
これはどういうことでしょうか?
つまり、もっと詳しく。標準でDIMとかした人?
あと、ここは学校じゃないので、、、
たぶん今の君の疑問の殆どはインターネットを探せばいくらでも出てくると思うよ
0389386
2014/01/08(水) 21:25:42.19いえ、フォームモジュールだけでiTestを宣言したんですよ
0390デフォルトの名無しさん
2014/01/08(水) 21:26:13.560391デフォルトの名無しさん
2014/01/08(水) 21:26:43.800392デフォルトの名無しさん
2014/01/08(水) 21:29:48.75Option Explicitつけてるか?
つけないで標準モジュールで使ったiTestは、標準モジュールで宣言が省略されてるとみなされてる
0393デフォルトの名無しさん
2014/01/08(水) 21:32:05.400394デフォルトの名無しさん
2014/01/08(水) 21:33:40.51標準モジュールで使えないとおかしくないか?
0395デフォルトの名無しさん
2014/01/08(水) 21:57:07.64違うところで宣言されてる変数を使いたければ、どこの変数かも指定しないとダメ
標準モジュールで宣言されてるなら標準モジュールの名前
クラスやユーザフォームで宣言されてる変数なら、そのインスタンスへの参照
を変数の前に指定して.でつなぐ
インスタンスを意識しなくて標準モジュールで使うなら、たとえば
UserForm1.iTest = 0
みたいな感じ
0396デフォルトの名無しさん
2014/01/08(水) 22:21:49.80そうだったのですか!
ご丁寧な解説ありがとうございます。
各モジュールの中ではいいけどそうでなければ[モジュル名]と.でつなげばいいんですね。
ところで「インスタンスを意識しなくて標準モジュールで使う」の意味がさっぱりわからないけど
なんかこの概念はすごく重要そうな気がするんですが
どういうことなのでしょうか?
VBAでは完全にはオブジェクト指向でないから標準モジュールはもともとインスタンス(??)という意味でしょうか?
0397デフォルトの名無しさん
2014/01/09(木) 00:51:11.25標準モジュールはもともとインスタンス作成したりしない
インスタンスなしで実行できる
クラスは、使うためには自分でインスタンスを作成してそのインスタンスを使う
ユーザフォームはクラスの一種なんで、使うにはホントは自分でインスタンス作成しないとダメなんだが
いろんなしがらみによって自分で作成なくてもインスタンス(とそれへの参照)が用意されている
それが>>395のUserForm1見たいにユーザフォーム名で使えるやつ
これは実はUserForm1というフォーム(の定義、型)じゃなくて、暗黙のうちに作成されたUserForm1のインスタンスへの参照
標準モジュールはもともとインスタンス じゃなくて フォームは勝手にインスタンスが作られてる
が正解
0398396
2014/01/09(木) 01:16:40.59なるほどぉ。
・・・というのはウソで、さっぱり分かりませんわ。
勉強して出直してきます。
0399デフォルトの名無しさん
2014/01/10(金) 19:26:18.39たぶんほとんどの人が知らないでしょう。
普通の関数(VBAじゃない)では、大文字と小文字は区別しないのに
VBAの比較では、大文字と小文字は区別するんですよ。
これ、それぞれで別の方法で比較するにはどうすればいいですか?
0400399
2014/01/10(金) 19:29:17.35VBAで大文字と小文字を区別しない方法って普通はどうしてますか?ということです。
例えば、
If a = a.Offset(0, 1) Then
a.Offset(0, 2) = "O"
Else
a.Offset(0, 2) = "X"
End If
とすると、"ABC"と"aBc"を比べたとき別モノと判断するんですよ。
0401399
2014/01/10(金) 19:31:27.34・関数で全部大文字にしてから比較
という方法だけど、もっと手軽な方法があるかと思って。
0402デフォルトの名無しさん
2014/01/10(金) 19:42:47.150403399
2014/01/10(金) 19:47:23.740404デフォルトの名無しさん
2014/01/10(金) 19:56:04.73VBEで適当なところにoptionと入力してカーソル合わせてF1キー押して調べて教えて
0405デフォルトの名無しさん
2014/01/10(金) 20:19:55.330406デフォルトの名無しさん
2014/01/10(金) 20:46:23.15> たぶんほとんどの人が知らないでしょう。
いや、使ってみればわかるんだから、普通知ってるって
> 普通の関数(VBAじゃない)では、大文字と小文字は区別しないのに
まず「ワークシート関数」という名称を覚えましょう
そして大小文字を区別しないのは、ワークシート関数の仕様ではなく、ワークシート上での比較演算の仕様ね
つまり「=("ABC"="abc")」が、Trueを返すかFalseを返すかという問題
> これ、それぞれで別の方法で比較するにはどうすればいいですか?
ワークシート上の数式で大小文字を区別するならEXACT関数
VBAで大小文字を区別しないならOption Compare TextやStrCompや正規表現のIgnoreCase
0407デフォルトの名無しさん
2014/01/10(金) 20:53:34.650408デフォルトの名無しさん
2014/01/10(金) 21:29:56.07とか、ネタにマジレスするフリしてみるテスト
0409407
2014/01/10(金) 21:43:59.760410デフォルトの名無しさん
2014/01/10(金) 21:49:15.86女性においては塗れ具合
これが正規表現です
勘違いしがちですが露出は関係ありません
0411デフォルトの名無しさん
2014/01/10(金) 21:53:33.60携帯で見てて、3段改行の下に書かれてることに気付いてないとか?
0412デフォルトの名無しさん
2014/01/10(金) 22:00:57.260413デフォルトの名無しさん
2014/01/10(金) 23:48:36.66・Sleep関数
・DoEvents
の違いはなんでしょう?
OSに制御を渡すことと関係あるそうですが
そもそもOSのしくみとは?
OSはいろんなプログラムを順番に高速で実行させることによって見かけのマルチタスクを実現しているんですよね?
0414デフォルトの名無しさん
2014/01/11(土) 00:01:47.750415デフォルトの名無しさん
2014/01/11(土) 00:14:16.330416デフォルトの名無しさん
2014/01/11(土) 00:34:54.62あなたは(1)教えるのが下手か(2)いじわるの人
こんど発言するときは名前欄に(1)か(2)のご記入をお願い。
質問を変えよう。
どういうときにSleepを使って、どういうときにDoEventsを使いますか?
0417デフォルトの名無しさん
2014/01/11(土) 00:36:30.340418デフォルトの名無しさん
2014/01/11(土) 01:25:05.910419デフォルトの名無しさん
2014/01/11(土) 02:30:45.99あいつなら回答しそうだけど最近来ないしね
0420デフォルトの名無しさん
2014/01/11(土) 04:00:34.13横からごめんね、最近低レベルな質問してる人だよね
名前欄に低能とか初級とか、程度がわかる名前を入れておいてくれよ
0421デフォルトの名無しさん
2014/01/11(土) 04:44:36.37Sleepは、自主的にCPUの実行権を放棄して、
他のプロセスに、CPUのタイムスライスを与える
DoEventsはイベントキューから、
イベントをとって処理する?
0422デフォルトの名無しさん
2014/01/11(土) 07:17:37.53いちおうマジレスしとくけど
Sleep使うとき
スレッドをしばらく停止しておきたいとき
DoEvents使うとき
溜まってるメッセージキューを処理したいとき
まあ出来れば二度と来ないでください
0423低脳
2014/01/11(土) 11:19:55.48そのスレッドとかメッセージキューとは、どういう概念ですか?
0424デフォルトの名無しさん
2014/01/11(土) 12:08:58.66スレッドはプロセス内部で実行単位をさらに分割したもの
VBAなら1プロセス1スレッド
1CPUが割り当てられ4コアなら25%の力を引き出せる
他言語で1プロセスnスレッドが可能なものもある
やはり1スレッドに1CPUの割り当てとなるが4スレッド使えば4コアを100%使い切れる
メッセージはWindowsのGUIの仕組み
キーボード、マウスクリックその他イベントのトリガーは全てGUI部品に対するメッセージで実現されている
めんどくさいやめた
0425デフォルトの名無しさん
2014/01/11(土) 12:50:23.25DoEventsはユーザーの入力待ちに使う。他のアプリと連携するときに使うこともある
ある意味、関数内で隠しのアプリケーションを一つ立ち上げるのに近いので
使い方よりも内部を理解して注意点を把握することが大事
キーワードはイベントループ、メッセージポンプ、メッセージループ(呼び方はいろいろ)
もっと簡単に言うと学ぶ気のない奴は去れ
0426デフォルトの名無しさん
2014/01/11(土) 12:58:28.43低能で厚顔無恥はスルーだろjk
0427デフォルトの名無しさん
2014/01/11(土) 13:14:53.49お前はググらなければわからないってだけじゃ・・・
0428デフォルトの名無しさん
2014/01/11(土) 15:15:33.46その別ブックを閉じるとその変数を参照できません。
これを防ぐにはどうすればいいのでしょうか?
0429デフォルトの名無しさん
2014/01/11(土) 15:39:13.08オブジェクトの場合はセルの場所が記憶されるだけなのでブックを閉じるとセルの中身は見えなくなる
オブジェクトじゃない変数にセルの中身(値)を記憶しておけばいい
0430デフォルトの名無しさん
2014/01/11(土) 20:10:43.64その方法とは?
0431デフォルトの名無しさん
2014/01/11(土) 20:12:55.39設計書見せて
0432デフォルトの名無しさん
2014/01/11(土) 20:43:43.23構造体やクラスのように複数の子要素をもつ型を返すようにするのが基本じゃね?
まぁ他にも配列や連想配列を返すとか、グローバル変数を介するとか
いくらでも方法はあるけどね
0433デフォルトの名無しさん
2014/01/11(土) 22:05:29.031〜10の縦並びの表で、調査結果が飛び飛びに得られ、
データが得られなかった番号のみを抽出してそれのみの
新たな表を作成するVBAプログラムを作りたいのですが、
表番号 調査項目
1 xx
2 xx
3 xx
4 xx
・
・
10 xx
2,3,5,7,10 の調査結果が得られ調査結果が得られた順に結果のみの新たな表が別のブックに作成される.
↓
最初の表から未調査の1,4,6,8,9のみの表を作成しそれを元に再調査と言った流れです。
仮に10としてありますが実際の表は1000以上あり手で消すのは現実的ではありません
除外する方法を色々考えましたがすぐ出来そうで簡単にはできないようで行き詰まりました。
宜しくお願い致します。
0434デフォルトの名無しさん
2014/01/11(土) 22:10:53.29調査結果が得られたかどうかはどうやって判断するんだ?
つか、VBA使わんでも、その条件でフィルタかければ良いだけな気はするがな
0435デフォルトの名無しさん
2014/01/11(土) 22:19:02.70複数の戻り値っていうのが同じ方(例えば二つの数値とかだったら、
数値型の配列を返すとか。
0436433
2014/01/11(土) 22:19:05.56結果が得られた順に別ブックへ結果を記載して保存される仕組みになっています。
(調査結果(別ブック))
表番号 調査項目 調査結果
2 xx false xx
3 xx true xx
7 xx true xx
5 xx true xx
10 xx false xx
何気にこの状態から表番号を1〜10に補って並べ替えるのも方法が思いつきません、、
逆に1〜10から上の数値を間引く方法もわからない感じです、、
0437ピラフ
2014/01/11(土) 22:25:15.62/ \
/ ─ ─\
/ (●) (●) \
| (__人__) |
\ ` ⌒´ ,/
/ ::::i \
/ / ::::|_/
\/ ::|
| ::::| キュム
i \ ::::/ キュム
\ |::/
|\_//
\_/
0438433
2014/01/11(土) 22:48:47.30>>435
素人なりに1つだけ思いついた方法は
結果値の表番号を一つ一つサーチして該当する行を1行削除するを繰り返し
削除後にソートして寄せると完成しますが
数百回処理を繰り返す必要がり力業っぽい
のでこのやり方は違うかなと思いました
0439デフォルトの名無しさん
2014/01/11(土) 23:13:09.99その程度の処理量を更に削る為に労力を使う方が、初心者らしい愚行だよ
力業でも0.2秒で終る処理を、0.1秒で終るようにするための模索に
何十分や何時間の時間を浪費するとか、バカバカしくてやってられん
0441デフォルトの名無しさん
2014/01/11(土) 23:34:47.28その時間で別の仕事したほうが効率いい
とはいえ、一定以上の効率をもったコードを常に書けるだけの能力を持っていたいとは思うね
そうすりゃパソコン借りる時間が減る=金まわりがよくなるからな
0442デフォルトの名無しさん
2014/01/11(土) 23:38:38.28なぜダメなのかよくわからんな
0443ピラフ
2014/01/11(土) 23:40:07.650444433
2014/01/12(日) 00:27:32.65データーが欠落した状態で結果のみが別のブックへ書き出されている状態でしてフィルタがかけられない状態かと思います。
(フィルタ機能を完全熟知してないので間違っているかもしれませんが)
自分の知識不足ですみません 激しく堂々巡りをしているようですので本日は一旦落ちます。。
0445デフォルトの名無しさん
2014/01/12(日) 00:51:33.87ランダムに存在する特定の数値をスマートに間引く方法 (2,3,5,7,10・・ こういう数を一括削除する)
うまい方法は無いでしょうか?
数時間考えましたが全く解決方法が見つからず吐きそうなのでもう寝ますw
0446デフォルトの名無しさん
2014/01/12(日) 01:07:43.46その数値が一定の法則に従っていない以上、順次検索して間引くしかないわけだが
間引く元シートは準備されてるのか?
だったらそこから結果のシート(ブック)参照して結果有るかないかチェックする列つくって
その列でフィルタすればVBAなんか使わなくてもいいぞ
まあVBAでやるなら>>438のやり方でいいんじゃね
0447デフォルトの名無しさん
2014/01/12(日) 01:31:20.39状況がよく分んないけど、
ADO使ってシートにそういうSQL
投げてやればいいんじゃないの?
0448デフォルトの名無しさん
2014/01/12(日) 03:18:51.28列(フィールド)の区切りは、スペースかタブ?
すべての行の最初の列(表番号)だけを抜き出して、
ファイルAに保存する
(Excelの画面でもできる)
ファイルAをsortコマンドで、
数字でソートして、ファイルBに保存する
(Excelの画面でもできる)
(ここで表番号の重複を考えて、念のために、
ファイルBをuniqueコマンドで、
連続した重複行を除いて、ファイルCへ出力する
ファイルB、Cの行数を比較する
行数が異なっていたらエラー?)
ループ変数をインクリメントさせながら、
ファイルBを1行ずつ読んで、数字を突き合わせる
ファイルBに存在しない数字を、
ファイルDへ出力する
0449448
2014/01/12(日) 03:20:52.50表番号順に並んでいない時の処理です
最初のファイルから、1行ずつ、
最初の列(表番号)を抜き出して、
連想配列のキーとして、
その値に、2列目から改行までを代入する
ファイルBを1行ずつ読んで、
その数字をキーとして、
連想配列の値を取り出して、文字列を連結する
このように処理は、細かく単機能に分けると、
バグを減らせます
sort + uniqueも、よくあるパターン
0450448
2014/01/12(日) 03:33:07.53Excelの画面で、
表番号でソートするだけで出来るわw
0451448
2014/01/12(日) 03:44:48.55まず幾つかのランダムな数字をソートして、
ファイルAへ出力する
(Excelの画面でもできる)
ループ変数をインクリメントさせながら、
ファイルAを1行ずつ読んで、数字を突き合わせる
ファイルAに存在しない数字を、
ファイルBへ出力する
0452448
2014/01/12(日) 05:49:03.84まず幾つかのランダムな数字をソートして、
行区切りで、ファイルAへ出力する
(Excelの画面でもできる)
Excelの画面の、自動ナンバーで、
1-1,000の千行を代入し、ファイルBとして保存する
diffで、両者の差分を取る
0453ピラフ
2014/01/13(月) 21:17:31.14えと、数列の差を求める方法と、要素を削除する方法があって
それぞれこんな感じ。
http://uploda.cc/img/img52d3d869b7f67.png
これらを組み合わせるとできるはずよ。
コードはこんな感じで
https://friendpaste.com/1ooShGbBWBLAPVIitWTlDD?rev=303435326666
0454デフォルトの名無しさん
2014/01/13(月) 21:24:07.27全大文字化とかの表面的なところを隠しても
0455ピラフ
2014/01/13(月) 21:45:43.48完全に間違ってた、こっちで
https://friendpaste.com/1ooShGbBWBLAPVIitWTlDD
>>454
そういうのあるよね。ピラフはCAPICOMのサンプルコードを参考にしてる。
インデントは空白3文字で変数名はアッパーキャメルケース。
変数の宣言は使う直前。
0456デフォルトの名無しさん
2014/01/13(月) 21:47:01.99with を使いまくったら個性的過ぎると怒られたことがある。
0457ピラフ
2014/01/13(月) 21:49:50.33ガハハ、ピラフガハハ。
Withブロックマスターを名乗ったら言いと思うよ。
0458デフォルトの名無しさん
2014/01/15(水) 12:12:50.31桃白白しらない?
0459デフォルトの名無しさん
2014/01/15(水) 13:02:26.08その問に知ってるって答えるくらいなら、初めからコテ変えなんてしない
とかマジレスしてみる
まあ>>458も、その辺を把握している上でのツッコミなんだろうけどw
0460デフォルトの名無しさん
2014/01/16(木) 02:24:37.890461デフォルトの名無しさん
2014/01/16(木) 02:34:02.86Withの使用を辞めることだ。
0462デフォルトの名無しさん
2014/01/16(木) 02:34:59.47ちょっと性格は変だけどスキルはあったし丁寧に回答してた人。
0463デフォルトの名無しさん
2014/01/16(木) 03:26:21.55なるほど。勉強になります。ありがとうございます。
0464デフォルトの名無しさん
2014/01/16(木) 09:11:14.50たんすの前で何を着て出てくるか悩んでるよ
0465デフォルトの名無しさん
2014/01/16(木) 09:47:10.65何人か居るけど、誰のこと言ってるの?
0466デフォルトの名無しさん
2014/01/16(木) 09:51:25.46Parentプロパティ
0467デフォルトの名無しさん
2014/01/16(木) 15:38:16.990468デフォルトの名無しさん
2014/01/18(土) 15:56:54.23あるフォルダにある画像ファイル(ファイル名は選択範囲のselectされたセルの中)をすべて縮小(たとえば70%)して上書き保存させるにはどうすればいいですか?
他のフリーソフトの助けを借りるのでもいいです。
0469デフォルトの名無しさん
2014/01/18(土) 16:30:55.58その処理の内、何処まで出来てて、どこが解らないの?
まさか、1から全部コード書いて差し出せとか言わないよね?
0470468
2014/01/18(土) 16:44:55.37画像縮小だけがわかりません。
下が自作コードです。
=====================================
Sub Unko()
Dim C As Range
Const PATH As String = "C:\Manko"
For Each C In Selection
SizeSmall (PATH & "\" & C.Value)
Next C
End Sub
Sub SizeSmall(F As String)
■■■ここが分からないのです■■■
End Sub
=====================================
0471デフォルトの名無しさん
2014/01/18(土) 17:02:29.21つ ImageMagick
WinAPI使う方法とか、ActiveX導入する方法とか、Imageコントロール使う方法とかいろいろあるけど
とりあえずImageMagickで目的は果たせるから、それ以上を望むなら勝手に勉強してね
0472デフォルトの名無しさん
2014/01/18(土) 17:03:29.95バカじゃねw
0473470
2014/01/18(土) 17:13:43.13ありがとうございます。
これですね。
http://ja.wikipedia.org/wiki/ImageMagick
素晴らしそうですね。
ところが質問です。
[Q1] WikiにVBAと書いてないけど大丈夫ですか?
[Q2] VBAのコードに書くにはどんな呪文を唱えればいいですか?
0474デフォルトの名無しさん
2014/01/18(土) 17:16:26.190475470
2014/01/18(土) 17:17:25.84神に誓いますか?
0476デフォルトの名無しさん
2014/01/18(土) 17:19:37.65コマンドラインで使うのに、VBAも糞も無いだろw
0477デフォルトの名無しさん
2014/01/18(土) 17:20:30.89何をですか?
0478デフォルトの名無しさん
2014/01/18(土) 17:20:33.50糞は便器の中にありますよ
0479デフォルトの名無しさん
2014/01/18(土) 17:21:40.19誰がコマンドで使うと言いましたか?
ImageMagickはVBAで使えない
~~~~~~~~~~~~~~~~~~~~~~~~~~
0480デフォルトの名無しさん
2014/01/18(土) 17:29:32.870481デフォルトの名無しさん
2014/01/18(土) 17:42:38.570482デフォルトの名無しさん
2014/01/18(土) 17:46:54.09世の中に出回ってるフリーソフトの何割くらいがこの「コマンドラインからの利用」に対応してますか?
「コマンドラインからの利用」ができればどうにかすればVBAでも使えるんだろ?使える気がする。だから可能性が広がる。
0483デフォルトの名無しさん
2014/01/18(土) 18:23:38.440484デフォルトの名無しさん
2014/01/18(土) 23:22:26.46コピーして別アプリに張り付けるとかならやったことあるけど
プロパティでサイズってないのかな?
0485デフォルトの名無しさん
2014/01/18(土) 23:23:46.330486デフォルトの名無しさん
2014/01/18(土) 23:25:41.070487デフォルトの名無しさん
2014/01/19(日) 00:19:07.250488デフォルトの名無しさん
2014/01/19(日) 07:42:05.86Microsoft Shell Controls And Automation に参照チェックして出来る
というか以前自分のPCのフォルダに有る画像一覧のサイズを貼り付けるのを作ったことはあるけどね
0489デフォルトの名無しさん
2014/01/19(日) 08:26:53.48画像のサイズは基本的にヘッダに格納されてるから、バイナリ読めば解るし
StdPictureオブジェクトに格納すれば、Twips単位での取得は簡単にできるよ
でも、ファイル名とかは、ファイル名を書き換えるだけで意味があるけど
画像サイズは、ヘッダのサイズを書き換えても、画像データを変換しなければ
画像の実サイズとヘッダ上に記されたサイズ情報が不整合を起こすだけなので
サイズプロパティがあれば、サイズ変更が出来るってものじゃない
重要なのは「情報」の書き換えではなく「実体」の変換だからね
塩の入った容器のラベルを「砂糖」に貼り替えても、中身の入れ替えをしなかったら
中身は塩のままなのと同じ
0490デフォルトの名無しさん
2014/01/19(日) 11:52:49.86Excelワークシートに貼り付けられた画像ファイルの縮小をしたいんじゃないかと思うんだが
0491デフォルトの名無しさん
2014/01/19(日) 23:10:35.11クラスモジュールを使うことはないの?
どの入門書でも標準モジュールしか扱ってない。
0492デフォルトの名無しさん
2014/01/19(日) 23:36:56.500493491
2014/01/19(日) 23:49:52.75そんな本ありますか?
0494デフォルトの名無しさん
2014/01/20(月) 00:16:34.660495491
2014/01/20(月) 01:10:09.85その書の名は?
0496デフォルトの名無しさん
2014/01/20(月) 01:18:10.65自分で検索もできないような人間にクラスが使えるとは思えないけど、ほれ
http://www.kinokuniya.co.jp/f/dsg-01-9784816336515
0497491
2014/01/20(月) 01:39:46.172003じゃないか。
売り切れじゃないか。
0498デフォルトの名無しさん
2014/01/20(月) 02:04:59.15国外追放レベルのバカだな
Excelのバージョンが変わってもクラスの使い方なんてほぼ同じだし、本屋はここ1軒だけじゃないし
世の中には図書館という便利な物がある
この程度のこといちいち教えなきゃわからんのか
おまえはプログラミングするな質問するなするな迷惑だ
0499491
2014/01/20(月) 02:23:26.65もともとおかしいんだよ、きみの顔は。
http://blog-imgs-48.fc2.com/a/y/a/ayaushi/201303301847509b1.jpg
0500デフォルトの名無しさん
2014/01/20(月) 07:17:48.73自分の品位を貶めるだけの行為だって気付かないのかな?
まぁ>>498も口が悪いが
「確かにその通りだけど、国外追放レベルはヒドス・゚・(つД`)・゚・ 」
くらいの、余裕を持った返しが出来る大人になろうぜ
0501デフォルトの名無しさん
2014/01/20(月) 07:22:07.74まぁVBAでそんなに無理してまでクラスモジュールを使わなくてもコードは組めるってことだね。
本当にきちんとクラスについて勉強したいなら、JavaやC#を勉強した方がいい。
VB.Netですらデザインパターンを踏襲した様なきちんとした本は見たことが無い。
0502デフォルトの名無しさん
2014/01/20(月) 08:19:32.85継承とかコンストラクタに引数渡せないとかたいして便利じゃないから
あとクラス毎にモジュール作ることになるけどモジュールを階層で管理する機能とかないから面倒だし
0503デフォルトの名無しさん
2014/01/20(月) 08:43:55.01そりゃ昨今のメジャーな言語と比べて、相対的に便利かと言ったら便利じゃないけど
どの言語を使うかって話ではなく、VBAを使う上でクラスを活用するかどうかって話では
他言語と比べて便利かどうかという相対的な話ではなく、絶対的に便利かどうかであって
その観点で見れば、スキルさえあれば十分便利に活用できる
いろいろ不足はあってもどかしい部分も多いけど、使わないよりは使った方が遙かに便利という意味でね
0504デフォルトの名無しさん
2014/01/20(月) 10:46:52.40その例えで行くなら、VBAを使う上でクラス有りとクラス無しを比較して相対的にどうか、って考えなきゃ
0505デフォルトの名無しさん
2014/01/20(月) 11:54:18.370506デフォルトの名無しさん
2014/01/20(月) 14:18:53.69インターフェイス継承はできるし、どうしても引数ありでオブジェクトを作りたいならFactoryメソッドを作ればいい。
> あとクラス毎にモジュール作ることになるけどモジュールを階層で管理する機能とかないから面倒だし
機能毎にアドインにまとめればいいんじゃないかな。
0507デフォルトの名無しさん
2014/01/20(月) 14:37:20.31http://www.objectclub.jp/community/memorial/homepage3.nifty.com/masarl/article/dp-ocp-2.html
の音符の例。
Note.cls:
Public Sub Play()
End Sub
Half.cls:
Implements Note
Private Sub Note_Play()
Debug.Print "play half"
End Sub
Quater.cls:
Implements Note
Private Sub Note_Play()
Debug.Print "play quater"
End Sub
(続く)
0508デフォルトの名無しさん
2014/01/20(月) 14:38:35.12Staff.cls:
Private mNotes As New collection
Public Sub AddNote(ByRef aNote As Note)
mNotes.Add aNote
End Sub
Public Sub Play()
Dim aNote As Note
For Each aNote In mNotes
aNote.Play
Next
End Sub
Module1.bas:
Sub PlayStaff()
Dim myStaff As New Staff
myStaff.AddNote New Half
myStaff.AddNote New Quarter
myStaff.AddNote New Half
myStaff.Play
End Sub
という感じでVBAでも実現可能。
(Collectionが順番を保証しないというのは、今回は無視)
0509デフォルトの名無しさん
2014/01/20(月) 14:53:56.460510デフォルトの名無しさん
2014/01/20(月) 15:09:55.04基本的にはAddした順だけど、仕様としてそれは保証されてない
0511デフォルトの名無しさん
2014/01/20(月) 22:32:00.44指定位置勝手に変わると話にならんわけだが、ホントに保障されてないのか?
0512デフォルトの名無しさん
2014/01/20(月) 22:59:04.99仕様見ればわかることを他人に聞くな
0513デフォルトの名無しさん
2014/01/21(火) 00:04:41.49Object指向言語というより
Object指向に片足突っ込んだ構造化言語かな。
どうもMicroSoftはこんな片足突っ込んだような状態が好きなのか、
.Netフレームワークも関数型言語に片足突っ込んだObject指向言語っぽいよね。
「Object指向は考え方」って人もいるだろうけど、VBAの場合は上のレスに有ったような
面倒なストラテジーパターンも、.Netではシュチュエーション次第でもっと簡単なテンプレートパターンで書けるしね。
0514デフォルトの名無しさん
2014/01/21(火) 01:11:35.57>>502 は別に他の言語と比較してる訳じゃないんだが...
まあ、使いたいなら使えばいいんじゃね?
スキル誇示したいお年頃みたいだし (w
0515デフォルトの名無しさん
2014/01/21(火) 06:25:03.06インターフェース継承って何?
このコードの内、何が何を継承してるの?
見た感じ、インターフェースを実装して
処理を移譲することで似たような効果をもたらしているだけにしか見えないんだけど。
0516デフォルトの名無しさん
2014/01/21(火) 08:12:19.84こういうのを得意気に語ってた時期もあったなぁ... (遠い目)
0517デフォルトの名無しさん
2014/01/21(火) 09:30:04.82皆に否定されて悔しかったんだね...わかります (w
0518デフォルトの名無しさん
2014/01/21(火) 10:10:47.90こういうのを得意気に語ってた時期もあったなぁ... (遠い目)
0519デフォルトの名無しさん
2014/01/21(火) 10:25:24.40用語等については異論もあるでしょうが、重要なのは>>507のリンク先のC++のポリモーフィズム同等のことがVBAでも実現できることです。
この範囲で実現できるものであれば、VBAでもクラスが活躍できます。
それから、言わずもがなですが、クラスを使うことによるカプセル化の恩恵も受けます。
このことは、xUnitと親和性が高いです。
それと、WithEventsを使ったExcelオブジェクトとのEventを介したやり取りも便利です。
0520デフォルトの名無しさん
2014/01/21(火) 16:57:10.56INPUT: URL
OUTPUT: 「ショートカットファイル」 on デスクトップ
ファイル名はなんでもいいです。
0521デフォルトの名無しさん
2014/01/21(火) 16:58:07.68スレ違い
0522デフォルトの名無しさん
2014/01/21(火) 20:11:15.04中身は単なるテキストファイル、拡張子はurl、そんだけ
0523520
2014/01/21(火) 21:40:16.22でもメモ帳では開けないですよ。
0524デフォルトの名無しさん
2014/01/21(火) 21:40:19.010525デフォルトの名無しさん
2014/01/21(火) 21:58:29.65で?
よく分んないけど、これを継承と言うなら
これでフォームやボタンを継承して
何か作ってみてよ。
0526デフォルトの名無しさん
2014/01/21(火) 22:06:05.11普通に開ける
0527デフォルトの名無しさん
2014/01/21(火) 23:07:21.24まあ、がんばれ (w
0528523
2014/01/22(水) 00:26:27.94あ、ひらけた
でも、バイナリファイルになってるんですよ
0529デフォルトの名無しさん
2014/01/22(水) 02:37:51.49そいつは拡張子がlnkじゃないか?
IEのお気に入りの中のどれかを開いてみ
0530デフォルトの名無しさん
2014/01/22(水) 02:39:50.870531デフォルトの名無しさん
2014/01/22(水) 03:53:34.96負け惜しみはその辺にしとけ
0532デフォルトの名無しさん
2014/01/22(水) 07:37:22.14あー負け惜しみ、負け惜しみ。
負け惜しみでもなんでもいいから
早く>>525をやってみてくれよ。
場合によって継承は移譲で代用出来るというだけのことを
なんでわざわざ「インターフェース継承」なんて言っちゃうのか。
用語の違い云々って言ってるけど、デザインパターンどうのと言ってるところの
リンク貼ってるくらいだから
その観点からも継承と移譲はそれぞれどう言う時に使うかの違いくらいは分かってるんだろ?
ポリモーフィズムなんてのは100も承知で言ってるんだよ。
移譲はあくまで移譲であって、継承の代用に出来る場合があるだけで
用語の違いとかじゃなくて、そもそもが全くの別物だろ。
0533デフォルトの名無しさん
2014/01/22(水) 07:42:27.38まで読んだ
素直でよろしい
0534デフォルトの名無しさん
2014/01/22(水) 10:40:37.99> 早く>>525をやってみてくれよ。
VBAで「継承」ができるとは誰も言ってないと思います。
> なんでわざわざ「インターフェース継承」なんて言っちゃうのか。
かなり昔から、VBA(VB6)のimplementsを使ったコレのことを「インターフェース継承」と言う人が多いです。
語源は、Microsoftかもしれません。
なお、Microsoftはコレのことを委譲とは言わず委任と言っているようです。
> 5.1.3| 事前バインディングによるポリモーフィックなプログラム
> Visual Basic 6の開発者は、さらにもう1つの別の方法で継承を実装することができます。それは、いわゆる
> 「インターフェイスの継承」と呼ばれる方法です。この魅力的な名前は、Implementsステートメントを使用する
> 非常に一般的な方法を表しています。この方法では、基本クラスからメソッドのシグネチャだけを「継承」し、
> その実装は継承しません。したがってこの場合にも、実際の処理を行うすべてのプログラムは、それぞれの
> 開発者の責任において記述しなければなりません。
http://msdn.microsoft.com/ja-jp/library/dd297718.aspx
0535デフォルトの名無しさん
2014/01/22(水) 13:42:42.47> 移譲はあくまで移譲であって、継承の代用に出来る場合があるだけで
> 用語の違いとかじゃなくて、そもそもが全くの別物だろ。
イジョウを正しく変換できない奴にあれこれ言われたくないが、同じか別物かなんて
ことはどうでもいいことで、それで何ができるのかが重要。
0536デフォルトの名無しさん
2014/01/22(水) 13:47:58.08なんにしても言葉の定義なんてTPOで変化するんだから水かけあったって無意味だろ
0537デフォルトの名無しさん
2014/01/22(水) 13:51:58.320538デフォルトの名無しさん
2014/01/22(水) 14:01:12.250539デフォルトの名無しさん
2014/01/22(水) 14:15:26.81他の言語のクラスを知って、
「VBAのクラスを見下す俺博識でカッケー」
をやりたいだけでしょ
だから毎度のことだが直ぐに崩されて泣きを見る
0540デフォルトの名無しさん
2014/01/22(水) 21:58:27.42どっちかって言うと VBA でもできるもんって言ってる奴が自爆してるとしか思えんが (w
まあ、C#A を実装すればこんな不毛な争いは起きないので、早めに頼むよ ⇒MS
0541デフォルトの名無しさん
2014/01/22(水) 22:21:24.540542デフォルトの名無しさん
2014/01/22(水) 23:13:00.82カッケー(ワラ
最高にアホっぽい表現だな(藁)
0543デフォルトの名無しさん
2014/01/23(木) 00:30:34.26月給手取り20万でちょうカッケーw
0544デフォルトの名無しさん
2014/01/23(木) 02:29:35.460545デフォルトの名無しさん
2014/01/23(木) 05:26:49.000546デフォルトの名無しさん
2014/01/23(木) 07:21:56.98ゴミ
0547デフォルトの名無しさん
2014/01/23(木) 07:46:04.62本当に糞だったら突っかかる必要すら無いもんなw
0548デフォルトの名無しさん
2014/01/23(木) 09:24:18.49Excel と Visual Studio の区別もつかんのか (w
0549デフォルトの名無しさん
2014/01/23(木) 11:09:02.52これをまず上方向に重力があるときみたいに入力セルを上に落とし (←テトリスの逆バージョンみたいに)
さらに左方向に重力があるときみたいに入力セルを左に落とすには
どういうコードにすればいいですか?
0550デフォルトの名無しさん
2014/01/23(木) 11:38:08.59「落とす」って途中経過も表示するの?
それとも最終結果だけ表示するの?
0551デフォルトの名無しさん
2014/01/23(木) 11:52:16.81普通にループで条件判断すればいいだけじゃね?
それが解らないとかなら、まだVBA使うのは君には早いから
勉強してでも達成したいか、勉強するくらいなら諦めるか、好きな方を選んでね
0552デフォルトの名無しさん
2014/01/23(木) 12:30:05.05縦横両方となると何がしたいのかわからなくて根本から間違ってる気がしてくる
0553デフォルトの名無しさん
2014/01/23(木) 15:57:23.33左へ移動してから下へでは、結果が違ってくる
下へ移動してから、左へ移動したいの?
サメガメに似ているような
0554デフォルトの名無しさん
2014/01/23(木) 16:01:46.440555デフォルトの名無しさん
2014/01/23(木) 16:18:13.03> 下へ移動してから
もうここから違うし (w
0556デフォルトの名無しさん
2014/01/23(木) 18:13:05.910557デフォルトの名無しさん
2014/01/23(木) 18:14:28.47> まあ、C#A を実装すればこんな不毛な争いは起きないので、早めに頼むよ ⇒MS
こういうの使えば?
ttp://outofmem.tumblr.com/post/62233308198/excel-dna-1
0558デフォルトの名無しさん
2014/01/23(木) 20:13:31.821.まず入力セルの1つ上のセルに値が入っていたり入力セルが1番上だったら3へ。
2.End(xlUp)で自分より上のセルに値がある時のセル位置を求める。求めたセル位置に
値があればその1つ下のセルに、値がなければその位置に入力セルの値を入れて元の入力セルの値を消す。
3.入力セル(2を通っていたら2で値を入れたセル。以降入力セルと呼ぶ)の1つ左のセルに値が入っていたり入力セルが1番左だったら5へ。
4.End(xltoLeft)で自分より左のセルに値がある時のセル位置を求める。求めたセル位置に
値があればその1つ右のセルに、値がなければその位置に入力セルの値を入れて元の入力セルの値を消す。
5.処理を終了する。
多分こんな感じでループを使わないで出来る・・・ような気がする。
0559デフォルトの名無しさん
2014/01/23(木) 20:25:59.04いいねコレ、Linqも使えるのか。
ぱっと見た目、WorkSheetsもジェネリック扱いっぽいし。
ってことは多分、列や行もそんな扱いなんだろうね。
後は仕事場で使う許可が下りるかどうかだけど。
0560549
2014/01/23(木) 23:22:56.75ちょっと1分間空想してるだけで下のコードを思いつき、動作確認すると問題なく動き一瞬で解決した。
たった4行で実現できることだよ。
Sub Unko()
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlUp
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Select
Selection.Delete Shift:=xlToLeft
End Sub
0561デフォルトの名無しさん
2014/01/23(木) 23:59:48.40それで、だからどうしたの僕ちゃん
ほめて欲しいのかちゅら
すご〜イ、良く頑張ったわね、偉いわよ僕ちゃん
0562デフォルトの名無しさん
2014/01/24(金) 00:03:57.36次は30行でテトリス作ってみてよ。
0563デフォルトの名無しさん
2014/01/24(金) 01:24:52.940564デフォルトの名無しさん
2014/01/24(金) 01:26:27.06自治厨うぜーぞ
誰もお前なんか必要としてないんだから早く消えろ
0565デフォルトの名無しさん
2014/01/24(金) 01:55:32.380566デフォルトの名無しさん
2014/01/24(金) 07:27:32.48ドヤ顔のとこ悪いけど、それって上と左に飛ばす対象セルの
下や右に入ってる値の入っているセルも一緒にずれない?
そうだとしたらコードもダメだけど、動作確認もダメダメだね。
0567デフォルトの名無しさん
2014/01/24(金) 10:57:23.360568デフォルトの名無しさん
2014/01/24(金) 11:55:35.88ゴミコードw
0569デフォルトの名無しさん
2014/01/29(水) 23:46:00.47こんどはスマホで自作アプリをいっぱい作りたいです。
プログラミング言語は変わるんですよね?
どの入門書を読めばいいでしょうか?
VBAの知識があるのでプログラミング全般の基礎(変数の使い方、if文、for文、など)は省いて
android開発に特化した入門書を希望なのですが。
0570デフォルトの名無しさん
2014/01/29(水) 23:59:50.67スレチ
泥は基本Java
VBAの知識なんてほとんど役に立たん
0571デフォルトの名無しさん
2014/01/30(木) 00:09:17.85どういう意味?
これ?
http://www.geocities.co.jp/HeartLand/6622/potato.jpeg
0572デフォルトの名無しさん
2014/01/30(木) 00:15:08.28馬鹿かオメェは
580もjavaやれって言ってるだろ。
andoroidでどうしてVBAって発想がでてくるんだよ
0573デフォルトの名無しさん
2014/01/30(木) 00:19:24.55なるほどぉー。そうなんだー。
0574デフォルトの名無しさん
2014/01/30(木) 00:20:19.410575デフォルトの名無しさん
2014/01/30(木) 03:00:00.80クラスモジュール内から、標準モジュールのパブリックなプロシージャを呼ぶのは設計としてはアリですか?
0576デフォルトの名無しさん
2014/01/30(木) 07:30:04.35有り。
ただし、インスタンスを生成してる訳ではないので、
呼び出し先の内容はすべて一緒になることに注意。
0577デフォルトの名無しさん
2014/01/30(木) 10:03:18.86> クラスモジュールAの中で、クラスモジュールBをインスタンス化して利用したり
これはあり。
> クラスモジュール内から、標準モジュールのパブリックなプロシージャを呼ぶのは設計としてはアリですか?
これはお勧めできない。
詳しくは「結合度」でググれ。
0578デフォルトの名無しさん
2014/01/30(木) 10:45:28.97留意すべきことがあるなら理解できる
0579デフォルトの名無しさん
2014/01/30(木) 11:04:28.31危険がありすぎるので過剰とは思わない。
0580デフォルトの名無しさん
2014/01/30(木) 11:29:33.90コメントに書くとかUMLで管理するとかいくらでもフォローきくじゃん
標準なパブリックは使わないならその需要はどうやって埋めてんの?
0581デフォルトの名無しさん
2014/01/30(木) 11:35:19.10> コメントに書くとかUMLで管理するとかいくらでもフォローきくじゃん
そういう問題じゃなくて、結合度やカプセル化の問題。
> 標準なパブリックは使わないならその需要はどうやって埋めてんの?
使わないとは言ってないよ。クラス内部からは呼ぶべきではないと言ってるだけ。
0582デフォルトの名無しさん
2014/01/30(木) 12:36:50.72>クラス内部からは呼ぶべきではない
その代替案をご教示賜りたく
これで疑問は全て解消される気がする
0583デフォルトの名無しさん
2014/01/30(木) 12:39:05.54> その代替案をご教示賜りたく
代替案も何も、俺は基本呼ばないから代替案も糞もないんだが。
0584デフォルトの名無しさん
2014/01/30(木) 12:40:36.330585デフォルトの名無しさん
2014/01/30(木) 13:29:20.03じゃあやっぱり留意すべき程度じゃないのか
0586デフォルトの名無しさん
2014/01/30(木) 14:02:40.66好きにすればいいんじゃないかな。
0587デフォルトの名無しさん
2014/01/30(木) 14:14:19.760588デフォルトの名無しさん
2014/01/30(木) 15:52:36.82>>577は結合度の問題だっていってるだろ
そのUtilクラスなり標準モジュールなりに依存するようになるから
クラスの独立性が保てなくなるって話だろ
設計方法論の話であって実装の問題じゃないからな
他のモジュールに依存するクラスを良しとするなら良し
ただし一般的なクラス設計では、他のクラス(モジュール)への依存度は低い方が良いとされてる
0589デフォルトの名無しさん
2014/01/30(木) 16:03:53.460590デフォルトの名無しさん
2014/01/30(木) 16:22:09.70標準モジュール名をUtilに変更して使うのと、C++でstd namespaceにある奴を使うのと、そんなに違いはないと思うけど
0591デフォルトの名無しさん
2014/01/30(木) 17:36:51.01標準モジュール使うのにモジュール名で修飾することなんてほとんどないぞ
もしかして、標準モジュールってそこにメソッドなりがシステム側で用意されてると思ってるのか?
システム側で用意されているものに依存するのと
ユーザ側で用意するのものに依存するのと
そんなに違わないと思うならそれでいいんじゃないかね
0592デフォルトの名無しさん
2014/01/30(木) 18:23:41.57> 標準モジュールの名前なんてどうでもいいんだけど、何でそこにこだわってる?
> 標準モジュール使うのにモジュール名で修飾することなんてほとんどないぞ
グローバルな何かを使うときに、気をつけないといけないのが名前衝突。
標準モジュールでも名前を付けて呼ぶときにそれで修飾しておけば、別の標準モジュールに同名のメソッドが作成されても問題無い。
加えて、他の言語でよくある「namespace」的な役割も持たせられる。
> もしかして、標準モジュールってそこにメソッドなりがシステム側で用意されてると思ってるのか?
何を言ってるんだかわからない。
> システム側で用意されているものに依存するのと
> ユーザ側で用意するのものに依存するのと
> そんなに違わないと思うならそれでいいんじゃないかね
Utilクラスを作ってそこに自作メソッドを入れて使うのと、標準モジュールに名前を付けて使うのに、それほど差はないよねって話。
0593デフォルトの名無しさん
2014/01/30(木) 19:11:22.87>Utilクラスを作ってそこに自作メソッドを入れて使うのと、標準モジュールに名前を付けて使うのに、それほど差はないよねって話。
依存関係においてはクラスだろうが標準モジュールだろうが大差ない
Utilクラスに依存するのはOKなのにUtil標準モジュールに依存するのはダメとかいうのは話がおかしい
つまり標準モジュール呼び出しの代替案がUtilクラスにまとめるってのはおかしな話だが、それは俺の意見じゃないぞ
0594デフォルトの名無しさん
2014/01/30(木) 19:48:24.290595デフォルトの名無しさん
2014/01/30(木) 22:18:37.25それこそ標準モジュール向きだと思うけどなぁ。
>>582
代替え案としては、クラスモジュールで作っておいて
そのインスタンスを、使う側のクラスのプロパティに設定して内部で使う。かなぁ。
0596デフォルトの名無しさん
2014/01/31(金) 00:46:27.000597デフォルトの名無しさん
2014/01/31(金) 06:18:42.27て言うかそんなこと出来るのかね
0598デフォルトの名無しさん
2014/01/31(金) 07:20:58.00プロシジャを他のブックにエクスポートとか出来たりもしたんじゃなかったっけ
(俺には出来んけど)
0599デフォルトの名無しさん
2014/01/31(金) 12:26:54.30ファイル - オプション - セキュリティセンター - セキュリティ センターの設定 - マクロの設定 - VBA プロジェクト オブジェクト モデルへのアクセスを信頼する
0600デフォルトの名無しさん
2014/01/31(金) 12:43:20.84どこかに数字が入力されてる時はマクロ実行って感じで
OSは7、エクセルは2010使っています
よろしくお願いします
0601デフォルトの名無しさん
2014/01/31(金) 13:54:53.980602デフォルトの名無しさん
2014/01/31(金) 16:53:24.380603デフォルトの名無しさん
2014/01/31(金) 17:59:38.260604デフォルトの名無しさん
2014/01/31(金) 18:03:32.360605デフォルトの名無しさん
2014/01/31(金) 18:14:47.51条件をチェックしたいタイミングのイベントプロシージャを作る
プロシージャ内で対象範囲をチェックする
0606デフォルトの名無しさん
2014/01/31(金) 21:18:09.720をTextで見ようとすると、セル幅を縮めると#になってしまうし。
ここで難しいのは一点のみで、
0と空のセルの見分けだけ。
0607デフォルトの名無しさん
2014/01/31(金) 21:33:39.180でも空白でもエラーなので見分ける必要はない
ほらもうできた
0608デフォルトの名無しさん
2014/01/31(金) 21:34:36.440609デフォルトの名無しさん
2014/01/31(金) 21:54:53.65では、イベントプロなんちゃらってのは関係内という事でいいんでしょうか?
0610デフォルトの名無しさん
2014/01/31(金) 22:12:46.74for each cel in range("A1:D3")
flag = flag or (val(cel.value) <> 0)
next
if flag then
処理
end if
0611デフォルトの名無しさん
2014/01/31(金) 23:31:02.090612デフォルトの名無しさん
2014/02/01(土) 06:16:32.91いんにゃ、ボタンを作ると勝手に作られる関数があるでしょ。それがイベントプロシージャ。
微妙なのが関数を作っておいてシェイプとかでマクロの登録で設定した場合。
これはイベントプロシージャと呼べるのかと言えば
シェイプ押下時に起きるイベントで呼び出される設定がされた関数ってだけになるのか、
「それってイベントプロシージャってことじゃん」ってなるのかどっちだろ?
0613デフォルトの名無しさん
2014/02/01(土) 07:02:12.88シェイププロシージャ(コードが先でオブジェクト関連付けが後)にしよう
イベントプロシージャ(オブジェクトが先でコードが後)ではないことにしよう
0614デフォルトの名無しさん
2014/02/01(土) 12:24:48.84後から関連付けようが自動的に作成されようがイベントプロシジャにきまってるだろが
0615デフォルトの名無しさん
2014/02/01(土) 14:58:00.05みなさん本当にありがとうございました
0616デフォルトの名無しさん
2014/02/01(土) 21:04:47.990617デフォルトの名無しさん
2014/02/01(土) 22:27:12.53>>610さん賢いなぁ
0618デフォルトの名無しさん
2014/02/02(日) 06:22:16.18冗長だし
0619デフォルトの名無しさん
2014/02/02(日) 07:41:58.11行儀のいい書き方でも3行
0620デフォルトの名無しさん
2014/02/02(日) 17:07:18.390621デフォルトの名無しさん
2014/02/02(日) 17:15:35.151行での書き方もしよければ教えてください
0622デフォルトの名無しさん
2014/02/02(日) 18:27:28.63width、height
0623デフォルトの名無しさん
2014/02/03(月) 20:23:54.81どういうコードを書けばいいですか?
いいアルゴリズムが思いつきません。
乱数を発生させたたびにそれまで発生させたすべての乱数と重複がないか調べ
なければ次の乱数、あればやりなおし、
というアルゴリズムよりいい方法はありますか?
0624デフォルトの名無しさん
2014/02/03(月) 21:33:24.65ここはとりあえず結果が出せればOKなスレ
アルゴリズムを詰めていって最適化する話は余所でどうぞ
0625デフォルトの名無しさん
2014/02/03(月) 21:33:50.250626デフォルトの名無しさん
2014/02/03(月) 22:40:14.82>>339の回答を知りたいんだけど
z個の乱数をx〜yの範囲で発生させ
それらが同一のものが1つもないかどうか調べて (←このアルゴリズムも簡単ではないが)
なければそれで終了、あればまた最初からやりなおし、
という方法はどう?
もっといい方法ある?
623 デフォルトの名無しさん 2014/02/03(月) 20:23:54.81
じゃあ、整数x〜yの範囲でz個の重複しない乱数を求めるには
どういうコードを書けばいいですか?
いいアルゴリズムが思いつきません。
乱数を発生させたたびにそれまで発生させたすべての乱数と重複がないか調べ
なければ次の乱数、あればやりなおし、
というアルゴリズムよりいい方法はありますか?
ふーむ
0627623
2014/02/03(月) 23:03:17.99z個の乱数がほしいから
とりあえず範囲を1ずつ減らした範囲でz個の数列を作る。
そのあとに数決定する。
どうだ?
天才的だろう。
わからない人のために具体例を挙げる。
1から10の範囲で3個の乱数なら
次の範囲内で3個の乱数を発生させる
a= 1〜10
b= 1〜9
c= 1〜8
そして出力の3つの数は10人の人が並んでると想像して
最初の数はa番目に並んでる人。
2番目の数はスペースは詰めてb番目に並んでる人。
3番目の数はスペースは詰めてc番目に並んでる人だ。
0628デフォルトの名無しさん
2014/02/03(月) 23:05:08.560629デフォルトの名無しさん
2014/02/03(月) 23:28:46.88いや、これ以上は恐らく無いだろ。
ソートもちゃっかり兼ねているw
0630デフォルトの名無しさん
2014/02/03(月) 23:28:51.820631デフォルトの名無しさん
2014/02/04(火) 00:07:09.11先頭からz個取る
終了
0632デフォルトの名無しさん
2014/02/04(火) 00:18:21.61If WorksheetFunction.CountIf(Range("A1:D3"), ">0") + WorksheetFunction.CountIf(Range("A1:D3"), "<0") Then 処理
0633デフォルトの名無しさん
2014/02/04(火) 00:21:47.430634デフォルトの名無しさん
2014/02/04(火) 00:22:30.81乱数だろ?ソートしていいんか?
0635デフォルトの名無しさん
2014/02/04(火) 11:50:31.33まえにどっかで見たときの話ならそう言う条件だったはず
実数でいいなら、数千個の乱数出力とかでもなければ単純に繰り返して重複チェックするんでいいんじゃね
数千個の乱数欲するけど重複はダメってなら、乱数の使い方がおかしいと思うぞ
0636デフォルトの名無しさん
2014/02/04(火) 23:23:36.85並べ替えは何回くらいやるの?
多くやらないとちゃんとまざらないし
x-yの範囲が広いときはさらに並べ替えの回数はものすごく多くしないといけない問題がある。
0637デフォルトの名無しさん
2014/02/05(水) 03:43:18.232番目の要素をランダムな要素と入れ替える
以下x-yまでの要素数まで繰り返す
入れ替え回数はx-yの要素数と同じでいいだろ
要素数に対して必要な数が少ないなら効率的ではないけど、それなら単純な重複チェックでいいから
まあとりあえずこれ以上はどっかアルゴリズムのスレ探してそっち行け
0638デフォルトの名無しさん
2014/02/05(水) 09:39:16.44入れ替え入れ替えとあなたおっしゃったけどね
その入れ替え自体のアルゴリズムも考える必要があるんです
あなたとは違うんです
0639デフォルトの名無しさん
2014/02/05(水) 10:44:19.76あらゆる可能性が平等なのが乱数
だから「よく混ざる」ってのは乱数の定義と矛盾する
それは本当の乱数ではなく、乱数のうちの1パターンを人間の意思で選んでいる(または拒否している)
人の意思が入った時点でそれは乱数ではなくなってしまう
0640デフォルトの名無しさん
2014/02/05(水) 14:22:39.33袋に最小から最大の数字を各々書いた玉があって
それを戻さないで取っていくとどうなるかを
コンピュターの乱数機能を利用して実現してるだけだから
そんな乱数の定義とは関係ない。
0641デフォルトの名無しさん
2014/02/05(水) 16:07:27.160642デフォルトの名無しさん
2014/02/05(水) 16:16:06.35For i To n
ソース(i) = i
Next
while n > 0
データ(i) = ソース(random)
n ー 1
i + 1
LOOP
0643デフォルトの名無しさん
2014/02/06(木) 04:12:42.33「乱数を使って並べ替える」みたいなものだからな
0644デフォルトの名無しさん
2014/02/06(木) 10:46:18.47前者の場合、もし最初に引いたのが「1」だったら、2回目は1が出ないことが確定してしまう
乱数なら次も1になる可能性がある
数学的に言えば確率論の中の順列の問題
ビンゴとサイコロの違いと言えばわかりやすい
質問者がわかってない
0645デフォルトの名無しさん
2014/02/06(木) 13:55:18.980646デフォルトの名無しさん
2014/02/19(水) 17:38:52.21Const x As Long=0,y As Long=1000000,z As Long=500000
Dim i As Long,j As Long,k As Single,bool As Boolean,Flag(x To y) As Boolean
'処理
Randomize
Do
bool=z>j
If bool Then k=(z-j)/(y-x-j+1) Else k=1-z/j
For i=x To y
If (Flag(i) Xor bool) And Rnd<=k Then
Flag(i)=Not Flag(i)
If Flag(i)Then j=j+1 Else j=j-1
EndIf
Next
Loop Until j=z
'表示
j=1
For i=x To y
If Flag(i)Then
ActiveSheet.Cells(j,1).Value=i
j=j+1
EndIf
Next
End Sub
0647デフォルトの名無しさん
2014/03/05(水) 07:35:56.11★zipファイルの「阪神近鉄無」フォルダー以下
「平成25年12月」「平成25年11月」の数値未発表で一部合計値比較不可能の為
平成25年10月〜平成13年4月は以下路線の各駅を合計・増減から除外して再計算。
「阪神」─「本線」「なんば線」
「近鉄」─「難波線」「大阪線」「南大阪線」
★zipファイルの「阪神近鉄有」フォルダー以下
除外せず、「平成25年12月」「平成25年11月」の未発表数値を前年同月と同一と仮定
0648デフォルトの名無しさん
2014/03/06(木) 23:19:40.48B600に関数が入っていて
B601には空白です。
B602にも関数が入っていて
B603は空白です。
こんな感じで、Bの1700行まで関数が一行置きに入っているのですが、セルの結合を二行ずつしたいと思っています。
どういう風な記述になりますでしょうか?
0649デフォルトの名無しさん
2014/03/07(金) 00:11:16.39For r = 600 To 1700 Step 2
Range(Cells(r, 2), Cells(r + 1, 2)).Merge
Next
0650デフォルトの名無しさん
2014/03/07(金) 00:51:11.60ありがとうございます!!!
もうひとつお聞きしたいのですが、、、
0651デフォルトの名無しさん
2014/03/07(金) 01:01:27.94If Cells(Target.Row, "E").Value = "新" Then
Application.EnableEvents = False
On Error Resume Next
If Not (Intersect(Target, Range("H:H")) Is Nothing) Then
Cells(Target.Row, "G").Value = (1 - Cells(Target.Row, "H").Value) * Cells(Target.Row, "F").Value
End If
Application.EnableEvents = True
End If
End Sub
0652デフォルトの名無しさん
2014/03/07(金) 01:04:46.690653デフォルトの名無しさん
2014/03/07(金) 07:39:53.100654デフォルトの名無しさん
2014/03/07(金) 08:25:53.28どハマりして結局関数を作った記憶があったようななかったような
とりあえず、G列はH列を参照するのならG列にエクセル関数を入れればいいよ
あとお節介だけど、プログラムが全く理解できてないみたいだけど、知識をつける必要がないのなら構わないけど、自分で調べた方がいいよ
0655デフォルトの名無しさん
2014/03/12(水) 01:22:26.84ID:x9JPMObJおせっかいウザイ。さっさと回答くれ。
0656デフォルトの名無しさん
2014/03/12(水) 01:45:28.79ID:ZXRx46eiてすてす
0658デフォルトの名無しさん
2014/03/12(水) 11:47:45.36ID:4Vi2bcOWコラ。にょろーんとするな。
0659デフォルトの名無しさん
2014/04/03(木) 10:09:06.33ID:Eig24VSKいまいちよくわからないのですが。
0660デフォルトの名無しさん
2014/04/03(木) 10:15:53.71ID:4gfcVwhuVBAからワークシートの数式を書き換えることができる
オートフィルでは思った通りに変化してくれないような時に、VBAを使って数式を自動生成する
0661デフォルトの名無しさん
2014/04/03(木) 10:29:44.67ID:Eig24VSKなるほどありがとうございます。
でもどう使いますか?
単に
Cells(r,c)="=IF(B1=C1,D1,E1)"
と書くのと
Cells(r,c).Formula="=IF(B1=C1,D1,E1)"
と書くのでは違うということでししょうか?
VBAでも自動でオートフィルしてくれますか?たとえばRange("A1:A100")="=B1*100"とすればA100セルは"=B100*100"になってる?
0662デフォルトの名無しさん
2014/04/03(木) 10:30:42.30ID:Eig24VSK0663デフォルトの名無しさん
2014/04/03(木) 11:19:42.03ID:Mk1UvHnqEXCEL2013を導入したのですが
わずかでも数式がある場合に、数行でもコピペで貼り付けすると
再計算(プロセッサ4個):N%などと、時間がかかるのですが、解決方法はありますか?
検索で調べてみても、過去情報ばかりでヒットできません。
環境の問題では無いと思ってるのですが、必要であれば指示してください。
0664デフォルトの名無しさん
2014/04/03(木) 11:23:35.99ID:Mk1UvHnqWorkbooks(".xlsm").Activateですが、SDIの影響でWorkbook_Openに記述してもうまく機能しません。
情報はいくつか検索できましたが、解決していないように見えます。
いい方法ありますか?
0665デフォルトの名無しさん
2014/04/03(木) 11:49:55.12ID:4gfcVwhuその例では混乱することは少ないだろうけど、数式が文字列変数に入っていた場合は
あとでコードを見返した時にセルに何を入れているのかわからなくなる可能性があるので
プロパティは省略すべきではない
また、逆にセルから数式を読み出したい時はプロパティを省略できない
0666デフォルトの名無しさん
2014/04/03(木) 12:42:08.56ID:Eig24VSKそれは
myVal=Cells(r,c).Formula="=IF(B1=C1,D1,E1)"
または
myVal=Cells(r,c).FormulaR1C1="=IF(B1=C1,D1,E1)"
で代入した場合には
変数の型は必ず文字列であり内容も文字列ということですか?
0667デフォルトの名無しさん
2014/04/03(木) 13:19:19.03ID:4gfcVwhu質問の意味が不明
それからコードがおかしい
それではmyValにBoolean型が代入されてしまう
正しくは
myVal = "=IF(B1=C1,D1,E1)"
Cells(r, c).Formula = myVal
など
myValはString型
0668デフォルトの名無しさん
2014/04/03(木) 14:10:31.38ID:Eig24VSKあ、式はたしかに=が2つあって間違ってました。
でも
------------------------------
Sub Unko()
myVal = "=IF(B1=C1,D1,E1)"
ActiveCell.Formula = myVal
Debug.Print ActiveCell.NumberFormat
End Sub
------------------------------
これで試してみると
文字書式はgeneralとでるよ。@じゃなくて。
0669デフォルトの名無しさん
2014/04/03(木) 15:59:16.02ID:4gfcVwhu根本的にわかってない
セルの書式と代入する値の型は無関係
それから下品な名前は使うな
俺はそういうのが嫌いだからもう教えない
0670デフォルトの名無しさん
2014/04/03(木) 16:16:33.02ID:Eig24VSK0671デフォルトの名無しさん
2014/04/05(土) 20:03:54.99ID:eYN2DOjDいる方は、何をお使いになってますか?
VBEで以下の不満があり、関数のアウトライン機能がないこと、列挙体変数をTabで選択せずそのまま入力するとその入力された変数名に変更されてしまうなどがあり、困ってます
0672デフォルトの名無しさん
2014/04/05(土) 20:52:49.41ID:vxn3S8/HVisualStudioのVBのエディターで書いてからコピペとかたまにやるけど常用はしてない
普段は普通のテキストエディター
0673デフォルトの名無しさん
2014/04/06(日) 00:14:11.80ID:6QPkQ4Uqなるほど、確かにVSのアウトライン機能は便利ですもんね…
でもアウトライン機能を常用出来るようなテキストエディタはやはりないんですかね
ありがとうございます。
0674デフォルトの名無しさん
2014/04/06(日) 20:31:36.34ID:SRPo3hu2なぜか途中で入力セルが勝手に変えられてしまいます
MSComm1.InputMode = comInputModeText
rdat = MSComm1.Input2
Sheet3.Cells(InputRow, 11) = rdat //シリアルデータをセルに入力
InputRow = InputRow + 1
1023,964
と入力されるべきところになぜか
1
23,964
とか
12
3964
になってしまいます
似たような方いらっしゃらないでしょうか
0675デフォルトの名無しさん
2014/04/06(日) 21:05:33.20ID:X8q2hYwdオーバーランしてるんじゃねーのか?
まずは、Debug.Print rdat して、読み取りがおかしいのか、セルが書き変わってるのか切り分けなよ。
0676デフォルトの名無しさん
2014/04/06(日) 21:38:35.38ID:SRPo3hu2イミディエイトには
511,476
511,476
5
11,476
となってるので読取がおかしくなっているようです
0677デフォルトの名無しさん
2014/04/07(月) 00:32:05.86ID:6QjlBT3Trdat = MSComm1.Input2
Debug.Print rdat
を実行した結果が↓のようになりました
510,475,442,413,392,379,337,325であるべきところが
510,
475,442,413,392,379,337,325
となってしまいます
いつも起きてるわけではなく9割ぐらいがこうなります
送られてくるデータは最大40文字の文字列なのでStringの容量からはみ出ることはないのですが・・・
rdatからReplaceを使ってvbCrやvbLfを置換しても文字列の改行はなくなりませんでした・・・
これはもうMSCommの仕様でしょうか
0678デフォルトの名無しさん
2014/04/07(月) 01:09:45.66ID:cIwL+5uVバイナリで改行コードをチェック
0679デフォルトの名無しさん
2014/04/07(月) 18:12:05.76ID:NRYmRN39テキストファイルで保存すると改行されています
0680デフォルトの名無しさん
2014/04/07(月) 19:44:01.79ID:cIwL+5uV文字列の先頭から文字コードを順番に表示させてみ
0681デフォルトの名無しさん
2014/04/09(水) 02:10:23.95ID:Zgg01Tu3dataが0だとエラーになります。回避するには大人しくIf elseにするくらいしかないですか?
0682デフォルトの名無しさん
2014/04/09(水) 02:48:42.35ID:rPGWVgOi回避する方法はほかにもある
たとえばOn Errorとか、IIfの入れ子とか
Ifで書く場合もElseは必須じゃないし
0683デフォルトの名無しさん
2014/04/09(水) 02:59:54.43ID:BMFTF5hJVBAはショートサーキットしないから、素直にIFネストしといたら良いんじゃね
セルに計算式埋め込んでIfErrorとかIsErrorとか使えば何とかなるかもしれんが
0684デフォルトの名無しさん
2014/04/09(水) 03:30:52.75ID:rPGWVgOi今回のIIfのエラーとショートサーキットは関係ない
IIfは単なる関数だから、呼び出し前にすべての引数が評価されるだけのこと
0685デフォルトの名無しさん
2014/04/09(水) 04:08:35.13ID:Zgg01Tu3IIFの入れ子だけでエラー回避出来るんですか?思いつかないです。ヒント下さい。
0686デフォルトの名無しさん
2014/04/09(水) 04:18:43.85ID:rPGWVgOiヒントは>>684
IIfは関数だってこと
まず機能限定でいいからIIf関数を自分で作ってみ
0687デフォルトの名無しさん
2014/04/09(水) 05:58:06.04ID:eVaBF0ya0除算の時どうしたいかによるけど、
1/dataの部分を、たとえば
dataが0なら0を返却する様な
関数をかませる方法もあるよ。
ただ、
処理の遅いiifをそこまでして使うほどのメリットを感じないけど。
0688デフォルトの名無しさん
2014/04/09(水) 17:55:19.77ID:rPGWVgOi元の質問>>681によると、data=0の時は結果も0にしたいようだ
俺も素直にIfで書いた方がいいと思うけどな
0689デフォルトの名無しさん
2014/04/11(金) 12:28:29.65ID:yZ8wKwaw0690デフォルトの名無しさん
2014/04/11(金) 14:48:21.85ID:z4/PIhu7Sheet1モジュールに Sub ボタン1_click() を書いてボタンに登録
Privateにしたければボタンに登録後に Private Sub ボタン1_click() と Private を追加しておく。
またはSheet1モジュールに Private Sub ボタン1_click() を書いてからボタンのマクロ名に「Sheet1.ボタン1_click」と手書きする
0691デフォルトの名無しさん
2014/04/15(火) 04:16:36.29ID:A/HjwMLtマクロが実行終了してもモジュールがリセットされない限り値が残っているので
強制的にモジュールをリセットしたいです。どうすれば良いですか?
0692デフォルトの名無しさん
2014/04/15(火) 06:26:32.57ID:rPikCPobExcelを再起動するか、変数を初期化するためのプロシージャを用意する
0693デフォルトの名無しさん
2014/04/15(火) 10:36:04.14ID:5oqUCn8pなんのために/どういうときに、使うんですか?
0694デフォルトの名無しさん
2014/04/15(火) 11:37:46.86ID:9lgaoMnAスコープはそのプロシジャでいいが、寿命がプロシジャと同じでは困る時
たとえばそのプロシジャが呼ばれた回数を数えるときとか便利
0695デフォルトの名無しさん
2014/04/15(火) 11:53:56.64ID:5oqUCn8pそれならstaticとか変な概念を1つ導入するなんてことはせず
モジュールレベルの変数を使ったら良くないですか?
マッチ1本火事のもと。
あたらしい概念の導入は混乱のもと。
0696デフォルトの名無しさん
2014/04/15(火) 12:47:45.68ID:rPikCPob新しい物に順応できないジジイは死ぬまでアセンブラだけ使っててくだちい
0697デフォルトの名無しさん
2014/04/15(火) 13:41:44.59ID:9lgaoMnAstatic変数はVBがオブジェクト指向になる以前からあるんだがな
0698デフォルトの名無しさん
2014/04/15(火) 14:08:55.72ID:s8o/Oo490699デフォルトの名無しさん
2014/04/15(火) 16:22:28.15ID:820VGCAb0700デフォルトの名無しさん
2014/04/15(火) 16:26:47.79ID:rPikCPob叩きたいだけだろ
0701デフォルトの名無しさん
2014/04/15(火) 23:40:57.35ID:Qecud56UC++にはあるけどJavaにもC#にも無いんだから
むしろ時代遅れの概念だろ。
0702デフォルトの名無しさん
2014/04/16(水) 04:06:05.87ID:LmxlsNa2「このアクションを実行するとプロジェクトがリセットされます。実行しますか ?」
このメッセージが出るようなコードを最初に強制的に行いたいのですが出来ませんかね。
>>693
再帰のときとかに使ってます。
0703デフォルトの名無しさん
2014/04/16(水) 08:30:53.84ID:C8nNiAQg> C++にはあるけどJavaにもC#にも無い
バカには使いこなせないということ (w
0704デフォルトの名無しさん
2014/04/16(水) 12:19:39.65ID:XF2c1vIXプロジェクトをリセットする方法は色々ある
基本的なことはここを参考に
http://www.moug.net/tech/exvba/0150116.html
0705デフォルトの名無しさん
2014/04/16(水) 23:01:53.26ID:2LoKKqcV>モジュールレベル変数の値が消えるとき
パブリック変数にしてた文字列が消えていたのはこのせいだったのかよーー
0706デフォルトの名無しさん
2014/04/17(木) 01:26:29.86ID:hQgHTHarStaticな変数ってクラスモジュールの
プロシージャで使ったらどんな動きするんだろ。
インスタンスごとに別々に用意されるのか、
それとも同じクラスで生成されたインスタンスのは参照先が同じになるのか。
後者だったら何か新たな使い道が生まれそうだけど、
それはそれでまた混乱の素になりそう。
0707デフォルトの名無しさん
2014/04/17(木) 01:55:46.12ID:oM/c/OYPそれはプライベットだぞ。
パブリックじゃないぞ。
というわけで、標準モジュールでの
プライベット変数とパブリック変数の
その使い方と使い分けや、注意すべきこと、どういうときにどれを使うかなど
その使用方法について詳しく教えていただけないでしょうか?
0708デフォルトの名無しさん
2014/04/17(木) 02:24:20.93ID:jEbNeAxo0709デフォルトの名無しさん
2014/04/17(木) 03:33:46.78ID:fX81VMtB>既存の標準モジュールやUserFormを解放(削除)すると、確認メッセージは表示されずにモジュールレベル変数の値がクリアされます。
そのページで手動ではない方法で実現出来そうなのは
実際には使わないダミーのモジュールをインポート後、すぐエクスポートしてプロジェクトをリセットするくらいですかね?
どうもありがとうございました。
0710デフォルトの名無しさん
2014/04/17(木) 03:43:12.52ID:fX81VMtB0711デフォルトの名無しさん
2014/04/17(木) 14:24:23.33ID:oM/c/OYPVBAで複雑なプログラミングをするときは
グローバル変数は使わずにどこかのセルに値を保存しておいたほうがよいということで
ファイナル認識でokか?
0712デフォルトの名無しさん
2014/04/17(木) 15:57:50.88ID:jEbNeAxo0713デフォルトの名無しさん
2014/04/17(木) 16:50:13.82ID:oM/c/OYP上記のことを総合判断するに
VBで複雑なプログラミングをするときは
グローバル変数はちゃんとリセットされずに値は保存されたまま使えるということで
ファイナル認識でokか?
0714デフォルトの名無しさん
2014/04/17(木) 18:10:20.16ID:f4TQPtNf0715デフォルトの名無しさん
2014/04/17(木) 19:03:25.75ID:GGrT4rnZ↑何これ?
0716デフォルトの名無しさん
2014/04/17(木) 23:11:26.77ID:K2VamZAF0717デフォルトの名無しさん
2014/04/18(金) 18:57:42.82ID:P9dU51g+0718デフォルトの名無しさん
2014/04/18(金) 20:27:06.81ID:pSxMtBxF0719デフォルトの名無しさん
2014/04/20(日) 10:29:25.89ID:LlR3PaQLコードを書いてるときや編集してるとき
画面が狭くモニターがあと縦横2倍、面積4倍くらい以上に大きくしてほしいとよく思います。
こんなとき役に立つツールみたいなのはないですか?
0720デフォルトの名無しさん
2014/04/20(日) 11:23:23.90ID:DYddObWG0721デフォルトの名無しさん
2014/04/20(日) 11:52:54.77ID:YSeiuWKu仮想デスクトップか。表示域そのものを広げたいなら、
モニタ買い替え又はどこかからモニタを調達してきて>>720。
VBAでどうこうできる問題ではないと思う。
0722デフォルトの名無しさん
2014/04/20(日) 13:42:35.59ID:kzevG+UG表示される行数、文字数を増やすには、画面を大きくするか字を小さくするしかない
どっちがお望み?
画面を大きくするにはモニターの買い換えか増設、ソフトでやるなら仮想デスクトップ
字を小さくするのは画面のプロパティをいじったり設定でモニターのdpiを上げたりVBEのフォントを変えたり
http://www.max.hi-ho.ne.jp/happy/YNxv1.html
テキストエディタを使ったり
0723デフォルトの名無しさん
2014/04/21(月) 00:23:00.62ID:+JF1MRhAつまり大元のSub Testの中を、
Test_Sub1、Test_Sub2、Test_Sub3、Test_Sub4、Test_Sub5くらいの5つの部分に分けるみたいな感じです。
しかしここで問題が。
Test_Sub1に分けても、大元のTestで宣言した変数がこのTest_Sub1の中でたくさん使われています。
改めてこのTest_Sub1内で変数を宣言すると
大元の変数とは全く関連のない新しい独立した変数とみなされますよね?
そうするとコードを分割して可読性・メンテナンス性を良くするのって不可能じゃないですか?
みなさんはこのへんはどうやってやってるんでしょうか?
0724デフォルトの名無しさん
2014/04/21(月) 00:36:42.27ID:UsKDZ0RZそれは元の設計とか分け方が悪い
Sub1、Sub2なんて名前の付け方からしておかしい
きちんと機能ごとに分けて、処理内容がわかるような名前を付ける
機能が限定されれば必要な変数も限られるから、最小限の変数だけをプロシージャの引数として渡すようにする
0725デフォルトの名無しさん
2014/04/21(月) 00:48:02.52ID:+JF1MRhA当然ほんものは役割にちなんだ名前になってるよ。
やっぱり「最小限の変数だけをプロシージャの引数として渡す」というのが回答なんですね。
そんな気がしてたんだわ。
でもいまから改造するとしたら
もうすでに人間の内臓と血管と骨のように
変数やらなんやらが複雑に入り組んでるので
なにかすこしでも改変しようとすると
人間のたとえでは大出血で死亡してしまうように
コードでエラーが出まくったり全く意図してない動きをしそうですわ。
こういうようにならないようにするためには
ふだんからどういうコードを書くように心がけたらいいですか?
0726デフォルトの名無しさん
2014/04/21(月) 01:01:29.41ID:UsKDZ0RZ普段からモジュールを小さく分けて変数のスコープも最小限にする
0727デフォルトの名無しさん
2014/04/21(月) 01:09:39.31ID:UsKDZ0RZコメントを入れたくなったら、その部分はプロシージャに分ける
っていうのは初心者にはわかりづらいかなあ
中級者になってくると「ここにはコメントを入れよう」って思うタイミングが必ず出てくるんだよね
経験上、コメントを入れておかないとあとで保守するのが大変になるぞ、って部分が
だんだんわかるようになってくる
そういう処理はプロシージャとして別にしておいた方が保守性が上がることが多い
0728デフォルトの名無しさん
2014/04/21(月) 08:41:09.76ID:Q9CWt8FHホントこれに尽きるよね。
0729デフォルトの名無しさん
2014/04/22(火) 01:28:33.70ID:DlZvN0RFプロパティだけのクラス作ってそれを引数で渡せば最小限の引数で済むけど、
そもそも最初にどうすれば使い回しがきいて
且つ修正する時に他に影響を与えることなく
出来るだけ手を入れないような組み方が出来るか考えながら組まないと。
たまにデザインパターンの本とか読んでおけば少しは役に立つかもよ。
0730デフォルトの名無しさん
2014/04/22(火) 09:49:30.62ID:xWC4qOoOデザインパターンの本とはどういう本ですか?
本当にプログラミングに関係する本ですか?
0731デフォルトの名無しさん
2014/04/22(火) 10:03:28.89ID:W0hXuU4Ohttp://e-words.jp/w/E38387E382B6E382A4E383B3E38391E382BFE383BCE383B3.html
デザインパターン 【 design pattern 】
プログラム設計時に起こる典型的な問題とそれに対する解決策を整理し、再利用できるようにまとめたもの。
1995年に出版された書籍「デザインパターン」の中で23のパターンが解説されたのをきっかけに広まった。
ソフトウェアを設計していると、多くのソフトウェアが共通して持っている機能や問題があることに気づくことがある。
それらの問題を解決するために毎回0から設計していては効率が悪いため、多くのプログラマは経験を積むうちに
「こういった問題を解決するには、こういう構造のプログラムを書けばいい」というノウハウを蓄えていくことになる。
それらのノウハウを他人が参照できるように明示的に整理したものがデザインパターンである。
問題と解決策とを一組として、「Stateパターン」などそれぞれに名前が付けられる。オブジェクト指向とパターン化との
相性がいいためか、オブジェクト指向プログラミングの分野で用いられることが多い。
0732デフォルトの名無しさん
2014/04/22(火) 10:03:51.12ID:o3KBIfuW何か一昔前の流行り言葉を並べただけの厨ニ病的発言に見えるけどマジオススメ。
でも、リファクタリングに関する本て無くなっちゃったよね。
0733デフォルトの名無しさん
2014/04/22(火) 11:41:19.93ID:z8WHMXPV0734デフォルトの名無しさん
2014/04/22(火) 11:48:32.57ID:Edo2b+/a所詮はOOP初心者へのお勉強向けのものなんだから、
丁度いいくらいなんでないの。
0735デフォルトの名無しさん
2014/04/22(火) 12:55:30.89ID:z8WHMXPV0736デフォルトの名無しさん
2014/04/22(火) 13:47:36.00ID:0UJjYfLYhttps://www.youtube.com/watch?v=wia_sFsAf6g
0737デフォルトの名無しさん
2014/04/22(火) 14:57:43.47ID:QveWaMVIとあるときに
引数 a に byval が付いてるときと付いてないときで動作は変わらないのですか?
あと関数そのものの戻り値にも byval とか byref とか書きたいのですが
どこに書けばよいのかわかりません ><
0738デフォルトの名無しさん
2014/04/22(火) 17:16:32.90ID:DwFEDI7c近代的なデザパタってあるの?
0739デフォルトの名無しさん
2014/04/22(火) 23:10:43.79ID:VyvjcPd+> 引数 a に byval が付いてるときと付いてないときで動作は変わらないのですか?
変わる。
> あと関数そのものの戻り値にも byval とか byref とか書きたいのですが
なんのために?
書くだけなら適当に戻り値の型名の前辺りに書けばいい
0740デフォルトの名無しさん
2014/04/23(水) 00:49:20.82ID:ZM+hJQpr0741デフォルトの名無しさん
2014/04/23(水) 07:39:11.68ID:gw4Yr7wD0742デフォルトの名無しさん
2014/04/23(水) 08:03:24.27ID:Ce2w8hBu単に変数のアドレスってだけだろ?
・概念が分かりづらい
・難易度が高い
・これで挫折した人多数
こんな評判ばかりが先行して覚悟して勉強し始めたけど
単に変数のアドレスってだけで全然難しくないじゃないか。
0743デフォルトの名無しさん
2014/04/23(水) 08:17:33.81ID:x9LZX8vX0744デフォルトの名無しさん
2014/04/23(水) 08:18:54.85ID:x9LZX8vX0745デフォルトの名無しさん
2014/04/23(水) 08:35:15.29ID:jWa014pDその「アドレス」がわからないやつがいるんだよ
CPUやメモリの仕組みなんて知らなくても、マクロの記録とコピペさえ覚えりゃなんとなく動く物ができちゃうし
独学で参考書を拾い読みしかしてないと2進数16進数も知らなかったりする
0746デフォルトの名無しさん
2014/04/23(水) 10:29:13.37ID:6DXUFUqF思い通り動かなかったときに「これはポインタ様の仕業じゃ!」と特定できる経験値があれば問題ない
0747デフォルトの名無しさん
2014/04/23(水) 12:39:28.71ID:+BZatqFA0748デフォルトの名無しさん
2014/04/23(水) 13:00:46.08ID:x9LZX8vX> ポインタってなにが難しいのよ?
使うのが難しい、と言うか面倒なんだよ。
ポインタ自体とそれが指す先の両方を意識しないといけないから。
まあ、C++ ならテンプレートライブラリでだいぶ改善されたけど。
0749デフォルトの名無しさん
2014/04/23(水) 13:09:46.59ID:6DXUFUqFその現実をはっきりくっきり突きつける役目をポインタが担っているというだけ
0750デフォルトの名無しさん
2014/04/23(水) 13:13:16.20ID:ZM+hJQpr0751デフォルトの名無しさん
2014/04/23(水) 23:58:36.04ID:jVwNMIQL0752デフォルトの名無しさん
2014/04/24(木) 14:00:15.27ID:ZALVHb/C500行以上の長文コードがあって
その中には当然のことながらCells( X , Y )のようにCellsプロパティでセルの場所を指定してる箇所が大量にあります。
でもシートの行なり列なりを丸ごと削除するとします。
すると当然Cells( X , Y )で指定してた箇所は影響される箇所はすべて変更しなきゃならないじゃないですか?
こういう作業はどうやってやります?
まさか1つ1つ手作業でやるわけにはいかないでしょう。
ツールやいい方法はありますか・
0753752
2014/04/24(木) 14:02:04.53ID:ZALVHb/C1行消したら影響されるところだけRow座標を-1にずらさないといけないし
1列消したら影響されるところだけColumn座標を-1にずらさないといけないし
という意味。
0754デフォルトの名無しさん
2014/04/24(木) 18:02:51.70ID:NeL4TUu8その例でいけばCells( X , Y )を使う全ての個所が影響を受けるわけではなく
X,Yに値を設定してるところだけが影響を受けるということも考えられるが
その場合は、X,Yに直接値を指定するのではなく、定数や設定から読み込むようにしておく
そうすればその定数や設定を変えるだけで済む
プログラム作る時に、そう言う(シートの行や列がずれる)事を考慮して、
その場合でも1か所直せば対応できるように作る
エクセルに限った話でいくなら、セル(範囲)に名前つけてその名前でアクセスするとかもあるけど
0755デフォルトの名無しさん
2014/04/24(木) 18:33:28.46ID:ZALVHb/Cなるほど予防は分かりました。
これからはそうします。
ではもうすでにそういうコードをつくってあって
それを今後のメンテナンス性も考慮して
これを機会にすべてのCells( X , Y )を作り変えることにした場合
それを効率良く確実にしかも正確にすばやくやるにはどうしたらいいでしょうか?
0756デフォルトの名無しさん
2014/04/24(木) 19:33:04.48ID:pR4axH5T0757デフォルトの名無しさん
2014/04/24(木) 19:36:00.94ID:ZALVHb/C0758デフォルトの名無しさん
2014/04/24(木) 19:42:02.91ID:nXU9pvpI0759デフォルトの名無しさん
2014/04/24(木) 22:08:50.86ID:jL+soUD3禿同、全く難しくもない。
昔はBasicですらアドレス意識しないと書けなかった
型すら難しいとか言ってるゆとりが出てきてビビるわ
0760デフォルトの名無しさん
2014/04/24(木) 22:47:29.72ID:nXU9pvpI0761デフォルトの名無しさん
2014/04/24(木) 23:37:36.94ID:Nchd47HCでもN-BASICとか使ってたなら、
絵動かしたり無理矢理音楽奏でたかったりするときは必須だったかな。
当時はOSという概念もなくて直でハードの機能使うことが多かったから
アドレスとか番地とか言われたとき、何のことか瞬時に分かる人多いよね。
もう間違いなくじじいだけれど。
0762デフォルトの名無しさん
2014/04/25(金) 00:17:31.54ID:97MfQF5yそういう意味で言ってるのなら>>759の書き方には違和感を覚える
単に昔はそういう予備知識も必要だったってだけで、BASICそのものの言語仕様とはほとんど関係ないしね
0763デフォルトの名無しさん
2014/04/25(金) 00:45:07.04ID:G8DiTS3Xまあ、それ以外にアドレス意識する命令は知らないが
0764デフォルトの名無しさん
2014/04/25(金) 00:55:38.91ID:97MfQF5yN88で追加されたのがVALPTR
ほかにもあったような気がするけど、思い出せん
0765デフォルトの名無しさん
2014/04/25(金) 01:10:49.24ID:rO2W6PbIhttp://d.hatena.ne.jp/fukenko/20130916
0766デフォルトの名無しさん
2014/04/25(金) 08:31:05.76ID:b5ACRTEI0767デフォルトの名無しさん
2014/04/25(金) 10:26:45.88ID:CzawWySKタブブラウザ使ってるときの各タブってどうやって指定するのです?
0768デフォルトの名無しさん
2014/04/25(金) 12:24:40.84ID:CzawWySK呼び出すときにメソッドみたいにunko:=20, manko:=30みたいにして残りの指定しなかったものはデフォルト値を設定したいとき
そのデフォルト値の設定も含めてどうやればいいですか?
0769デフォルトの名無しさん
2014/04/25(金) 13:11:16.38ID:8Eh10mjwOptional
0770デフォルトの名無しさん
2014/04/25(金) 13:24:00.47ID:CzawWySK0771デフォルトの名無しさん
2014/04/25(金) 14:34:17.80ID:CzawWySKこのとき、
(1) そのセルをobjectとして引数でSunに渡す (Sunの中ではobjectをいじって調べる)
(2) そのセルをアクティベートして引数なしでSubに渡す(Subの中ではActivecellを調べる)
どちらが好ましいですか?
とくに似たような状況のときアクティベートしたくないときが多々ありますがそんなときは(1)しか方法はないのでしょうか?
(単純化して質問しましたが実際はもうちょっと複雑ですが)
0772デフォルトの名無しさん
2014/04/25(金) 20:22:52.70ID:97MfQF5y普通はRangeオブジェクトを引数として渡す
0773デフォルトの名無しさん
2014/04/25(金) 21:16:58.96ID:yqP+DIa+もちろんどちらがいいかと言えば(1)。
一々Activateを調べるとか訳わからない。
CellをObjectとして引数でって言うのも、どうやるつもり?
Rangeオブジェクトを引数で渡す方法もあるけど、
前レスにあった、出来るだけ今後のことを考えるなら、
最初はちょっとこった作りが必要。
0775デフォルトの名無しさん
2014/04/25(金) 22:08:42.21ID:yqP+DIa+たとえばだけど、
まず、Cell情報クラスを作ります。
これはセルの位置情報を抱えておいて、
A1形式、R1C1形式のどちらでも設定出来て、
どちらの形式からでも引き出せるようにしておきます。たとえばString型の"A2"をしまったら
Long型の2と1を引き出せる様に。
次にRange情報クラスを作ります。
今度はRangeオブジェクトを貰ったら、その左上と右下の情報を上記のCell情報クラスに抱えたり、取り出したり、
そのCell情報クラスの情報からRangeオブジェクトを取り出したり出来る様にします。
更に上位のクラスとして、ブックやシートを保持してCell情報クラスやRange情報クラスから
位置情報を取得して、どのブックのどのシートの、
どのセルや範囲を処理対象にするのかを取り出せるクラスを作ります。
後は取り出した情報からどうにでも弄ればいいです。
こんな感じでこまごまと部品化しておけば、
次回違うプログラムを作る時も、その部品を使えばいいので楽です。
0776デフォルトの名無しさん
2014/04/25(金) 22:37:19.84ID:G8DiTS3X0777デフォルトの名無しさん
2014/04/25(金) 22:57:46.98ID:yqP+DIa+まずブックの情報を抱えられるところから違う。
クラス内で抱えるから引数で渡す時もクラス一つですむ。
クラス内の処理は隠蔽化出来る
ので、一々外でこねくり回しながら
後で使い回しのきかないロジックにならなくて済む。
0778デフォルトの名無しさん
2014/04/25(金) 23:43:25.53ID:G8DiTS3XRange継承して独自処理追加したクラス作るって考え方はあるが
VBAでそれが良いやり方かと言うと、VBAで継承は....
Rangeを内包するクラスを作ることを否定はしないが
すくなくともその例のRange情報クラスとかCell情報クラスとかはないんじゃない
データの引きまわしにクラス使う事も否定しないが、クラス内の処理が隠蔽できることと
引数にクラス渡す事はあんまり関係がない
0779デフォルトの名無しさん
2014/04/25(金) 23:59:24.15ID:m8ZXioec★zipファイルの「阪神無」ディレクトリ以下
「平成26年2月」の数値未発表で一部合計値比較不可能の為
平成26年1月〜平成13年4月は以下路線の各駅を合計・増減から除外して再計算。
「阪神」─「本線」「なんば線」
★zipファイルの「阪神有」ディレクトリ以下
除外せず、「平成26年2月」の未発表数値を前年同月と同一と仮定
平成24年4月〜平成26年2月 [2014年4月24日]
http:〃www.city.osaka.lg.jp/toshikeikaku/page/0000020916.html
http:〃www.city.osaka.lg.jp/toshikeikaku/cmsfiles/contents/0000020/20916/6-2.xls
平成24年3月〜平成13年4月 [2013年6月4日]
http:〃www.city.osaka.lg.jp/toshikeikaku/page/0000164566.html
http:〃www.city.osaka.lg.jp/toshikeikaku/cmsfiles/contents/0000164/164566/12-6.xls
0780デフォルトの名無しさん
2014/04/26(土) 00:16:58.54ID:QnRpwcSp本屋でみるVBAの本には一切記載がないと思うんですが。
標準モジュールの下にあるクラスモジュールっていうの使うの?
0781デフォルトの名無しさん
2014/04/26(土) 00:36:21.25ID:/0bFGV1l0782デフォルトの名無しさん
2014/04/26(土) 01:03:15.45ID:m5B7q/+H継承は確かに便利だけど、
それも時と場合によってそれを使うことが
本当に望ましいのか判断しないといけない。
ましてやVBAはインターフェイスはあっても継承が使えないという不思議な言語だから
コンポジションとか結構重要だよ。
0783デフォルトの名無しさん
2014/04/26(土) 10:46:40.74ID:3e8mN1Ca単なるユーティリティレベルのサブルーチン集で充分なのに、わざわざクラスにしてどやってやってるだけでしょ
そのうち我に返るだろうから、スルーで桶
0784デフォルトの名無しさん
2014/04/26(土) 18:04:27.56ID:m5B7q/+H纏めて設定しておいて、実際にシートに書く時の処理と切り分けをすることも
出来るようにするという思慮もあるんだよ。
たかがクラスをちょっと持ち出したくらいでまるでトラウマのように火病る人っているよね。
普段使っている標準モジュールですらシングルトンのクラスでしかないというのに。
0785デフォルトの名無しさん
2014/04/26(土) 18:55:20.55ID:QnRpwcSp0786デフォルトの名無しさん
2014/04/26(土) 18:59:29.87ID:oNLUt8q50787デフォルトの名無しさん
2014/04/26(土) 19:08:57.24ID:QnRpwcSpSheet1はA1に
Sheet2はA2に
Sheet3はA3に
それぞれ選択状態にしておいた場合
その各シートで選択されているセルのアドレス情報をGETするにはどういうコードでできますか?
以前、オブジェクトブラウザかなにかをいろいろいじってたらその方法を発見したんだけど
忘れちゃった。
0788デフォルトの名無しさん
2014/04/26(土) 21:44:20.29ID:ckss0nAaDim R As Range
Worksheets("Sheet1").Activate
Set R = ActiveWindow.RangeSelection
0789デフォルトの名無しさん
2014/04/27(日) 14:04:43.35ID:stnFSHd/画面2画面分ぐらいの横長な表ですがjpegやgifで書き出して保存したいのですがVBAでも問題ありません
宜しくお願い致します。
0790デフォルトの名無しさん
2014/04/27(日) 14:45:53.20ID:R2zgl6Dy作るの難しそうですね。PDFにするなら
2010ぐらいからExportAsFixedFormatがあるのですが。
セル選択範囲を、アクティヴウィンドウ内での短形範囲の
位置情報としてとして抽出でき、
WinAPIに渡せるか、といったところじゃないでしょうか。(予想)
さらにそのビットマップをJPEG,GIFに変換する何かが必要そうですね。
便利そうなのでわたしも欲しいです。
0791デフォルトの名無しさん
2014/04/27(日) 14:56:22.49ID:oLsNKogN0792デフォルトの名無しさん
2014/04/27(日) 15:18:12.29ID:SP8zGQAF仮想プリンターというアプリを使うと、巨大な紙に印刷したつもりで画像ファイルにできる
0793デフォルトの名無しさん
2014/04/27(日) 15:19:47.28ID:R2zgl6Dy素晴らしい
0794デフォルトの名無しさん
2014/04/27(日) 15:37:15.92ID:SP8zGQAF実際にはこういう巨大な画像ファイルが保存される
http://rosa-chinensis.sun.ddns.vc:8080/cgi-bin/up2/src/RC20588.png
もっと大きな紙も選択できるけど、設定を間違えると巨大すぎて開けない画像ファイルができちゃうので注意
0795787
2014/04/27(日) 19:21:53.39ID:wIC7n1Em違う。
いちいちそのシートをActivateしなくてもそのシートの隠れたActiveCellを取得するほうほうを昔大発見したんだ。
いったいどうやるんだったっけ?
そのActiveWindowというプロパティをいじったような気もするようなしないような・・・
0796デフォルトの名無しさん
2014/04/27(日) 19:40:21.18ID:rjAzuBFb[A1]から縦に5つ入力した文字を”▲”を挟んで連結する処理を
作りたいんだけど、入力途中で「コンパイルエラー、修正候補:
ステートメントの最後」ってエラーがでる。
次のようにコードを入力していて、最終行を入力して決定キーを押した
時点でそのエラーが出るんだけど、何が間違ってるのか分からない。
どなたがご教示頂けると幸いです。
sub mojirenketsu()
Dim renketsu As String
Dim i As Integer
renketsu = ""
For i = 1 To 5
renketsu=renketsu&cells(i,1).value&"▲" ←これを入力した時点でエラー
0797デフォルトの名無しさん
2014/04/27(日) 19:50:23.93ID:R2zgl6Dy動いたよ。
どのワークシートのCellsなのかが不明なのでは。
ValueかTextかは別に関係ないかな
For文の後ろは書ききれなかっただけ?
Sub Renketsu()
Dim str As String
Dim i As Long
str = ""
For i = 1 To 5
str = str & Me.Cells(i, 1).Text & "▲"
Next i
MsgBox str
End Sub
0798デフォルトの名無しさん
2014/04/27(日) 19:57:39.29ID:R2zgl6DySub Renketsu2()
Dim str() As String
Dim i As Long
For i = 1 To 5
ReDim Preserve str(i - 1)
str(i - 1) = Me.Cells(i, 1).Text
Next
MsgBox Join(str, "▲")
End Sub
0799デフォルトの名無しさん
2014/04/27(日) 21:29:59.52ID:SP8zGQAF文字列を連結する時、「&」の前後のスペースは省略できない
ここだけは自動でスペースが入らなくて、自分で入れないとエラーになる
0800デフォルトの名無しさん
2014/04/27(日) 21:48:27.57ID:SP8zGQAF後ろのスペースは条件次第で省略できる
今回の質問では2箇所とも後ろのスペースが自動補完されるパターン
renketsu=renketsu&cells(i,1).value&"▲" ' エラーになる
renketsu=renketsu &cells(i,1).value &"▲" ' これなら大丈夫
0801デフォルトの名無しさん
2014/04/27(日) 21:50:04.16ID:SP8zGQAF0802デフォルトの名無しさん
2014/04/27(日) 21:52:34.25ID:SP8zGQAF&の前のスペースも条件次第では入力を省略できるんだった
0803デフォルトの名無しさん
2014/04/27(日) 22:03:23.28ID:rjAzuBFbありがとう!その通りでした。
「これなら大丈夫」の方でうまく行きました。
>>797
実行時ではなく、記述時のエラーなので、for文の後ろはまだ
白紙だったです。
丁寧にありがとう。
Textプロパティとか初見で勉強になりました。
0804デフォルトの名無しさん
2014/04/27(日) 22:21:45.87ID:wIC7n1Emそのブックにあらかじめ書かれてある標準モジュールにあるSub(例えばSub TestProcesure()としよう)を実行させるためには
どのようなコードを書けばいいですか?
0805デフォルトの名無しさん
2014/04/27(日) 22:44:24.66ID:wIC7n1EmSubプロシージャと、戻り値のないFunctionプロシージャって、全く同じじゃないですか?どうですか?
0806デフォルトの名無しさん
2014/04/28(月) 00:51:25.50ID:Z51g+zsH何を比較して「同じ」とするか、定義による
ソースはもちろん違うから、同じとは言えない
Pコードが同じかどうかは調べてみないとわからない
代用できる可能性は否定しないけど使い分けた方がいい
適切な使い分けがされていないコードを相手にするのはめんどくさいしバグの元になるから
0807デフォルトの名無しさん
2014/04/28(月) 20:44:15.96ID:PUbQSUbx戻り値の型を書かなくても値は返せる。たんにVariant型の指定を省略しただけ
Function test()
test = "test code"
End Function
このプロシジャは問題なく呼び出せる
0808デフォルトの名無しさん
2014/04/28(月) 21:12:30.39ID:PUbQSUbxWorkbooks.Open "\test.xlsm"
Application.Run "test.xlsm!TestProcesure"
0809デフォルトの名無しさん
2014/04/28(月) 23:31:36.81ID:+P6rwUoPふと思ったのでござるが
それが可能ならふつうのSubプロシージャを使ってたところを
そのままFunctionにかえても何ら問題なくマクロは動くってこと?
0810デフォルトの名無しさん
2014/04/28(月) 23:33:34.42ID:+P6rwUoPなるほど。
ありがとうでござった。
0811デフォルトの名無しさん
2014/04/29(火) 00:12:43.42ID:7Qss/xhPダメ
そら大丈夫なコードもたくさんあるだろうけど、ダメな場合もあるんで、
特別な事情がない限りはSubはSubのまま使った方が安全
0812デフォルトの名無しさん
2014/04/29(火) 00:29:30.69ID:jGZw12rcえ?
ダメな場合って例えば?
0813デフォルトの名無しさん
2014/04/29(火) 00:39:02.88ID:7Qss/xhPほれ、一番簡単なサンプル
mainを実行すると数字が表示される
次に Sub a を Function a に書き換えて、もう一度mainを実行すると表示される数字が変わる
つまりSubはFunctionに置き換えられないってこと
Dim x
Sub main()
a (1)
MsgBox (x)
End Sub
Sub a(n)
x = n
On Error Resume Next
a (n + 1)
End Sub
0814デフォルトの名無しさん
2014/04/29(火) 01:49:43.07ID:LXv8yqdQExcelではセルの内容のコピペをするとき
連続してコピーだけ、あるいは連続だけペーストだけ、というのを可能にしたいです。
ショートカットキーに関しては、そのままCTRL+Cと、CTRL+Vを割り当てればいいので簡単です。
機能に関しては、上で書いたのを読んでピンときて人もいると思うけど
コピーしたものはその順番で記憶され、ペーストするときは最新のものからペーストされていく、という仕様にします。
これを実現させるためにはどういうコードを書けばいいですか?
不明な点はエスパーしてください。
0815デフォルトの名無しさん
2014/04/29(火) 01:51:28.23ID:LXv8yqdQ東京、大阪、千葉と書かれたセルを3連続コピーして
別シートで3つのセルら連続ペーストすれば、千葉、大阪、東京、のようにペーストされる、という感じです。
0816デフォルトの名無しさん
2014/04/29(火) 01:58:42.35ID:7Qss/xhPそういうのをスタック方式という
わざわざ作らなくても、クリップボードをスタック式に拡張するフリーウェアが既にある
0817デフォルトの名無しさん
2014/04/29(火) 09:33:17.01ID:LXv8yqdQそんなことを言っちゃ警察はいらんよ。
こうすればいいさ。
Public sClip(100) As String '100は適当な最大数
Public iClip As Integer
Sub sCopy()
iClip = iClip + 1
sClip(iClip) = ActiveCell.Value
End Sub
Sub sPaste()
If iClip < 1 Then
End
End If
ActiveCell.Value = sClip(iClip)
iClip = iClip - 1
End Sub
0818デフォルトの名無しさん
2014/04/29(火) 14:06:35.48ID:LXv8yqdQこれを動的配列かなにかを使用して改善することはできないか?
あまりないが100以上になるとエラーが出るところが気に入らない。
しかしモジュール変数の配列では動的配列がうまくできなそう。
0819デフォルトの名無しさん
2014/04/29(火) 14:35:41.53ID:xkTOBPPn0820デフォルトの名無しさん
2014/04/29(火) 14:55:03.30ID:/qylVqTc100だろうが1000000だろうが、リソースが有限な以上どこかに上限はある
上限気にするなら上限に達してもエラーにならないように作れよ
ところで昔オフィスクリッポボードとかいうのが有った気がしたんだが、あれどこにいったんだろ
探してみたら、リボンの中にいまでもひっそりとあるのかw
0821デフォルトの名無しさん
2014/04/29(火) 16:16:14.87ID:oddt27dLReDim Preserve ,UBound あたりで何とでもなるだろう。
でも、そんな面倒なことせずに必要な次元数を固定確保して >> 820 に一票
>> 820
オフィスクリッポボード・・リボンの中にいまでもひっそりと隠れているよ(ホームタブの左下隅)
0822デフォルトの名無しさん
2014/04/29(火) 16:16:57.58ID:AVYTmVui0823デフォルトの名無しさん
2014/04/29(火) 18:17:28.97ID:/qylVqTcあれ、VBAから直接操作できないのか
さっさとなくせば良いのにw
0824デフォルトの名無しさん
2014/04/29(火) 20:59:07.47ID:jGZw12rc配列の替わりにコレクションかディクショナリを使えば?
0825デフォルトの名無しさん
2014/04/29(火) 21:22:15.37ID:7Qss/xhP「これぐらいあれば大丈夫だろう」が、過去どれだけひっくり返ってきたことか
今回のケースなら、どうせ人間の指の動く速さがボトルネックになるんだから普通にReDimでいいと思う
せいぜい16連射、どんなに余裕を見ても秒間数十回しか呼ばれないんだから、処理が多少重くても影響なし
0826デフォルトの名無しさん
2014/04/30(水) 02:40:51.87ID:Whj7Eetjと
秒間数十回しか呼ばれないんだから、処理が多少重くても影響なし
は、別の話だろ
まさかReDim使えば配列は無限に大きく出来るとでも思っているのか?
0827デフォルトの名無しさん
2014/04/30(水) 02:53:49.94ID:x00tEAYhしかし上限は簡単には決められないから、必要に応じて拡張するように作る
そのために処理が重くなるのは困るけど、今回は多少重くても問題ない
0828デフォルトの名無しさん
2014/04/30(水) 03:27:22.99ID:Whj7Eetj0829デフォルトの名無しさん
2014/04/30(水) 15:19:07.78ID:Iw0O5nduそのセルのアドレス、というかrow数、column数を取得するにはどうしたらいいですか?
そのユーザ定義関数を定義するときのコードの中で使いたいんです。
まさか=MYFUNCTION(ROW(),COLUMN())みたいにして渡さないといけない?
0830829
2014/04/30(水) 15:29:17.91ID:Iw0O5ndu例えばそのセルの値だけ右に移動した先にあるセルの値を出力する関数を作りたいとき
rowとcolumnで渡して返り値をCells(row,column).Offset(0,Cells(row,column).Value)としても全く動かない。
0831デフォルトの名無しさん
2014/04/30(水) 16:01:29.61ID:QkWVSK2HApplication.ThisCell.Address
0832デフォルトの名無しさん
2014/04/30(水) 16:16:47.04ID:Iw0O5nduありがとうございます。
ところでこのコードだけでもものすごく役に立ちありがたいのですが
それよりもさらに知りたいことがあります。
このApplication.ThisCell.Addressというのはどうやって調べたんですか?
こんなマレなコードは本屋で売ってるVBAの本なんかでは絶対に出てこない類のものです。
どうやって調べたのでしょうか?
そしてこのより詳しい機能はどうやって調べますか?
ちょっと調べたらApplication.ThisCell.Offset(x,y)でちゃんと他セルの値も取得できて便利です。
0833デフォルトの名無しさん
2014/04/30(水) 17:41:55.57ID:bd35DGVTみたいなメッセージが出て、その行が赤くなり、「:」の部分が選択常態になってる。
range("C"&n:"C"&n+11).select
↑これなんだけど、これ何が間違ってるの?
0834デフォルトの名無しさん
2014/04/30(水) 17:44:03.34ID:Iw0O5nduApplication.ActiveCellとどこが違うの?
実に不思議なことに
普通のSubプロシージャとかではApplication.ActiveCellしか使えずApplication.ThisCellだとエラー。
逆にユーザ定義関数を書くところではApplication.ThisCellしか使えずApplication.ActiveCellは使えない。
機能的には全く同じものなのに。
不思議ですね。
0835デフォルトの名無しさん
2014/04/30(水) 17:45:32.67ID:Iw0O5nduにしないといけない。
0836デフォルトの名無しさん
2014/04/30(水) 18:05:42.98ID:bd35DGVTありがとう。
それをそのままコピーして貼りつけたんだけど、なぜかまた同じメッセージが
出て、今度は「":C"」の部分が選択状態になってる。
どこか、別の行がおかしいのかな。
Sub a()
Dim i As Integer
Dim n As Integer
Worksheets(1).Activate
n = 5
For i = 1 To 3
range("C"&n&":C"&n+11).select
(以下、略)
0837デフォルトの名無しさん
2014/04/30(水) 18:18:39.04ID:bIvK3JIl>>799-802
range("C"&n &":C"&n+11).select
0838デフォルトの名無しさん
2014/04/30(水) 18:47:49.29ID:bd35DGVTおお、できた。ありがとう。
0839デフォルトの名無しさん
2014/05/01(木) 01:54:32.40ID:tA55q8Iy' 参照型変数を値渡しするsh2がNothingのままなのは何故なんですか。
Sub a()
Dim sh1 As Worksheet, sh2 As Worksheet
b sh1
c sh2
Stop
End Sub
Sub b(ByRef sh As Worksheet)
Set sh = ThisWorkbook.Worksheets("Sheet1")
End Sub
Sub c(ByVal sh As Worksheet)
Set sh = ThisWorkbook.Worksheets("Sheet1")
End Sub
0840デフォルトの名無しさん
2014/05/01(木) 02:23:33.09ID:UMPLKQg9変数「が」参照するのと変数「を」参照するのは別だから
0841デフォルトの名無しさん
2014/05/01(木) 06:29:41.23ID:VQHKFgN+他セルの値を変更してもすぐにはそのセルの値が反映されない問題は
どう解決しますか?
0842デフォルトの名無しさん
2014/05/01(木) 06:47:21.36ID:9zM4+Favまったく知らずに言うけど、
ActiveCellは、ユーザがマウスでクリックしたなど、
今フォーカスを持っているセル
ThisCellは、フォーカスを持っていないが、
今書き込むなど、計算しているセル
だから、ユーザ定義関数は、単なる何かを計算する関数で、
Applicationオブジェクトとは関係がなく、
フォーカスイベントをもらえないのでは?
Application.ThisCellは、定数のように静的なプロパティで、
どの関数からでも、使えるメンバなのかも?
0843デフォルトの名無しさん
2014/05/01(木) 15:43:23.17ID:C2Wy7tu3ThisCellと書いてF1キー雄だけなのに。
> Range オブジェクトとして呼び出されるユーザー定義関数が入っているセルを返します。
0844デフォルトの名無しさん
2014/05/01(木) 21:05:28.24ID:8XTpF2p+ここにある、複数のシートを結合するマクロを
xp+Office2000で使っていたのですが
win7+office2013に移行したところ、うまく動きません。
具体的には、ふたつ結合したところで終わってしまいます。
どこを直せばいいのでしょうか?
0845デフォルトの名無しさん
2014/05/01(木) 21:28:28.93ID:UMPLKQg9バージョンに依存する部分なんてなさそうだけどなあ
呼び出し方とか間違えてない?
0846デフォルトの名無しさん
2014/05/02(金) 04:58:44.30ID:AXfyvegwApplication.Volatile
0847841
2014/05/02(金) 11:21:13.12ID:0Sm4zufHおい、すごいじゃないか(笑)
今年一番感動した(爆)
それより知りたいんですが、こういう解法ってどうやって探し当てたんですか?
ふつうのVBA入門系の本には載ってないし
ヘルプでも、Application.Volatile→使用法の方向では調べられても、やりたい事→Application.Volatileの方向では、絶対に調べられないか困難だぞ。
0848デフォルトの名無しさん
2014/05/02(金) 12:31:21.02ID:eSB12fTeggrks
>>832と同じ人?
0849デフォルトの名無しさん
2014/05/02(金) 16:31:45.74ID:VTOLN4jYxpからwin7は同じマシンで、呼び出し?使い方も同じです。
試しにより高性能なマシンでやってみたところ
xpのときよりも10倍ほど時間がかかるもののとりあえず完走しました。
2000のときは窓が一つで中に複数のファイルを開く形でしたが
2013のようにファイルごとひとつづつ立ち上がると負担が大きいんでしょうか。
マクロ自体に問題があるわけではなさそうなので別のマシンで使うことにします。
ありがとうございました。
0850デフォルトの名無しさん
2014/05/03(土) 05:25:42.80ID:9Cuh0B7r引数や戻り値はとりあえず置いておいて、シートに書かれた関数があれば実行して、無ければエラーメッセージを出力するような処理を作りたいです。
0851デフォルトの名無しさん
2014/05/03(土) 07:59:55.44ID:W3aEO+UgそのシートをActivateせずに取り出す方法を以前発見したのですが
それはどういう方法ですか?
0852デフォルトの名無しさん
2014/05/03(土) 08:19:26.49ID:ElKs5wH6適当だしあんまり確認してないけどこんなのどうでしょう、バグったらごめんなさい
Private Sub Test()
Dim buf As Variant
Dim target As Range
For Each target In Selection
If target.Value = "" Then
Debug.Print "Error"
Else
'ここでセルに入力されたワークシート関数を実行・評価する
buf = Application.Evaluate(target.Value)
If IsError(buf) Then
Debug.Print "Error"
Else
Debug.Print buf
End If
End If
Next target
End Sub
0853デフォルトの名無しさん
2014/05/04(日) 07:58:46.98ID:PkGldEjn1つを他のもののコピーとしたいんですが
単に代入すると同一のものの参照となります。
そうじゃなくて構造体の全メンバの変数の値をコピーするにはどうするのが一般的ですか?
0854デフォルトの名無しさん
2014/05/04(日) 08:03:57.92ID:PkGldEjnDim name as String
Dim age as integer
Dim sex as String
Dim first_time_sex_date as Date
End Structure
Dim student(2) as Student
student(1).name="Taro"
student(1).age=16
student(1).sex="Male"
student(1).first_time_sex_date="2012/7/7"
student(2)=student(1)
student(2).name="Jiro"
みたいにして変になる。
0855デフォルトの名無しさん
2014/05/04(日) 08:15:17.54ID:PkGldEjnタブ(複数開いてる)でアクティブになっているページをgetするためには
どういうコードになりますか?
0856デフォルトの名無しさん
2014/05/04(日) 08:41:36.79ID:v/jP7knVhttp://toro.2ch.net/test/read.cgi/tech/1342087380/
0857デフォルトの名無しさん
2014/05/05(月) 02:49:54.32ID:GlFHWnLlVariantにすればByvalで渡せますが要素数が多いと速度が激しく遅くなるのは何故ですか?
この2つ調べても分からなかったので教えてください
0858857
2014/05/05(月) 02:50:19.74ID:GlFHWnLl0859デフォルトの名無しさん
2014/05/05(月) 02:55:31.79ID:GlFHWnLlByvalで渡すとき要素数が大きくなっても速度が遅くならないと思うんですけど
0860デフォルトの名無しさん
2014/05/05(月) 03:33:06.97ID:uFaF33P2任意の型の配列をVariantに代入した時、代入されるのはポインタ(番地)じゃなくて内容、配列全体が丸ごとコピーされる
だから配列のサイズに応じて処理時間も変わる
Dim A(100) As Integer
Dim B As Variant
B = A
MsgBox TypeName(B)
このサンプルの場合、代入後にBの型を見るとInteger(配列)に変わっている
0861デフォルトの名無しさん
2014/05/05(月) 03:45:08.05ID:GlFHWnLlInteger(配列)に変わっているという事は配列全体が丸ごとコピーされてる証拠になるわけですか?
じゃあ普通の配列がByvalで渡せないのは配列全体が丸ごとコピーされて
処理時間が遅くなるから使い物にならないという理由なのですかね
0862デフォルトの名無しさん
2014/05/05(月) 08:56:42.69ID:uFaF33P2ちょっと調べてみたけど、簡単には証拠は示せなさそう
もっと厳密に言うと、Variantに配列を代入すると、もともとVariantには数値が1つしか格納できないので、
配列のコピーが作られた上で、その配列へのポインタがVariantに格納される
だからVariantの中身はポインタ、という理解は間違ってはないけど、そのポインタの先にあるのは
代入元の配列ではなく、新しく作られた配列になっている
配列を丸ごと新しく作るため、処理はそれなりに重くなるしメモリも消費する
証拠はないけど、そういう仕様
どうして配列がbyValで直接渡せないのか、理由はよくわからないが、たぶんスタックオーバーフローを防ぐためのMSのおせっかいだと思う
Variantに配列を入れた時は、配列の本体は別の所に作られてスタックはVariant本体の分しか消費しない
だから許容する仕様にしたんじゃないのかな
0863デフォルトの名無しさん
2014/05/05(月) 18:06:25.33ID:/BaOb3+lDim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
With FSO.CreateTextFile("\\PC2\os\test.txt")
.WriteLine Now
.Close
End With
Set FSO = Nothing
ネットワーク先のディレクトリに新規ファイルの書き出しを行った場合
ネットワーク先のPCが消えているとVBAエラーが発生しますが、このエラーを無視して
コードを停止させることなく続行させ続けるにはどうすれば良いのでしょうか?
0864デフォルトの名無しさん
2014/05/05(月) 18:15:41.79ID:zTX2z7nm0865デフォルトの名無しさん
2014/05/05(月) 18:23:09.75ID:/BaOb3+lありがとうございます!これは便利ですね。独学でVBAを勉強中ですが知りませんでした。。
0866デフォルトの名無しさん
2014/05/05(月) 18:25:54.17ID:hthjFo5y0867デフォルトの名無しさん
2014/05/05(月) 18:51:57.18ID:zTX2z7nm*ちなみにSleepはPrivate Declare Sub Sleep Lib "kernel32" (ByVal dwmillsecounds As Long)と宣言してから使います
0868デフォルトの名無しさん
2014/05/05(月) 19:02:52.67ID:eTvbwywS0869デフォルトの名無しさん
2014/05/05(月) 19:37:01.29ID:uFaF33P2>>303
0870デフォルトの名無しさん
2014/05/05(月) 19:38:31.76ID:zTX2z7nmそれオレじゃないか(ワラ
0871デフォルトの名無しさん
2014/05/05(月) 20:03:01.60ID:rD1fSl2O文体と質問のアホさ加減が同じ
0872デフォルトの名無しさん
2014/05/05(月) 20:05:33.73ID:uFaF33P2DoEventsはメッセージループを処理する
0873デフォルトの名無しさん
2014/05/05(月) 20:06:58.64ID:uFaF33P20874デフォルトの名無しさん
2014/05/05(月) 20:09:20.00ID:F7Zw8bMG0875デフォルトの名無しさん
2014/05/05(月) 20:21:56.97ID:zTX2z7nmではさっそく質問に移ります
いろんなソフトウェアの上のほうに
ファイル(F)、表示(V)・・・、ツール(O)、ヘルプとあり、たとえばファイル(F)の下には終了(X)とだいたい決まっています。
これVBAから現在立ち上げてるアプリをすべてオブジェクト変数にいれて
そのメソッドとしてキー入力をできるようにできる方法はありませんか?
たとえばメモ帳を
Appli(1)というオブジェクト変数にして
Appli(1).KeySend("FX")というコードを書けば
見事にメモ帳が閉じるような。
もちろん本題は閉じることではなくいろんなアプリを自由自在に操ることですが。
0876デフォルトの名無しさん
2014/05/05(月) 20:43:36.05ID:iASqhGK2VBAからと言うのが
APIも含めるという広域を意味しているなら
出来ないこともない。
0877デフォルトの名無しさん
2014/05/05(月) 21:05:07.90ID:zTX2z7nm含めましょう。
ではどうやるのでしょうか?
0878デフォルトの名無しさん
2014/05/05(月) 21:31:26.89ID:uFaF33P2さすがにVBAの比率が低くなりすぎてスレチ
API関係のスレにでも行け
0879デフォルトの名無しさん
2014/05/06(火) 09:50:23.96ID:Avr/JzZk[引数] Webサイトページの一番上のバーに表示されてる「タイトル」
[返り値] なし
[機能] 現在開いてるWebページを全部調べて、引数の「タイトル」のものがあればそれをアクティブにしてタブなら前面に出してそれをオブジェクト変数に代入する。なければなにもしない。
0880デフォルトの名無しさん
2014/05/06(火) 14:55:03.32ID:jl3/KWxAはい、次のかた〜
0881デフォルトの名無しさん
2014/05/06(火) 16:34:49.64ID:EF/hc8MQAPIで可能
VBAでやる必然性なし
0882デフォルトの名無しさん
2014/05/06(火) 16:48:53.58ID:WIbNvSPM必然性?
0883デフォルトの名無しさん
2014/05/07(水) 01:13:46.53ID:XHO24LnTシートを右クリックなどして見れるようにするにはどうすれば良いですか。セルとかコメントに出力する以外の方法でお願いします。
0884デフォルトの名無しさん
2014/05/07(水) 01:37:28.97ID:uh4oWvq+http://officetanaka.net/excel/vba/tips/tips122.htm
0885デフォルトの名無しさん
2014/05/07(水) 01:56:01.55ID:XHO24LnT各シートにこういうプロパティ画面を表示するにはどうやるのですか?
0886デフォルトの名無しさん
2014/05/07(水) 11:11:46.79ID:aD6Um6cx0887デフォルトの名無しさん
2014/05/07(水) 13:35:40.93ID:w4bXJfpERegExpやMatchCollection型の変数を定義するとユーザー定義型未定義の
コンパイルエラーが出てしまうのですがどうしたらよいですか?
0888デフォルトの名無しさん
2014/05/07(水) 13:39:29.10ID:uh4oWvq+エラーが出る最小限のソース晒して
0889887
2014/05/07(水) 14:33:27.95ID:w4bXJfpERefFile = "C:\Windows\System32\vbscript.dll\2"
ActiveWorkbook.VBProject.References.AddFromFile RefFile
RefFile = "C:\Windows\System32\vbscript.dll\3"
ActiveWorkbook.VBProject.References.AddFromFile RefFile
Dim re As RegExp
Dim mc As MatchCollection
これだとコンパイルチェック前にライブラリがロードされてないから、
RegExp型やMatchCollection型が定義されてないってないなるのは当たり前ですが、
これを回避する方法はありますか? ライブラリロードだけを別マクロにして1度だけ
実行すれば良いんでしょうけど。
0890デフォルトの名無しさん
2014/05/07(水) 14:58:46.92ID:uh4oWvq+それはVBAでは基本的に無理
万能の解決策じゃないけど「CreateObject」「実行時バインディング」あたりで調べてみ
0892デフォルトの名無しさん
2014/05/08(木) 16:21:39.25ID:DqNc14pRVBAで正規表現を扱うためのやり方をググるとこの辺がヒットするんだけど
それではアカンの?
VBAで正規表現を使う (1/3):CodeZine
http://codezine.jp/article/detail/1655
Office TANAKA - Excel VBA Tips[正規表現によるマッチング]
http://officetanaka.net/excel/vba/tips/tips38.htm
0893デフォルトの名無しさん
2014/05/08(木) 16:45:09.21ID:UhAEWxzwなんかの事情でどうしても実行時に参照したいんだよな?
0894デフォルトの名無しさん
2014/05/08(木) 17:19:41.49ID:WIVGkEtc目的はなんで、それをやるとなにができて、どういうことが便利ですか?
0895デフォルトの名無しさん
2014/05/08(木) 18:24:47.72ID:uOW3clqTよくある話じゃないか
0896デフォルトの名無しさん
2014/05/08(木) 21:10:31.28ID:JZCmTzL00897デフォルトの名無しさん
2014/05/10(土) 00:30:41.40ID:DYZqKBH3そのとき
(1) 一旦、変数(配列変数とか)に入れて、その変数でいろいろ計算する
(2) そのまんまセルの値を参照しながら計算する (Cells(r,c)とかを駆使して)
の、どっちがいいですか?それともどっちも変わらないですか?場合によるならその解説もお願いします。
0898デフォルトの名無しさん
2014/05/10(土) 00:57:40.41ID:DYZqKBH3引数 Rabgeオブジェクト(セル)
返り値 Rabgeオブジェクト(セル)
処理 もし引数が結合セルだった場合、その左上のセルを返り値として返す。結合セルでないふつうのセルだった場合、なにもせずおなじセルを返す。
0899デフォルトの名無しさん
2014/05/10(土) 00:59:22.57ID:0NkefTVZどっちがいいかと言えば、自分にとってわかりやすい方
セルの読み書きは変数への代入より時間がかかるので、スピード重視なら変数に入れた方がいいと言われるけど
本気で計算スピードが欲しいならVBとかC#とか使うべきであって、結局は最初に書いたように、
プログラムを作りやすい方を選べばいいと思う
0900デフォルトの名無しさん
2014/05/10(土) 01:01:36.00ID:0NkefTVZMergeCellsとMergeAreaでがんばれ
0901デフォルトの名無しさん
2014/05/10(土) 11:38:30.40ID:Om1HfajVX.MergeArea.Cells(1,1)
0902883
2014/05/11(日) 03:04:41.66ID:X2XaIOXl0903デフォルトの名無しさん
2014/05/11(日) 13:20:36.77ID:E4N7zZTW自宅PCコア2Duo3GHZで 100メガぐらいある表のセルに数式を追加する処理がすべて動くのに5分ぐらい時間がかかるのですが
会社に持っていき一番速いi7 3Ghzのクアッドコア8スレッドのPCで実行させてみましたが同じく5分ぐらいかかりがっかりしました
それでも多少は速くなったようですが、何とか少しでも(でjきれば爆発的に)処理時間を速くできない物かと思っています。
世の中にはXeonE5系のものは15コア30スレッドというような物も存在しますが
http://ja.wikipedia.org/wiki/Xeon
Xeon搭載PCは30万ぐらい出せば買えるようですが
速くなるなら安い物かと思っているのですが
Xeonのコア数の多い物を使うとどのくらい高速になるのでしょうか?
(30スレッドでも処理時間はほとんど変わらず30万無駄遣いにおわるのでしょうか?w)
0904デフォルトの名無しさん
2014/05/11(日) 13:28:37.64ID:9n+Ded1d通常マルチコアを有効に使うためにはマルチスレッドでの処理を行います。
残念ながらVBA単独でのマルチスレッド処理はできないと思います。
http://q.hatena.ne.jp/1310989651
諦めませう
0905903
2014/05/11(日) 13:40:22.25ID:4IeCHncM残念、、、ありがとうございます。
処理中に画面下には8CPUというような表示が出ていましたがあれは書いてあるだけなのですねww
VBAはマルチスレッドに非対応だとマルチCPU対応のメリットは少なそうですね。
0906デフォルトの名無しさん
2014/05/11(日) 15:37:14.98ID:qmCq3i4D0907デフォルトの名無しさん
2014/05/11(日) 17:07:08.06ID:valH51XCエラーの種類によって処理を分岐する方法があったと思うけど
そのときに使用するエラーコードの番号ってどうやって取得しますか?
○○のエラーがでたときはメッセージ出して強制終了、
□□のエラーがでたときは無視してNEXTにそのまま続ける、
△△のエラーがでたときはこういう処置をして続行する、
みたいにしたいんです。
0908デフォルトの名無しさん
2014/05/11(日) 17:14:44.13ID:9n+Ded1d俺は
MsgBox Err.Number & " " & Err.Description, vbCritical, "xxxx"
とかで表示させて強制終了にしてるけど
実行時エラーの一覧
http://officetanaka.net/Excel/vba/error/execution_error/index.htm
0909デフォルトの名無しさん
2014/05/11(日) 17:37:21.71ID:sdx099L9エクセルそのものはマルチコア対応だから、普通のワークシート関数とかは効果あるはず
そもそもCPUが原因で遅いのじゃなければ、CPU早くしても効果薄いぞ
100メガのエクセルとか、IOでだいぶ時間食う気がするけど
ハードに金かけるならSSDとか試してみる価値はある
VBAのコード見直せば早くなる可能性もあるけど
0910デフォルトの名無しさん
2014/05/11(日) 17:39:07.78ID:valH51XCありがとうございます。
Errオブジェクトというのがあったのですか。
これは便利ですね。
0911デフォルトの名無しさん
2014/05/11(日) 20:47:26.63ID:zdamCAAu何をやってるのかわからんけど、画像とかなしで 100MB になってるなら、マジで DBMS の導入考えた方がいいかも
SQL-Server Express とかならとりあえず只だし
0912デフォルトの名無しさん
2014/05/12(月) 15:19:33.35ID:l6E7y7n0仕事で年に1回しか使わないマクロで、参照を設定し忘れて毎度何でエラーになるのか悩むもんでw
0913デフォルトの名無しさん
2014/05/12(月) 15:46:22.10ID:r3XyQ/Bdソースの先頭か、最初に開くシートの見える場所にコメントを書いておく
俺がよく使う方法は、ファイル名にコメントを入れる
Book1 (参照設定を忘れないこと).xlsx
ファイル名を勝手に変更できない時は、同じフォルダに空のテキストファイルを作って、
そのファイル名をコメントにしておく
Book1.xlsx
Book1 (参照設定を忘れないこと).txt
こんなふうにしておくと、2つのファイルが隣に並ぶので、コメントが必ず目に入る
0914デフォルトの名無しさん
2014/05/12(月) 16:22:06.75ID:Pq2vKY3y参照先のパスが毎回変わるとか、特殊な事情があるのか?
なぜ参照設定した状態で保存しないの?
なぜ実行時にコードで動的にやる必要があるの?
0915デフォルトの名無しさん
2014/05/12(月) 18:04:32.83ID:tYXPKjS8フォームにあるボタンを一時的に機能を停止するのに
btnxx.Enabled = False
にすれば、ボタンがグレーアウトされて使えなくはなりますが、シートに貼り付けたボタン
に対して同じような事するにはどうするんでしょうか?
0916デフォルトの名無しさん
2014/05/12(月) 21:17:50.64ID:Pq2vKY3ySheet1.Shapes("ボタン 1").ControlFormat.Enabled = False
Sheet1.CommandButton1.Enabled = False
とか
ただ、フォームコントロールのEnabled=Falseにしても、グレーアウトしないな
押せなくはなるけど
0917デフォルトの名無しさん
2014/05/12(月) 21:53:45.43ID:tYXPKjS8こちらの言い方がおかしかったか
http://www.dotup.org/uploda/www.dotup.org5057295.jpg
こういう状態の事です。
ま、それは良いんですが、、、
すいません、上の方でだと、動いてしまいます
下だと
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
で実行時エラー438になってしまいます。
当面動作予定は無いので、消しておきます
0918デフォルトの名無しさん
2014/05/13(火) 03:16:42.81ID:fpyFYdoXシートに貼るボタンは「フォーム コントロール」と「ActiveX コントロール」の2種類ある
で、グレーにして押せなくできるのは後者で、>>916の2番目も後者に対して使う方法
0919デフォルトの名無しさん
2014/05/13(火) 11:11:36.24ID:3oieHFyI了解しましたです。ありがとうございます。
0920デフォルトの名無しさん
2014/05/13(火) 12:41:31.19ID:oNeP8dL2毎年、客から支給されるデータをマクロで整形してDTPソフトに貼り込む作業なもんで。
0921デフォルトの名無しさん
2014/05/13(火) 19:25:34.15ID:/l0lTNTz参照設定はプログラムモジュールを指定するもの
データが変わろうが、参照設定は変わらんだろ
0922デフォルトの名無しさん
2014/05/14(水) 00:44:43.93ID:4NYZ0gDe確か参照設定はブックに依存するのではなく、
アプリケーション側に依存したはず。
つまり参照設定していない他のPC上にあるEXCELでそのブックを立ち上げても
ダメだったんじゃなかったかな。
違ってたらごめん。
0923デフォルトの名無しさん
2014/05/14(水) 01:44:23.14ID:k2UyUu49お前の環境では、あるブックに参照設定したらすべてのエクセルファイルでその参照設定が有効になってるのか?
つか、今のエクセル、未使用の参照設定勝手に外して保存しやがるな
それだけじゃなく、未使用のコードも勝手に消されてる
なんつう迷惑な事しやがるんだ
0924デフォルトの名無しさん
2014/05/14(水) 19:48:14.68ID:9e1uL7m3オプションで清掃が有効になってない?
0925デフォルトの名無しさん
2014/05/15(木) 11:36:12.81ID:xP8vZsncその 清掃 とかいうオプションはどこにある?
0926デフォルトの名無しさん
2014/05/15(木) 20:30:44.53ID:Mes52j2B0927デフォルトの名無しさん
2014/06/06(金) 17:56:50.11ID:xrGe04ueその場合どんなコードになりますか?
0928デフォルトの名無しさん
2014/06/06(金) 18:58:23.21ID:nBXq1INXFunction ar(cnt As Integer) As Variant
Dim ret() As Integer
ReDim ret(cnt)
ar = ret
End Function
0929デフォルトの名無しさん
2014/06/06(金) 19:29:10.75ID:xrGe04ueあれれ?おかしいですよ。
返り値はVariantなのにそのプロシージャ内ではInteger。
こんなこと許される?
0930デフォルトの名無しさん
2014/06/06(金) 19:29:56.02ID:xrGe04ueReDim ret(cnt)
をまとめて
Dim ret(cnt) As Integer
にしちゃ問題あるの?
0931デフォルトの名無しさん
2014/06/06(金) 20:56:58.40ID:2p7Hju+qそんなことできない
0932デフォルトの名無しさん
2014/06/06(金) 20:59:12.41ID:xrGe04ueそれはなぜですか?
0933デフォルトの名無しさん
2014/06/06(金) 21:07:05.43ID:fJT63IUR0934デフォルトの名無しさん
2014/06/06(金) 21:12:39.28ID:2p7Hju+qVBAのルールで、Dimの中で配列のサイズに変数は使えない、と決まっているから
実際にやってみればエラーが出るからすぐ確認できる
0935デフォルトの名無しさん
2014/06/06(金) 21:27:08.12ID:xrGe04ue0936デフォルトの名無しさん
2014/06/07(土) 11:14:14.46ID:7p+CDDc/前回作業時刻よりも1時間以降経過した後でないと同じ作業は出来ないようにしたいのですが、、、
If Now() < DateAdd("h", 1, Worksheets("main").Cells(7, 3)) Then
MsgBox "前回作業時刻よりも1時間経っていません。" & vbCrLf & _
DateAdd("h", 1, Worksheets("main").Cells(7, 3)) & " 以降に作業してください"
Exit Sub
Else
MsgBox "現在時刻:" & Format(Now(), "hh:mm") & vbCrLf & _
"直前作業時刻より1時間後:" & DateAdd("h", 1, Worksheets("main").Cells(7, 3))
End If
とすると、
現在時刻:11:12
直前作業時刻より1時間後:11:30:00
となってElse以降しか実行しません
時刻の比較ってどうするんでしたっけ?
0937デフォルトの名無しさん
2014/06/07(土) 15:30:59.32ID:SxbAzKvi0938デフォルトの名無しさん
2014/06/07(土) 16:25:46.19ID:7p+CDDc/If TimeValue(Now()) < TimeValue(DateAdd("h", 1, Worksheets("main").Cells(7, 3))) Then
でElse以前が動作できるようになりました
0939デフォルトの名無しさん
2014/06/07(土) 17:38:13.17ID:qI6lrvl+Cells(7, 3)に入ってる時刻がシリアル値なら、そんな長い式を書かなくてもこれでいける
If Now() < Worksheets("main").Cells(7, 3) + #1:00:00# Then
0940デフォルトの名無しさん
2014/06/07(土) 17:41:53.05ID:qI6lrvl+日付込みだとおかしくなる
ワークシート上のシリアル値は1900/1/1になってる可能性があるから
0941デフォルトの名無しさん
2014/06/07(土) 18:42:33.53ID:FLlpq6LcじゃVB6で良かったんじゃね?みたいな事になるよね
0942デフォルトの名無しさん
2014/06/07(土) 18:49:17.07ID:qI6lrvl+コンパイルどころかソースファイルすら作る必要がないという手軽さは他の処理系では真似できない
0943デフォルトの名無しさん
2014/06/07(土) 19:25:35.22ID:SxbAzKvihttp://cpplover.blogspot.jp/2014/05/blog-post_29.html
0944デフォルトの名無しさん
2014/06/10(火) 02:49:48.07ID:YTnem67Idata1,data2,data4が同じフォルダに入っている場合に、
存在しないdata3を飛ばしてファイルをすべて開くというテストプログラムを作っています
Sub test()
Dim I As Long
For I = 1 To 4
If Dir("C:\excel\dataI.xlsx") <> "" Then
Workbooks.Open "C:\excel\dataI.xlsx"
Else
End If
Next I
End Sub
これだとエラーは出ませんが、どのファイルも開きません
Iが文字として認識されているためにelse条件に引っかかっているのだと
思うのですが、ファイル名中のIを変数として認識させる方法はないでしょうか?
同じフォルダ中のファイルをすべて開く方法ならあるようですが、それだと意味が
ないのです。わかる方がいましたらよろしくお願いいたします。
0945デフォルトの名無しさん
2014/06/10(火) 03:33:00.72ID:hc4LiDN+Sub test()
Dim I As Integer
For I = 1 To 4
If Dir("C:\excel\data" & I & ".xlsx") <> "" Then
Workbooks.Open "C:\excel\data" & I & ".xlsx"
End If
Next I
End Sub
0946デフォルトの名無しさん
2014/06/10(火) 04:40:54.93ID:ZdnvVnA2Dim fn As String
fn = Dir("C:\excel\data*.xlsx")
Do Until (fn = "")
If fn Like "data#.xlsx" Then Workbooks.Open "C:\excel\" & fn
fn = Dir()
Loop
C:\excel 内の data数字.xlsx を全て開くというもの
まあ、「同じフォルダ中のファイルをすべて開く」の発展型みたいなもので
同じ方式を使いながら、対象を「すべて」ではなくDirとLikeで絞り込むだけの話
0947デフォルトの名無しさん
2014/06/10(火) 10:36:42.20ID:zXPv5kx2ありがとうございます
Iを"と&で挟むことは私も試したんですが、エクセルは両方で挟むんですね
これで行けそうです
>>946
ありがとうございます
今回はちょっと事情が特殊なんですが、普通ならこっちのほうがスマートな気もしますね。
勉強になりました。
0948デフォルトの名無しさん
2014/06/12(木) 22:39:19.22ID:JGtl8L6Jhttp://light.dotup.org/uploda/light.dotup.org28231.png
↑
データはこのような画像の通りにシート3つに分かれて存在しています。
どのようなマクロを組めばいいかお教え願いたいです。
ジャンルごとに変数というものを持たないといけないのでしょうか?
実際は母が使うので、ボタン一つで出来るのだとありがたいのですが・・・
大変面倒な質問ですが、お願いします
具体的なコードを教えてください
本当に困っていますお願いします
0949デフォルトの名無しさん
2014/06/12(木) 23:30:41.76ID:Edw1tGKl丸投げしたいのなら、完全な状態のブックをどっかにアップしてください
本当に困っていますお願いします
0950デフォルトの名無しさん
2014/06/13(金) 14:09:52.76ID:+wg+XXRx>>1
> ★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
> コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
> ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
0951デフォルトの名無しさん
2014/06/13(金) 14:29:39.15ID:QETwEf+A本スレとマルチだし、向こうでかなり暴れてたから
もうこっちには来ないと思う。
0952デフォルトの名無しさん
2014/06/14(土) 13:12:04.56ID:i5Ueiwm/印刷の代わりに使える分かりやすい言葉はないですか?
0953デフォルトの名無しさん
2014/06/14(土) 14:15:23.09ID:NIfTAMoHバーチャルプリント
0954デフォルトの名無しさん
2014/06/14(土) 14:54:03.19ID:i5Ueiwm/如何にもな言葉してますね…
ありがとうございます助かりました!
0955デフォルトの名無しさん
2014/06/24(火) 08:53:44.32ID:A58N03NN先頭の文字と「、」の後の一文字だけ大文字にすることってできるかな?
PROPERを使うと、Hoge Hoge、Huga Hugaみたいになるし、
UPPERは特定の文字だけ変換する方法わからんし、
できれば関数で簡単に処理したいんですが、無理かな?
0956デフォルトの名無しさん
2014/06/24(火) 09:44:48.41ID:qWqYgHU9普通に「、」でSplitして、ループ内で1文字目だけ大文字に変換して、Joinで再連結すればいいんじゃね?
関数にしたいなら、それを関数として定義すれば良いだけのことだし
1文字目だけ大文字にする方法はいくつかあるが
Midの関数ではなくステートメントの方を使うのが簡単かもな
0957デフォルトの名無しさん
2014/06/24(火) 11:03:40.25ID:A58N03NNそっかー。
簡単にできる関数が用意されてないかな?と思ったんだけど、無いんだね。
わざわざVBA作るほど沢山あるわけじゃないから、手で治すことにするよ。
アドバイスごち
0958デフォルトの名無しさん
2014/06/28(土) 22:46:48.16ID:SUZfbKz3EXCELは0行0列がないから1スタートにしてるんだけど
For文は変数を0と1のどっちでスタートさせてる?
0959デフォルトの名無しさん
2014/06/28(土) 23:05:08.46ID:++0JMPiRFORループ内でアクセスするオブジェクトに依存するんじゃね
オブジェクトに依存しない時は 1スタートの方が分かりやすいと思うが
0960デフォルトの名無しさん
2014/06/28(土) 23:08:57.04ID:SUZfbKz3さんくす
セルを参照したり、書きこむ場合は1スタートの方が便利だよぁ
C言語では0スタートが当たり前だから、FORの性質間違え易いんだよね
0961デフォルトの名無しさん
2014/06/28(土) 23:19:53.58ID:vnVg5isxケースバイケースで処理内容に合わせて適切な値を選ぶだけ
Forの性質とか意味不明
0962デフォルトの名無しさん
2014/06/28(土) 23:19:55.85ID:++0JMPiR0スタートになれてるなら
オブジェクトに依存しない時も 0スタートの方が混乱しないと思うぞ
0963デフォルトの名無しさん
2014/06/28(土) 23:26:55.43ID:vnVg5isx0964デフォルトの名無しさん
2014/06/28(土) 23:29:21.75ID:xYrnaOxY0965デフォルトの名無しさん
2014/06/29(日) 00:10:17.76ID:r3ERVTwDじゃあお前はお前のルールで統一しとけ
0966デフォルトの名無しさん
2014/06/29(日) 00:14:35.94ID:obj95/HS0967デフォルトの名無しさん
2014/06/29(日) 00:18:23.91ID:CZI2SpAG0968デフォルトの名無しさん
2014/06/29(日) 00:24:34.10ID:c8G3vdag1スタートに統一するなら他言語を wwwwww
'0スタート
'(A1:A10まてイミディエイトへ表示)
For I = 0 To 9
Debug.Print Cells(I + 1, "A")
Next
0969デフォルトの名無しさん
2014/06/29(日) 00:36:45.71ID:7WQEgw+o0970デフォルトの名無しさん
2014/06/29(日) 00:46:16.93ID:c8G3vdag関係ないねwwwww
0971デフォルトの名無しさん
2014/06/29(日) 01:39:14.46ID:obj95/HSこんなのはどうやって統一すんだよ
For i = -2.73 To 6.58 Step 0.52
いちいち0スタート増分1に書き直してたらコーディングの手間も増えるしバグの元だろ
0972デフォルトの名無しさん
2014/06/29(日) 01:54:33.08ID:ojuPNtQE何の目的でそんなバカコード書いてんだよw
0973デフォルトの名無しさん
2014/06/29(日) 02:10:25.03ID:c8G3vdag遊んでるならいいけどwwwww
マジレスならアホ
ID:xYrnaOxY のはただの煽りだから
0974デフォルトの名無しさん
2014/06/29(日) 05:01:33.62ID:r3ERVTwD増分は問題にしてないからな
開始値を1しか認めない教、または、0しか認めない教の人がいるだけ
ループ前にオフセット計算してループ内でオフセット足せばできる
0975デフォルトの名無しさん
2014/06/29(日) 07:06:48.40ID:7WQEgw+oそれ本当に0.52ずつ増える?w
0976デフォルトの名無しさん
2014/06/29(日) 07:44:51.13ID:r3ERVTwDiの型による
0977デフォルトの名無しさん
2014/06/29(日) 10:40:18.41ID:Pc4scBT70978デフォルトの名無しさん
2014/06/29(日) 10:48:45.73ID:37p3Fs6h特殊な値の場合は外出しするか
ループの中の計算式に入れるな、
自分なら。
0979デフォルトの名無しさん
2014/06/29(日) 11:09:04.04ID:37p3Fs6h条件で書くと無駄な計算式が入って
なくて読みやすい。
Vbaの場合は馴染まないな。
0980デフォルトの名無しさん
2014/06/29(日) 12:22:28.79ID:d4tnsDO5> 規定回数をFor文で回したい時って
VBA は、For I = ... To 10 で 10 まで回るから、1 スタートの方がいいと思う。
10回回すのに For I = 0 To 9 だと、ちょっと分かりにくいかと。
0981デフォルトの名無しさん
2014/06/29(日) 14:25:54.82ID:nMuEys5f0982デフォルトの名無しさん
2014/06/29(日) 15:16:49.14ID:U5JNCkXQ配列もArray(10)で宣言してインデックス0は使わないとかしちゃう
VB.NETのβ版でC系と同じにしようとして
Array(10)で宣言したら(0)〜(9)の要素10になる仕様にしたら
世界中のVB6プログラマからクレームがきて
Array(10)で0から10の要素11個という謎仕様継続になったそうな
0983デフォルトの名無しさん
2014/06/29(日) 16:40:26.72ID:tO69Jiz2こちらも 1, 1 から開始ですよ
0984デフォルトの名無しさん
2014/06/29(日) 21:25:17.92ID:ojuPNtQEそれ以上の意味を持たせようとするのは、変数を使いまわすようなもんだよ。
あまりいい習慣じゃないね。
0985デフォルトの名無しさん
2014/06/29(日) 21:35:24.84ID:brs7RvOR答えてくれた人ありがとう
EXCEL VBAきちんと勉強せずにC言語の知識を引き出しつつ書いてるから、ここの人の宣言方法が気になったんだけど、十人十色みたいだな
きちんと本読んで学習します
0986デフォルトの名無しさん
2014/06/29(日) 21:53:09.64ID:r3ERVTwDループカウンタを使わないループについてどう思ってる?
Forで使う変数はループカウンタでしか使えないと思ってる?
0987デフォルトの名無しさん
2014/06/29(日) 21:54:16.59ID:r3ERVTwD大丈夫だ。どうせみんな、単なる暇つぶしだから
0988デフォルトの名無しさん
2014/06/29(日) 22:00:41.18ID:ojuPNtQEFor Each の事?カウンタ使わないですむなら、その方がいいと思ってるけど?
For文で単なるカウンタ以外の用途に使うのは、あまりいい習慣じゃない。
というのが俺のスタンス。
0989デフォルトの名無しさん
2014/06/29(日) 22:26:05.04ID:TEKyyc0a0990デフォルトの名無しさん
2014/06/29(日) 23:34:53.93ID:/f6OgjXt0991デフォルトの名無しさん
2014/06/30(月) 00:09:32.16ID:kvKysRCzなる
勘違いして酷い目にあった
0992デフォルトの名無しさん
2014/06/30(月) 00:46:04.55ID:7oaDBF3M0993デフォルトの名無しさん
2014/06/30(月) 00:46:21.14ID:GUDWX1C/0994デフォルトの名無しさん
2014/06/30(月) 00:58:56.95ID:20WNNlQlループ終了で抜けたか Exit For で抜けたか判断してる
0995デフォルトの名無しさん
2014/06/30(月) 01:07:12.44ID:iijp9ipFここ2chではレス番号はfor文を1から1000で回してるため
1000番目の書き込みの後、自動的に1001番のレスでレス終了のメッセージを表示してる。
0996デフォルトの名無しさん
2014/06/30(月) 01:51:06.95ID:DNhhFBBaExit For の直前で i = 11 ってやってしまう可能性があるのでおすすめできない
ループに終了条件がある時はWhileとか使った方が安全
0997デフォルトの名無しさん
2014/06/30(月) 01:54:50.86ID:BzHZeElB0998デフォルトの名無しさん
2014/06/30(月) 02:07:33.39ID:f17tdAtrそんなこと言い出したらWhileの直前で終了条件いじることだって有り得るじゃん。
For Next でExit Forで抜け出すか正常にループが終了したかを
カウンタの値で判別するという処理を書いてるのに
Exit For の前でカウンタの値を変更するような馬鹿げたコードを書く奴は
そもそもプログラミングに向いてない。
0999デフォルトの名無しさん
2014/06/30(月) 02:17:18.34ID:20WNNlQlその可能性はWhileでも同じ
1000デフォルトの名無しさん
2014/06/30(月) 02:25:18.53ID:zp+CalxP処理系によっても異なるので、思い込みバグの元になる
試行錯誤で裏技テクニックを発見するのはいいけど、そういうのは大々的に使うべきじゃない
この危険性が理解できない人は、それこそプログラミングに向いてない
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。