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


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

Excel VBA 質問スレ Part23



1 名前:既定のプロパティさん mailto:sage [2012/01/29(日) 00:05:13.16 ]
01 pc11.2ch.net/test/read.cgi/tech/1054356121/
02 pc11.2ch.net/test/read.cgi/tech/1168308855/
03 pc11.2ch.net/test/read.cgi/tech/1180192018/
04 pc11.2ch.net/test/read.cgi/tech/1189814602/
05 pc11.2ch.net/test/read.cgi/tech/1197448064/
06 pc11.2ch.net/test/read.cgi/tech/1205231499/
07 pc11.2ch.net/test/read.cgi/tech/1212587819/
08 pc11.2ch.net/test/read.cgi/tech/1219673793/
09 pc11.2ch.net/test/read.cgi/tech/1228372971/
10 pc12.2ch.net/test/read.cgi/tech/1235332603/
11 pc12.2ch.net/test/read.cgi/tech/1241885130/
12 pc12.2ch.net/test/read.cgi/tech/1247566074/
13 pc12.2ch.net/test/read.cgi/tech/1254281104/
14 pc12.2ch.net/test/read.cgi/tech/1262748898/
15 pc12.2ch.net/test/read.cgi/tech/1271261239/
16 hibari.2ch.net/test/read.cgi/tech/1280045912/
17 hibari.2ch.net/test/read.cgi/tech/1289182437/
18 hibari.2ch.net/test/read.cgi/tech/1298240666/
19 hibari.2ch.net/test/read.cgi/tech/1305754555/
20 hibari.2ch.net/test/read.cgi/tech/1312435844/
21 hibari.2ch.net/test/read.cgi/tech/1316931607/

前スレ:
Excel VBA 質問スレ Part22
toro.2ch.net/test/read.cgi/tech/1322400978/


522 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:31:33.21 ]
イミディエイトウィンドウは200行がMAXで不可変らしいね。

>>519
「オートフィルタ カウント」 でぐぐればいろいろ出てくる

523 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 13:57:19.01 ]
>>516
それimmediateの意味とはちがくね?
immenselyとかimmensityの意味じゃね?

524 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 15:07:58.10 ]
>>523
直接の〜、とか 即時の〜 という意味だね。
形容詞だね。

ホントどうでもいいけど

525 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 20:33:40.70 ]
>>516
immediateはどうかんがえたって即って意味だろ

526 名前:デフォルトの名無しさん [2012/03/07(水) 21:21:07.31 ]
ユーザーフォームを使おうと思ったのですが、
閉じるボタンを押した時、必ずフリーズします。
何故でしょうか。

527 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 21:37:14.41 ]
>>526
ボタンを押した時に実行されるコードを何故貼らない

528 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 21:37:33.25 ]
>>526
壊れているのかもな

529 名前:526 [2012/03/07(水) 21:42:22.61 ]
すみません。526です。
セルをダブルクリックで呼び出すことにしていまして、
閉じるボタン押した時、セルが編集可能状態である為エラーが出るみたいです。
(ボタンで呼び出した場合は普通に閉じれました。)

コードの中身はなく、ひとまずフォームを作った感じです。

ダブルクリックでフォーム呼び出しはやるべきではないのでしょうか。

530 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 21:50:53.38 ]
Cancel = False



531 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 23:34:23.81 ]
教えてください。
まず変数aに1を代入し
DO LOOPの中でaを5にしました。

その後aを使うと元の1に戻っているのですが、
これは仕様ですよね?

この5という数値を使う方法はありませんか?

532 名前:デフォルトの名無しさん [2012/03/07(水) 23:41:52.46 ]
>>531
仕様がないAH0

533 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 00:12:08.65 ]
VBAの変数にループ内のスコープなんてなかったよな?
>>531
とりあえずコード貼れ



534 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 00:19:44.48 ]
>>531
a = 1
Do
  a = 5
Loop Until True
MsgBox a

535 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 00:22:36.75 ]
>>533
すみません。質問した者です。
変数に追加していくのではなく、
毎回上書きしていただけでした・・・
初心者でごめんなさい。

