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


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

Excel VBA質問スレ Part5



1 名前:デフォルトの名無しさん [2007/12/12(水) 17:27:44 ]
ExcelのVBAに関する質問スレです

質問前に 【 >>2-3 】 あたりを良く読むこと

前スレ
pc11.2ch.net/test/read.cgi/tech/1189814602/

313 名前:デフォルトの名無しさん [2008/01/10(木) 16:28:25 ]
オートフィルタを使ってデータベースの集計をしているのですが

1列目 2列目  3列目
A   B    タイトル

という風になっています。1列目と2列目は評価項目でA,B,C,D,E,Fのいずれかが記入されています
現在これをカウントしているVBAが、

3行目をオートフィルタで集計したいタイトルで搾り出す
1行目をAで抽出後、SubtotalでAの数をカウント
2行目をBで抽出後、Subtotalで…

となっています。昔はこれで十分だったのですが、次第にタイトルが増えてきて
全部やるとなると膨大な時間がかかるようになってきてしまいました。
1つのタイトルに付き単純に12回抽出→数えるとやっているので…

いちいちAで抽出→数える、Bで抽出→数える…と繰り返さずに、
タイトルで絞った後にCoutIFのようにAはいくつ、Bはいくつみたいな具合でやる方法はないでしょうか?
CountIFだと非表示のセルのA〜Fまで集計してしまって困っています

314 名前:デフォルトの名無しさん [2008/01/10(木) 16:39:34 ]
よーわからんけど..

Sub hogera_vs_mogera()
For i = 1 To 8
hoge = Range("A" & i).Value
If hoge = "A" Then hoge_counter = hoge_counter + 1
Next i
MsgBox hoge_counter
End Sub


315 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 18:11:37 ]
>>313
ピボットテーブルレポート使ってみて。


316 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 19:41:52 ]
セルに名前が "hoge"
とついてる場合
range("hoge").value = "ほげほげ"
と操作できますが

この名前 "hoge" の行 列の値を得る方法を
教えて下さい hogeが(1,5)なら
int row = 1
int col = 5
のように得たいです。


317 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 19:56:30 ]
Range("hoge").Row
Range("hoge").Column

318 名前:デフォルトの名無しさん [2008/01/10(木) 23:06:12 ]
質問なのですが、
Public Type SyainData
  Id As Long
  Name As String
End Type

Dim Kyo(5) as SyainData
と宣言しループ処理で関数の引数として2番目のNameを渡したいのですがどうすればいいですか?

319 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 23:19:01 ]
Kyo(2).Name

320 名前:デフォルトの名無しさん [2008/01/10(木) 23:23:03 ]
319さん、ByRefコンパイルエラーと表示されます。

321 名前:デフォルトの名無しさん [2008/01/10(木) 23:26:15 ]
319さん
ちなみにAユーザーフォームからNameに入力して
標準モジュールに定義してある構造体にそれぞれ格納した値をBユーザーフォームに出力したいのです。



322 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:19:38 ]
関数の呼び出し方と、関数の定義くらい書いたら? (先頭の、Sub/Function〜の行)
判断する情報が少なすぎる。


323 名前:316 mailto:sage [2008/01/11(金) 09:24:37 ]
>>317
ありがとうございました(^▽^)

324 名前:デフォルトの名無しさん [2008/01/11(金) 10:14:12 ]
VBAで実行中に「vbcritical」と共に、「400」って
数字が表示されるエラーはなんですか?

325 名前:デフォルトの名無しさん [2008/01/11(金) 14:21:13 ]
msgboxやinputboxの外観をもっと可愛くしたい!

326 名前:デフォルトの名無しさん [2008/01/11(金) 14:33:31 ]
スマン連投・・・
>>325はどうでもいいです

VBAを含むxlsを「共有」した途端に、そのvbaの挙動が微妙に変わってしまいました。
vbaの内容は、セル範囲をrangeで指定して、最下行にペーストするだけなんですが・・・。
なんか、ちょっとずれる感じなんです。ウィンドウの固定が原因かも。

共有と同時にVBAがロックされるので、原因の確かめようが無い状態(T-T

327 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 15:27:54 ]
質問の仕方すら何かズレてるみたいだし、しょうがないね。 そういう星の下に生まれたんだよ。


328 名前:326 [2008/01/11(金) 16:19:52 ]
共有の関係で、ペースト先の結合がバラバラになった模様・・・orz
こればっかりはどうしようもないですかね

保護されたセルに書き込むというのはvbaで何とかなりましたが・・・

329 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 16:48:30 ]
>>325
つAssistant

330 名前:デフォルトの名無しさん [2008/01/11(金) 18:07:53 ]
>>329
なるほど、カイル君が使えるんですね・・・
ありがとうございます

331 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 19:37:54 ]
>>328
このスレはオマイの進捗報告書かと




332 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:39:08 ]
winxpでExcel2003を使用しています。

VBA-Editorからの実行は正常で、ワークシート上のコマンドボタンからの実行だと
時々、Excelが強制終了します。
コードは変えていないのに、上記の状況が発生しないときもあります。

バグだと思うのですが、発生しない時もあるので、原因がつかめません。
そんな事ってありますか?

333 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 13:49:06 ]
>>332
あるよ。何か、以前にも出てたと思う。
クラスをインプリメントして、何かややこしいことしようとしてるヒトが居て、
エラーが出たり出なかったりするという話があった。基本的にはそれと同じ系統の問題では?


334 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 01:40:25 ]
winxpでExcel2003を使用しています。
以下のコードは、都道府県ごとに1枚のデータシートを作成する処理なんですが、コードが1行づつどんな作業を意味しているのかがわかりません。
1行ごとにどのような処理をしているのかの説明をよろしくお願いします。長文で申し訳ありません。

Sub まとめ()
Dim i As Integer 'カウンタ変数iの宣言
Dim n As Integer 
Dim MyS1 As Worksheet 'ワークシート型オブジェクトMyS1を宣言
Dim MyC As Worksheet

Worksheets.Add before:=Worksheets("全国")
ActiveSheet.Name = "data"
Set MyS1= Worksheets("data")
With Worksheets("全国")
MyS1. Range(MyS1.Cells(1,1),MyS1.Cells(11,12))=.Range(Cells(1,1),.Cells(11,12)).Value
End With

i=12
For Each MyC In Worksheets
If MyC.Name<> "data" Then
n = 12
MyS1.Cells(i,1)=MyC.Name
i=i+1
Do While MyC.Cells(n,2).Value<>""
MyS1.Range(MyS1.Cells(i,1),MyS1.Cells(i,12))=MyC.Range(MyC.Cells(n,1),Mc.Cells(n,12)).Value
i=i+1
n=n+1
Loop
End If


335 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 01:45:30 ]
Sub まとめ()←死ね
Dim i As Integer 'カウンタ変数iの宣言←死ね
Dim n As Integer ←死ね
Dim MyS1 As Worksheet 'ワークシート型オブジェクトMyS1を宣言←死ね
Dim MyC As Worksheet←死ね
←死ね
Worksheets.Add before:=Worksheets("全国")←死ね
ActiveSheet.Name = "data"←死ね
Set MyS1= Worksheets("data")←死ね
With Worksheets("全国")←死ね
MyS1. Range(MyS1.Cells(1,1),MyS1.Cells(11,12))=.Range(Cells(1,1),.Cells(11,12)).Value←死ね
End With←死ね
←死ね
i=12←死ね
For Each MyC In Worksheets←死ね
If MyC.Name<> "data" Then←死ね
n = 12←死ね
MyS1.Cells(i,1)=MyC.Name←死ね
i=i+1←死ね
Do While MyC.Cells(n,2).Value<>""←死ね
MyS1.Range(MyS1.Cells(i,1),MyS1.Cells(i,12))=MyC.Range(MyC.Cells(n,1),Mc.Cells(n,12)).Value←死ね
i=i+1←死ね
n=n+1←死ね
Loop←死ね
End If←死ね