' Do
' If r = 1 Then
' Exit Do
' End If

' total = Cells(r, 4)
' r = r - 1
' Loop


536 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 00:56:45.28 ]
>>535
謎すぎるけど解決したなら、よかった

537 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 01:01:53.11 ]
for系でないループで
中をIfとExitで制御している形はけっこう危険なんだよね。
思わぬ条件で抜けたり
一度も通らない経路ができたりする。

538 名前:デフォルトの名無しさん [2012/03/08(木) 01:02:17.51 ]
=LEN(A1)
=LEN(A2)
=LEN(A3)

みたいな値をB列にA列の終わりまで入れていくにはどうしたらいいですか?
For文で回すんでしょうか・・・?

データの最終位置を取得するのに、「End(xlDown).Row」と、「(Rows.Count, 1).End(xlUp).Row」
ってどう違うんでしょうか?


MsgBox "End(xlDown).Row : " & Cells(1, 1).End(xlDown).Row
MsgBox "(Rows.Count, 1).End(xlUp).Row :" & Cells(Rows.Count, 1).End(xlUp).Row


を、マクロ開始前のセルの位置をズラして色々やってみても結果は同じでした・・・。

539 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 01:33:09.38 ]
>>538
Cells(1, 1).End(xlDown).Row は上から順番に見ていく
途中に空白があると、それより下のデータは無視される

Cells(Rows.Count, 1).End(xlUp).Row は下から順番に見ていく
最終行までびっちりデータが入っている場合を除いて、本当の一番下がわかる

540 名前:デフォルトの名無しさん [2012/03/08(木) 01:45:52.43 ]
>>539
分かりやすい説明をありがとうございました。

で、
=LEN(A1)
=LEN(A2)
=LEN(A3)
みたいのを入れてくには、やはりFor文で回すのでしょうか?



541 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 02:04:48.60 ]
>>540
数十行程度ならForでもいいと思う
もっと大量にある場合はオートフィルの方がプログラムがすっきりするし処理スピードも速いはず

542 名前:540 [2012/03/08(木) 02:21:23.52 ]
>>541
ありがとうございます!
ググってみたところ、

Range("B1").AutoFill Destination:=Range("B1", Range("A65536").End(xlUp).Offset(, 1))

でいけるみたいです!この方が頭よさそうだし、スッキリ見やすいし、これでいきます!

おかげさまで安眠できます。
夜分遅くにお付き合いいただき、ありがとうございました!

543 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 21:37:27.17 ]
P列に区分として1又は9を入れた時、Q列に当日の日付を入れたい
で、その行位置は範囲は
2行目からlastrow = Cells(Rows.Count, "A").End(xlUp).Row
までとしてこういう時
どういう風に Worksheet_Changeに書けばいいんでしょ?

544 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 22:20:58.13 ]
>>543
何がわからないの?

545 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 22:24:19.73 ]
>>543
何も考えずにやれば、こう
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To lastrow
    If Cells(i, "P").Value = 1 Or Cells(i, "P").Value = 9 Then
        Cells(i, 17).Value = Now
    End If
Next

ただし、Worksheet_Changeでこれやっちゃうとループするので
違う所でやるか、変更箇所のチェックしてQ列なら変更しないとかの工夫が必要


546 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 22:26:58.87 ]
だからP列に1又は9を入れた時、その横に当日日付を入れたい
で、どう書けば良いのか?って聞いてんですけど

547 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 22:31:28.83 ]
リロードしてなかった。。。
>>545
ありがとうございます。
それを元にまた勉強してみます

548 名前:デフォルトの名無しさん [2012/03/09(金) 00:27:00.69 ]
結構ggったのですが解決しないのでどなたかご教授ください!!
if
以下の3セルの内容が数字(全角・半角)でないとき
処理Aを行う
Sheet1.Cells(y, x)
Sheet1.Cells(y, x+1)
Sheet1.Cells(y, x+2)

else if
Sheet1.Cells(y, x)のみが数値(全角・半角)でないとき処理Bを行う