336 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 04:26:19 ]
こんなひどい丸投げを久しぶりに見た・・・

337 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 05:08:47 ]
replace "\n" "←死ね\n"

338 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 05:10:22 ]
>>334
随分酷いコードだな
VBA始めて3日くらいの奴が書いたコードだろ

こんな下劣なコードの説明なんてまっぴらだぜ

339 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 14:25:58 ]
ある意味、微笑ましいコードだなw  VBならでは、とでも言うか。


340 名前:334 mailto:sage [2008/01/13(日) 14:39:48 ]
わからないのなら、レスくださらなくて結構です。
わかる方のみでお願いします。

341 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 14:58:48 ]
>>340
どうもすみません・・。



342 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 15:17:23 ]
要はググれということだ

343 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 15:18:17 ]
>>340
判るんだけどさぁ、それを説明するのはスレ違いだし、そもそも野暮だろ?

344 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 15:56:32 ]
>>340は馬鹿女


345 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 16:01:13 ]
馬鹿かどうかは重要じゃない
大事なのは写真だ

346 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 16:06:19 ]
>>340
1行ずつ説明が必要とかいう時点でおかしいと思わないか?
Dim i As Integerにも説明が必要なのか?どのレベルでだ?
Dimが何を意味して、Integerが何を意味するかまで解説するのか?
あるいは内部でIntegerがどのように管理されているかまで必要か?

処理ってのはある程度の塊で説明するのが普通だろ?
「ここはクラスの平均点を計算する」みたいな感じでよ。
文法がわからないのであれば入門書買うなりググるなりすればいい。
ピンポイントなら教えてやれても全部教えろとか金取りたくなるわ。

347 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 16:07:50 ]
写真なんかはどうでもいい。
動画だ。動画をよこせ。

348 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 16:11:57 ]
クリーチャーが「あたしはできる女なのよ!」とか自己紹介してる動画とかか?

349 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:03:19 ]
質問ですが、組み込みダイアログボックス(例えばApplication.Dialogs(xlDialogPrint).Show)の
ウィンドウハンドルを取得するには、どうすればよろしいでしょうか?

APIを使って行うと思いますが、Excel本体やユーザーフォームのウィンドウハンドルの取得であれば
ググれば出てきたのですが、組み込みダイアログボックスのウィンドウハンドルの取得は
見つけることができなかったので、よろしくお願いします。

350 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:15:02 ]
Spy.exe

351 名前:デフォルトの名無しさん [2008/01/14(月) 06:14:32 ]
>>334
i=12
iに12を設定する

For Each MyC In Worksheets
MyCごとの処理です

If MyC.Name<> "data" Then
n = 12
MyC.Nameがdataと違うときは、nに12を設定する

MyS1.Cells(i,1)=MyC.Name
i=i+1
MyC.NameをMyS1 の(12,1)に設定して、iを13にする

Do While MyC.Cells(n,2).Value<>""
MyCの(12,2)が空じゃなければ、以下の処理を繰り返す

MyS1.Range(MyS1.Cells(i,1),MyS1.Cells(i,12))=MyC.Range(MyC.Cells(n,1),Mc.Cells(n,12)).Value
MyS1の(13,1)から(13,12)に、 MyCの(12,1)から(12,12)を設定する

i=i+1
n=n+1
Loop
iを14に、nを13にして Do Whileに戻り、
MyCの(13,2)が空じゃなければ、また処理を繰り返す
MyS1の(14,1)から(14,12)に、 MyCの(13,1)から(13,12)を設定する
その次はMyS1の(15,1)から(15,12)に、 MyCの(14,1)から(14,12)を設定する
というふうに、iとnは1ずつ大きくなり、MyCの(n,2)が空になると処理をやめる

End If