という処理を掛けたいです。
別の言い方をすると、セルが文字・全半角スペース・空の時に処理を掛けたいです。
If not と IsNumberで出来ると思いきや上手くいってません。
お願いいたします。



549 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 00:27:09.17 ]
>>545
cells(i,16)で書くよりCells(i,"P")で書いたほう
列が非表示だったら時便利ね!とか、関係ないことをオモタ


550 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 01:08:49.15 ]
With Sheet1

a = StrConv(.Cells(y, x), vbNarrow)
b = StrConv(.Cells(1, x + 1), vbNarrow)
c = StrConv(.Cells(1, x + 2), vbNarrow)

End With

If IsNumeric(a) = "False" And IsNumeric(b) = "False" And IsNumeric(c) = "False" Then
処理A
End If

If IsNumeric(a) = "False" And IsNumeric(b) = "true" And IsNumeric(c) = "true" Then
処理B
End If

ベッタベタでよければ どうぞ。




551 名前:デフォルトの名無しさん [2012/03/09(金) 01:15:04.82 ]
>>550
ありがとうございます試してみます!!
IsNumeric IsNumberの使い方もあまりわかっていなかったので助かりました。

552 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 02:42:06.08 ]
>>550
IsNumericはBooleanなんだが、なぜ文字列で判定する?

ちなみにIsNumericは、全角の数字でもTrueの判定するから、StrConvする必要はなかったりする
指数表記も認めたりするから、数字の定義によっては注意が必要

553 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 03:03:03.65 ]
>>552
””いらないね。あっても動くけど。

If not IsNumeric(a)  And not IsNumeric(b) And not IsNumeric(c)
で書いてたんだけど、解りにくいかと思ってやった。
今は反省している。



全角の数字判定は知らんかったわ。便利ね。
ありがとう

554 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 23:40:36.42 ]
VBAは、無くなるの?

555 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 23:51:09.95 ]
それは目出度い

556 名前:デフォルトの名無しさん [2012/03/10(土) 00:40:01.35 ]
JSサポートするという噂話だけ


557 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 01:21:54.25 ]
VBAにJavaScript???

558 名前:デフォルトの名無しさん [2012/03/10(土) 16:17:05.72 ]
1行につき2シートずつ追加するマクロ(簡単に言うと)があります。

これが、72行ぐらいになって、シート数が159を超えたあたりから、シート追加の
「Copyメソッドが失敗しました」とエラーになります。

実際、そのブックでそれ以上シートを追加しようとしてもできません。
ググってみたところ、シート数に上限などはないようですが、メモリに依存するようです。

1枚1枚のシートは、それほど情報量はないのですが、Vlookup関数を多用してますので、
それもメモリを食っているかもしれません。
シート名も、平均22文字ぐらいあって、とても長いです。

一連のマクロは、一度も保存せずに、メモリ内だけで行っています。

データは、60行〜80行ぐらいまである時もあり、一括管理できるようにするため、
やはり1つのファイルに収めるのが理想的ではあります。。

どうすれば、このエラーを回避できるでしょうか?

559 名前:デフォルトの名無しさん [2012/03/10(土) 17:53:10.37 ]
それってあるデータを見栄えのいいように整形するためにシートを作ってるって解釈でいいの?

560 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 18:26:11.05 ]
試したけど、空白シートをただ追加するだけなら5000シートでも問題なかった
Excel2007 on Win7

シート毎の有効行やvlookupなど、少しずつ条件を変えて状況が変わるか試してみたら?
原因が特定できれば対処も考えやすいと思う



561 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 19:17:20.06 ]
まず数百もシート作るっていう設計を考え直した方がいいんじゃないかと

562 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 21:48:45.31 ]
ここは64bit版の出番だな。

563 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:17:58.69 ]
Range("A1").Characters(Start, Length).TextのLengthに256を超える数値は指定できないんでしょうか?
257以上を指定したらCharactersクラスのTextプロパティを取得できませんってエラーが出るんです…

564 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:42:09.93 ]
>>563
うちの2007ではちゃんと動いてる
環境かけ

565 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:49:30.49 ]
>>564
Windows7 64bit版、Excel2010 32bit版です。。

566 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:52:16.01 ]
ntの頃は、鯖と普通のやつの違いがレジストリのどっかが違うだけだったネタがあったな

567 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:53:02.68 ]
>>566 誤爆

568 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:54:11.13 ]
今試したらRange("A1").Characters(Start, 257).Font.Bold = Trueとかは動くのに
Textプロパティだとエラーが出てしまいます。。
やりたいことはTextプロパティを使わなくてもできるので別の方法考えてみます。

569 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:03:29.53 ]
>>568
Length=256なら本当にOKなの?

570 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:07:39.75 ]
>>569
MsgBox Range("A1").Characters(1, 256).Text
MsgBox Range("A1").Characters(1, 257).Text
の両方を試して256はOKでした



571 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:11:18.10 ]
>>570
うちは同じ環境だけど、エラーでない

572 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:15:31.25 ]
>>571
ですよねぇ・・・
今までもRange("A1").Characters(Start, Length).Textという書き方は何度もしてきたと思うし
こんなエラーに出会ったことがないので、たぶん私が何か見落としてるんだと思います。
もうちょっと調べてみます。ありがとうございました。

573 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:22:58.34 ]
質問です。

今、ウインドウ枠の固定を使って、上から3行だけを固定で表示させるようにしています。
この固定部分にボタンを配置して、マクロを登録しようと考えています。

それで、ホイールを回せば4行目から下が上下にスクロールするわけですが、ホイールを
回して下に適当にスクロールさせて、固定部分のボタンを押す。
そうすると「画面に表示されている」上から4行目のセル番地を取得する。
そういうマクロを作成したいんですが、これは可能でしょうか?

すみませんがよろしくお願いします。

574 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:33:19.28 ]
>>573
MsgBox ActiveWindow.ScrollRow + 3

575 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:42:17.38 ]
>>574
おお!できた!
多分できないかなーと思ってたんで嬉しいです。
ありがとうございました。

576 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 00:33:01.82 ]
>>572
うちの2007でも、TextやCaptionを取得しようとするとエラーになるな
でも設定してもエラーにならずに正常に動く

Dim c As Characters
Set c = Range("A1").Characters(0, 260)
MsgBox c.Text   'ここでエラー

おかしいのはRange.Charactersメソッドじゃなくて
CharactersクラスのTextメソッドだな

エラーのMsgBoxの行を変えてテストした
c.Text = String(25, "W") 'これは正常に動作
c.Text = String(250, "W") 'これはエラーは出ないが動作してない
c.Text = String(256, "W") 'これはエラー

どうも怪しげな動作してるな


577 名前:デフォルトの名無しさん [2012/03/11(日) 02:56:35.77 ]
Excelってなんでもできるんだなー
Excelで

578 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 04:55:25.47 ]
それは無理

579 名前:510 mailto:sage [2012/03/11(日) 09:10:27.01 ]
誰か>>510 知ってる人いませんかね。
OSはXPでエクセル2002です。

580 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 09:39:05.54 ]
フォームの場合、エクスポートしたファイルには
フォームやそこに配置したコントロールのプロパティと
プログラムコードが1つのファイルに書かれているわけだが
インポートしたときにプロパティ領域とコード領域を分ける空行部分が
コードエディタ側に読み込まれるってだけの話だろ



581 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 09:45:34.73 ]
>>580
分かりやすい回答ありがとうございました。

582 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 10:09:37.71 ]
え、formってimportできるんすか?!!
この前 outportしてそのままimportしたら、class moduleになったので、もうてっきり無理なんだと。。。

583 名前:558 [2012/03/11(日) 14:30:33.27 ]
>>559
ええと、業務用です。
取引先ごとに、表紙と帳票をセットにして、FAXするのですが、今までは帳票だけを
ガーッと保存もせずに、シート追加して作成するマクロがあって、別にFAXの表紙だけを
まとめたExcelファイル(取引先300件分のシートがあって、3,3Mくらいのファイル)
の中から、該当の取引先宛の表紙を探して、総FAX枚数や、帳票内の集計数なんかをちょちょっと
直して、印刷して、帳票とマッチングしてFAXしてたんですが、データ(取引先)が
72件もあると、結構2時間ぐらいかかる作業なんです。