352 名前:デフォルトの名無しさん [2008/01/14(月) 07:47:13 ]
zoomtv.web.fc2.com/?&&1xbr0&0154%?&&1xbr7&0734%?&&1xbr0&0154%@ParadiseCityTV

353 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 08:10:03 ]
>>351
やさしいにもほどがあるな

354 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 09:41:33 ]
教えたがりは一種の荒らし

355 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 10:18:46 ]
中途半端なヤツほど、簡単な質問に答えたがる。

結局、自分自身の頭の整理をしてるんだろうな。


356 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 10:53:34 ]
>>353-355
君たち気持ち悪いよ。


357 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 11:21:53 ]
このスレ気持ち悪いよ

358 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 11:31:16 ]
このスレ気持ち悪いよ 

359 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 11:48:28 ]
このスレ気持ち悪いよ

360 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 13:42:05 ]
おいおいどう見ても皮肉のレスだろ
求めてる答えがあれなら質問の意味がないと思うぞ

361 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 14:04:34 ]
だれも回答しないから自分で書いたんだろうな



362 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:30:10 ]
質問スレって所で答えては駄目だと。じゃぁ、このスレの存在意義って何さ。

363 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:50:09 ]
教えたがり撲滅

364 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:58:48 ]
>>362
ごきぶりほいほい

365 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 20:43:59 ]
要は面倒なことはやりたくないだけだろw

366 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:43:08 ]
>>362
> 質問スレって所で
そう、ここは質問スレであって、
自社商品を購入してくれた顧客相手のサポートセンターでも
受講料を支払ってくれた生徒相手のスクールでも無い

367 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:14:23 ]
要は面倒なことはやりたくないだけだろ

368 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:15:24 ]
ここは無知な人間をののしるためのスレに決まってんじゃん

369 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:21:18 ]
昔はそれなりにレスが付いていたが、今となっては・・・ね

370 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:05:33 ]
Excel VBA回答スレが必要だな

371 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:41:49 ]
質問です。
OS: xp pro
EXCELバージョン :2003

RGB値を使いセルの塗りつぶしを行いたいと思い、
Cells(1, 1).Interior.Color = RGB(227, 229, 223)と記述しました。
しかし実際セルの色を見てみるとまったく違う色が塗られていました。
色を解析するソフトでその色のRGB値を調べてみるとRGB(204,255,204)でした。
もうわけわかりません、アドバイスお願いします。



372 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:51:12 ]
>>371
RGB(255, 0, 0)なら赤になるか?
なるならcells( i, j )にRGB( i, j, 0 )を入れたときに正しいグラデーションになるか?
RGB解析ソフトでRGB(255, 0, 0)等が正しく読み取れるか?

これくらい試してみてくれないか?

373 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:21:22 ]
>>372
ありがとうございます、試してみました。
RGB(255, 0, 0)なら赤になるか?→ なりました。
cells( i, j )にRGB( i, j, 0 )を入れたときに正しいグラデーションになるか?

For w_row = 1 To 256
For w_gyo = 1 To 256

ThisWorkbook.Sheets(3).Cells(w_row, w_gyo).Interior.Color = RGB(w_row, w_gyo, 0)
Next
Next
を試したところ正しいグラデーションにはなりませんでした。
参考画像です。ttp://nagamochi.info/src/up0296.jpg
ツール→オプション→色で表示したい色を追加すると表示できました。
これ以外には方法はないのでしょうか?

374 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:25:01 ]
>>371
エクセルは全てパレット管理。
パレットの色しか表せない。パレット以外の色をVBA等で選んでも近いパレットの色を使用させられる。
  ↓
すなわちパレットを変更すればいい

>ツール→オプション→色で表示したい色を追加すると表示できました。
>これ以外には方法はないのでしょうか?
その表示できた方法をマクロの記録で記録してやればいい。



375 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:46:21 ]
>>374
解決できました、ありがとうございました。

376 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 11:36:29 ]
>>351
ありがとうございました!