この仕事を引き継いだ、元ヘタレPGの私としましては、なんとしてもマクロ化
しちゃいたい衝動にかられまして、FAX表紙は、ざっと3パターンしかなかったので、
取引先を一覧にして、表紙のテンプレに、Vlookup()で引っ張ってきて、
表紙と帳票とセットでシート追加するようにマクロを組んだんです。

そうしたらこのエラーです。
まあ、限界に挑戦するマクロだとは思うんですが、、元々の量の倍になってる
訳だし、、やっぱりファイルを分けるしかないのかな・・。

メモリを食ってる部分が、VlookUPなのか、シート名なのか、それともファイルを
保存してないせいなのか、ある程度でも分かれば、そこを対処してから、ファイルを
分ける方向で行こうかと思って質問させて頂いた次第です。

ひょっとしたらスレチかもしれませんが・・・。

584 名前:558続き [2012/03/11(日) 14:31:55.26 ]
計算式より、値が入ってた方がExcelのメモリは食わないんでしょうか・・・?
ちなみにファイルサイズは、2.3Mくらいです。

ここ↓
oshiete.goo.ne.jp/qa/3047947.html
で、詳しく説明して下さってる方がいるんですが、ここでいう、「配列数式」や
「揮発性(volatile)関数」ってのが何のことなのか、いまいち分かりません。。
VlookUPのことなのか?だとしたら、VlookUPをマクロでやってしまった方がいいんだろうか・・・

長々とすみません。お知恵をお貸しくださいますと幸いですm(_ _)m

585 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 14:38:02.97 ]
vlookupでもシートでも話聞く限り、そこまでメモリ食う感じがしない
顧客名全部仮の名前にして、FAX表紙も適当なものに差し替えてファイルアップすれば
もっと具体的なアドバイスもらえるんじゃないかな


586 名前:558 [2012/03/11(日) 14:51:48.85 ]
>>585
ありがとうございます。

ファイルは会社にあるので、アップするとしたら明日以降になりますが・・・。

最初のシートに、全ファイルの目次を作って、目次から、各シートに飛べるように
ハイパーリンクを組んだんですが、ひょっとしたらそれがいけなかった・・・?

VBA初めてなので、ソース見ていただいた方がいいかもしれませんね。。

587 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 15:01:52.27 ]
あと、エラーがでた環境も詳しく
OS、Excel、メモリ

588 名前:558 mailto:sage [2012/03/11(日) 15:16:02.07 ]
>>587
了解しました!(OSはXP、Excelは多分2003・・・)

589 名前:デフォルトの名無しさん [2012/03/11(日) 15:56:09.31 ]
Vista.sp2,Excel2000
新しいExcelで,Excel2000のソートコードが動くでしょうか
使っているコードです

sh2.Range("e9").Select
Rows("11:45").Select
Selection.Sort Key1:=Range("A11"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin
sh2.Range("e9").Select

590 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 16:18:23.96 ]
>>589
動くよ



591 名前:デフォルトの名無しさん [2012/03/11(日) 16:38:44.83 ]
>>590
ほんとにありがと


592 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 16:45:48.72 ]
VISTA Excel2007
微妙にスレチっぽくて恐縮なのですが…
ExcelからADOでAccess2010ファイルに接続したいのですが
udlファイルを作成して、ダイアログでProviderとData Sourceを指定、接続テストも通るのに、
いざ次のコードでそのudlファイルを指定するとエラーになります
([ODBC Driver Manager]データソース名および指定された既定のドライバが見つかりません)
原因分かる方いますでしょうか
ADODBCon.Open UDL01_fPath

またExcelVBAでudlファイルのProviderの値の取得方法ってあるのでしょうか?
Data Sourceの値は以下のコードで取得できたのですが、Provider値の取得方法が分かりません
以下のコードでData Sourceの部分をProviderに置き換えてもエラーに
With CreateObject("ADODB.Connection")
.ConnectionString = "FILE NAME=" & UDL01_fPath
DB_FPath = .Properties.Item("Data Source").Value
  End With