377 名前:334 mailto:sage [2008/01/15(火) 11:42:32 ]
>>351
そんなことを聞いているわけじゃありません、冗談は勘弁してください。

378 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 14:45:05 ]
もっと言ったれw

379 名前:デフォルトの名無しさん [2008/01/15(火) 18:52:50 ]
>>334=377

ぷっっ て、ところだけど、何をききたいのか、言ってみたら。
折れが笑ってあげるからw


380 名前:379 mailto:sage [2008/01/15(火) 20:05:12 ]
解決しました

381 名前:デフォルトの名無しさん [2008/01/15(火) 20:49:36 ]
>>380
おまい、アンカーもようつけんで、・・・www




382 名前:379 [2008/01/15(火) 20:52:47 ]
>>380
は偽者です。

383 名前:379 mailto:sage [2008/01/15(火) 21:08:38 ]
>>382
お前も偽物だろうがw

384 名前:379 mailto:sage [2008/01/15(火) 21:32:44 ]
俺は偽物ですよ

でも>>380は本物ですよ

385 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 01:17:42 ]
>>379
>>334=377
いいえ、等しくありません。

386 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 10:06:13 ]
>>373
どうでもいいが、RGB()関数って256を指定してもエラーにならないのか、知らなかった。

387 名前:デフォルトの名無しさん mailto:age [2008/01/16(水) 13:00:24 ]
項目とデータを含んだ2次元配列変数A,B たとえばA(30×2),B(100×2)があり、
Bの100個の項目のなかからAの項目30に該当するものをそのままAのデータに代入したい
ということを考えています。ワークシート上で行う場合はlookup関数を使えばよいのですが
マクロのままで高速に行う方法はないものでしょうか?
ワークシート関数を使ったとしても一度ワークシートにデータを書き出さなければ
つかえないのでしょうか?色々調べても分からなかったので
どなたか御教示頂けると嬉しいです。

388 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:26:11 ]
>>387
ん? というか、既に処理を書いてるんだったら、
VBAで処理してからワークシートに吐いた方が、そりゃ若干早いはずだと思うが。


389 名前:デフォルトの名無しさん mailto:age [2008/01/16(水) 13:46:00 ]
あ、すみません。Bの項目、データは揃っていますが、Aは項目だけで
B100個の項目の一部でAの30個の項目と重複しているものを検索、抽出して
Aの該当する項目のデータとして代入しようとしています。
ワークシートの上でやるのなら、lookup関数をつかえば良いのでしょうが
ワークシートを一切いじらずに配列の内部処理だけで同様な操作を高速に
できないかと悩んでいる次第です。


390 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 14:21:54 ]
>>389
Dim i, j As Integer
Dim AKey(30), AValue(30), BKey(100), BValue(100)

For i = 0 To 29
  For j = 0 To 99
    if AKey(i) = BKey(j) Then AValue(i) = BValue(j)
  Next j
Next i


こういう事かな?
この程度の個数ならワークシートでやってもほぼ一瞬だと思うけど。

391 名前:デフォルトの名無しさん [2008/01/16(水) 17:41:03 ]
質問。

セル[A2:C2]に英語・数学・国語の得点が入っている。合計点を計算し、
セル[D2]に入れるマクロを作成しなさい。
また、合計点が270点以上の時には「大変よくできました」、
180〜269点のときには「よくできました」、
180点未満のときには「がんばろう」というメッセージをセル[E2]に表示しなさい。

英語の得点は90点
数学の得点は85点
国語の得点は100点 とする。

よろちくね。




392 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 18:03:29 ]
>>391
それは質問とは言わないような・・・。


Sub Macro()
 Range("D2") = Range("A2") + Range("B2") + Range("C2")

 Select Case Range("D2")
 Case Is >= 270
  Range("E2") = "大変よくできました"
 Case Is >= 180
  Range("E2") = "よくできました"
 Case Else
  Range("E2") = "がんばろう"
 End Select