以下、udlファイルの中身です
[oledb]
; Everything after this line is an OLE DB initstring
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\test\DB\Database1.accdb;Persist Security Info=False

593 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 16:57:24.25 ]
補足
UDL01_fPath    ’udlファイルのフルパス

udlファイルにアクセスする前に、udlのData Sourceに格納されたDBファイルの
存在チェックを入れており、その部分ではエラーがないので、
Providerの指定でエラーが起きてると思うんですが分かりません

最初はudlファイルのProviderとData Sourceの値をコード内で指定していたのですが、
その時はエラーはありませんでした
その時の値とをテキスト上にコピーして文字列を比較しても差異はありませんでした


594 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 19:42:42.20 ]
>>592
なんか良くわからんが、たぶん

ADODBCon.Open "FILE NAME=" & UDL01_fPath
MsgBox ADODBCon.Provider

595 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 19:59:57.96 ]
>>594
ありがとうございます!!
うまくいきました
こんな見落としで何時間も浪費していたなんて自分が情けない

596 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 16:09:38.74 ]
以前、>>447でカラーパレットについて質問したものです。
ユーザーフォームにボタン表面の色を変えたものを複数並べる
ことによって色を選ぶようにしました。

ボタン一つ一つのクリックイベントにコードを書いたのですが、
イベントの共有やどのボタンが押されたかを識別することによって
コードを簡素化したいのですが、VBAでそういったことは可能でしょうか?

ググったのですが、ブックの共有などの情報ばかりで検索しきれなかったので、
どなたか教えてください。
よろしくお願いします。

597 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 18:41:11.31 ]
application.caller で出来たっけ?

598 名前:デフォルトの名無しさん [2012/03/12(月) 19:51:06.54 ]
オートフィルタをかけた抽出結果のタイトル行を除いた最初の行の、二番目の列から、
データの入っている有効セル全てをコピーするにはどうすればいいでしょうか?

599 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 20:13:22.36 ]
こんばんあ!しつもんだお!

for nextの後にcallでquerytable.addすると処理固まってしまうのですが、どうすれば良いですか?メモリとかバッファとかよくわかりません

600 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 20:17:12.27 ]
すいません。
VBAで32bit符号無し演算をしたいんですが、型がlongじゃダメです。(当然)

どんな技を使えば良いですか?



601 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 21:01:49.30 ]
>>596
Part17で似た質問をして、カラーパレットをクラスモジュールを使って作成したことがあります。
できてはみたものの、クラスモジュールはよく分かりませんでした。

VBやC#なら、どのイベントにどのプロシージャを結びつけるかをプロパティウィンドウで
簡単に設定できるようになっています。

VBAではそういう使い方は向いていないのではないか、と思います。


602 名前:596 mailto:sage [2012/03/12(月) 21:49:46.96 ]
>>597,601
ありがとう。
Application.Callerをググったら、どの例もシート上のボタン等を調べるみたいで、
ユーザーフォーム上のボタンのクリックイベントでは使えないみたいです。

ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1427920774

ここを見ても、601さんが書かれているように気軽にできる感じではなかったので、
ボタンのtagプロパティにカラーコードを書いておいて、activecontrolで識別するようにしました。

603 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 23:05:54.84 ]
>599

Long型でユーザー定義変数を作成し、
LSetステートメントで強制的に2つのLong型に分割。
2つのLong型を下位32bitと上位32bitで別々に計算し、
計算後に改めてCurrent型にLsetステートメントで合体。

という方法がある。

「VBA currency型のビット演算」でググるとよろし。

604 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 12:18:48.28 ]
>>603
ちょーthx.

605 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 19:30:37.29 ]
Excel2010

bookname = "D:\data\backup\data_xxxxxxxx.xlsx"

xxxxxxxxxx は作業日付

Worksheets("data").Copy
With ActiveWorkbook
.SaveAs Filename:=bookname
.Close
End With