End Sub

393 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 19:17:08 ]
デフォルトプロパティの省略はやめましょう
少なくとも他人にコードを渡すときは

394 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:49:52 ]
2007で作ったマクロは何であんなに重くなるんだ。
一旦5.0で保存したら軽くなったんだけどまともに動かなくなるし。
これから2007が標準になっていくのかと思うと憂鬱だ。

395 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:59:19 ]
うちの会社、未だに2000使ってて、GJ!!!
自宅の自前PCも、2000のまま。サポートし続けろよ>MS


396 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:02:13 ]
Office 2000
メインストリーム サポート : 2004 年 6 月 30 日終了
延長サポート 期間 : 2004 年 7 月 1 日から 2009 年 7 月 14 日まで
(修正プログラム サポートには最新のサービス パックがインストールされている必要があります)

397 名前:デフォルトの名無しさん [2008/01/17(木) 10:00:49 ]
>>390 ありがとうございます。
やりたいことはそういうことなのですが、
その書き方だと要素が膨大になった時は明らかに遅くなると思います。
VBA上で高速に行う書き方などご存知ありませんでしょうか?

398 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 10:22:24 ]
>>397
アルゴリズム的な話なら、手法はいろいろあるが、「VBA上で高速に行う書き方」ではなく
「VB言語で高速に行う書き方」になるので、例えExcelでやるとしてもスレ違いだよ >>2★3★4

399 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:14:43 ]
>>397
参照される側(ここではB)をCollectionにすればO(n)なるよ。

Dim i As Integer
Dim AKey(30), AValue(30)
Dim B As New Collection

For i = 0 To 29
 AValue(i) = B.Item(AKey(i))
Next i

400 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:51:13 ]
各都道府県に分けられているデータをdataという名前のシートに集計するプログラムを作成したいです。
簡単に言いますと1つのシートに47個のシートを入れたいです。
よろしくお願いします


401 名前:デフォルトの名無しさん [2008/01/17(木) 12:51:36 ]
>>392 さん
ありがとうございます。



402 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:37:20 ]
>>400

>1つのシートに47個のシートを入れたいです。


意味不明
1つのブックに47個の県別シートを作りたいという意味なのか?
逆に県別に47個あるシートから1つのdataって言う名前のシートに集計したいってことなのか?
どのセルに何をどういう条件で集計するのかも書いていない。




403 名前:デフォルトの名無しさん [2008/01/17(木) 22:54:26 ]
質問です、VBA構造体配列を初期化したいのですがどうすればいいですか?
調べたのですがよくわかりませんでした。

404 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 23:16:07 ]
初期化用の構造体を作って代入

405 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:46:52 ]
初期化用関数作る

406 名前:デフォルトの名無しさん [2008/01/18(金) 01:31:22 ]
403です。
404.405さん以外のやり方を探しているのですがEarseの使い方やZreoMemoryの使い方がわからないです

407 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 02:43:12 ]
>Earseの使い方やZreoMemoryの使い方がわからないです
そりゃそうでしょう、そんなものありませんから。

408 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 08:27:07 ]
>>403
その辺の仕様はVB6と一緒です
つまり>>2★3★4

409 名前:デフォルトの名無しさん [2008/01/18(金) 11:59:04 ]
VBAを実行する前に、このブックが共有されているかどうか
調べて、結果を返す方法は無いでしょうか。

410 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:20:06 ]
>>409
Workbook.MultiUserEditing で調べられるけど、これはVBAだからダメってこと?


411 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 12:25:45 ]
VBA実行してからまたきてね♪




412 名前:デフォルトの名無しさん [2008/01/18(金) 12:31:44 ]
ありがとうございます!
いえ、multiuserediting の存在を知りませんでした・・

413 名前:397 mailto:sage [2008/01/18(金) 14:55:18 ]
>>398,>>399さん、判りました。自分でもまた試してみます。
ありがとうございました。






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

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

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