としてdataシートを別ブックに保存しようとすると、このシートには
Activateになった時に作業をするモジュールがついていて xlsxでは
保存出来ないとExcelに言われてしまうんですが。。。
保存する際にモジュールは要らなくデータだけで良いんですけど
どうすればモジュールを切り離して保存出来るんでしょうか?



606 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 19:41:52.71 ]
>>605
今、手元にExcel2010が無いんで自信ないけど、
.SaveAs Filename:=bookname, FileFormat:=xlOpenXMLWorkbook

とかでどうだろ?
明日会社行けば試せるんだけど・・・

607 名前:605 mailto:sage [2012/03/13(火) 19:59:10.22 ]
すごい!
出来ました。
そのFileFormat指定は初めてです。

ありがとうございます。m(__)m

608 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 20:32:15.03 ]
はろー。ループするとき処理待ちするにはどうすればいいですか?

609 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 20:36:33.61 ]
「こんばんわ、処理町隆史です」という。

610 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 20:43:21.74 ]
おれがずっと探し求めていたのはジャーマンスープレックスもといドゥーイベントカンスーだったようだ…



611 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 21:55:34.65 ]
>>608
DeEvents

612 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 22:05:09.05 ]
OS:XP Home 32bit
Excel:2003

条件を満たした場合、ソースコード自体を書き換える事は可能でしょうか?


613 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 22:24:36.95 ]
>>605-607
Application.DisplayAlerts = False
でいいんじゃないのか

614 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 22:29:45.74 ]
>612

できるけど、OSやExcelのバージョン違いに対する対応なら
#If〜#Then〜#EndIfや#Constの条件付きコンパイルを使うほうがよい。

どうしても書き換えしたいなら、参照設定で
「Visual Basic for Applications」に参照設定をすれば
VBEのコードそのものを直接VBAで動かせるようになる。


615 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 22:35:10.19 ]
>>613
Application.DisplayAlerts = False

これは単にメッセージ出すのを抑制するだけですよ?

616 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 23:37:57.80 ]
>>615
xlsxで保存したらマクロは保存されない
警告なしで保存できるんだからそれでいいだろ


617 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 23:53:25.53 ]
>>613,616

なるほど。そういう手もあったんですね

618 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 23:55:37.82 ]
>>615

お前がずれてますよ
605もアホだがエスパーすると…



警告なしに保存したいということだろ
だからDisplayAlerts=Falseが合っている
FileFormat指定が的外れ
警告はxlsxで保存するとマクロは保存されませんよ
ってことだからな

619 名前:586 [2012/03/14(水) 01:29:08.85 ]
とりあえず、「Copyメソッドが失敗しました」のエラーが起こる簡易版のファイルを
作成しました。

www.vivi-loda.mydns.jp/index.php?m=dp&n=file1526
DLkey:asd

test1の方で実行しても、test2で実行しても、
こちらの環境(Win7 HomePreminum SP1(32ビット版)、Excel2003 SP3、メモリ3G)
だと、44シート追加したあたりで、当該エラーが出ます。

このファイルだと、マクロではエラーが出るものの、手作業でシート
追加はできますが、とりあえずこのエラーを回避したいです。(できるものなら)

ちなみにこのマクロを実行すると、一時的にPCが重くなったりするので、お気をつけください。


よろしくお願いいたします。

620 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 02:19:08.42 ]
>>619
自分の環境ではエラーにならない
Win7 Ultimate SP1 (64bit) メモリ8GB、Excel 2007 SP2



621 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 03:45:17.31 ]
>>619
Vista Ultimate SP2 32bit Excel2007 SP3もエラーなし
ちなみにシート500まで追加させても問題なし
2003の問題か、PCの問題だな

昔ディスプレイドライバー辺りのバグでExcelでメモリ不足出たことあったが
つかWin7でExcel2003とか動作保障あるのか

622 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 04:00:24.00 ]
>>619
流れ読んでないけど、ワークシートのコピーは複数回実行するとマクロでなぜかエラーになる現象がある。
標準のワークシートをコピーする関数を使うのはやめて、「ワークシートを追加→セル全体をコピー→ペースト」
という関数を作っておくと楽。






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

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

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