1 名前:デフォルトの名無しさん mailto:sage [2010/01/06(水) 12:34:58 ] 過去スレ 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/
411 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 00:30:18 ] ユーザーフォーム上のテキストボックスに前のデータを表示させたまま下に出力し続けることは可能でしょうか?
412 名前:デフォルトの名無しさん [2010/02/26(金) 00:58:33 ] >410 仰るとおりです。本当に申し訳ありません。 ただ、時間がなくプログラムもどう変えればいいか全然わからず、丸投げしてしまいました。 厚かましいお願いではありますが、初心者でもわかる範囲でヒントをもらえないでしょうか。 見よう見まねで上のプログラムは組めたんですが、反対に星の数を少なくしていくやり方がどうしてもわかりません。 どうかよろしくお願いします。
413 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 01:52:16 ] >>408 なんかの宿題だろうけど 見よう見まねだとしても >>405 の コードでなぜ星の数が多くなっていくのか それを理解するのが先だと思う じゃあ逆に質問 1〜5個の"*"を順番に表示にするには?どう修正する? 実行結果は下ね 01* 02** 03*** 04**** 05***** ちなみに下だと失格だよ 00 01* 02** 03*** 04**** 05*****
414 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 02:06:08 ] >>412 i = 10 i = i - 1 i > 0
415 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 02:41:02 ] Dim i As Integer, j As Integer, n As Integer, s As String n = 10 For i = 1 To n Step 1 s = Format(i, "00") For j = 1 To i Step 1 s = s & "*" Next j Debug.Print s Next i End Sub そういえば、iとかjとか一文字の変数名はよくないって話はどうなってんの
416 名前:デフォルトの名無しさん [2010/02/26(金) 03:02:49 ] >414 できました!助かりました!本当にありがとうございます。 >413 i = 1 という条件を付け加えればよかったんですね! 一人じゃ何もわからず、途方にくれていました。本当に助かりました。 ありがとうございました。
417 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 08:18:56 ] >>415 変数名1文字なんてどうでもいい それよりループ回してs=s&"*"なんて恥ずかしいからやめろ >>405 さえString関数使ってるだろ?
418 名前:415 mailto:sage [2010/02/26(金) 09:54:18 ] なんで? 01* 02*+ 03*+* 04*+*+ 05*+*+* こういうのやる時必要でしょ?
419 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 11:01:47 ] >418 ヲイヲイ・・・
420 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 11:23:13 ] For文で変数にiとjを使うのは昔からの慣習なので問題ない
421 名前:デフォルトの名無しさん [2010/02/26(金) 15:39:29 ] 時間がないと言ってるのに>>413 はちょっとかわいそうだとオモタ
422 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 19:40:12 ] 名簿から名前(アルファベット)を拾って 頭文字別の一覧表シートを作成しようとしています。 ソート後に頭文字を if str[i] == str[i+1] hoge列に代入 elseif str[i] != str[i+1] hoge = hoge+1 hoge列に代入 という方法でやろうと思ってるんですが (if a 〜 if z では長くて面倒ですし・・) 他に方法というかVBA側で用意されてるものってあったりしますか? リスト構造体的なものがあってそこに文字列ぶちこんで 検索文字抽出→GetNextで抽出文字列を順々に引っ張り出せたりとか・・ そういったものがあったりしないかなぁと思い質問させていただきました。
423 名前:422 mailto:sage [2010/02/26(金) 19:43:33 ] == → = != → <> に訂正します。 比較演算子がC++になってしまいました・・
424 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 21:19:44 ] >>422 (if a 〜 if z では長くて面倒ですし・・) の部分が何が言いたいのかよくわからん。 例示されたプログラムのどこにも出てきてないのに、いったい何がやりたいんだ。
425 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 21:36:06 ] >>422 1Byte文字かつアルファベットのばあい。 文字列の先頭1文字の文字コード(アスキーコード)取得して適当に計算して Cell位置に変換してそこにぶち込む。をLoopすれば? カラム方向のカウンタも配列にして。
426 名前:422 mailto:sage [2010/02/26(金) 22:06:04 ] >>424 if str[i] like "Aa" 〜 if str[i] like "Zz" ということでした。わかりづらくて申し訳ありませんでした >>425 やはりLoopで回すのが手っ取り早そうですね。 ありがとうございます。
427 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 22:22:51 ] >>417 別にええやんと思う人間が実はここにもいる。 性能的な違いはある?
428 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 23:57:22 ] >417 >それよりループ回してs=s&"*"なんて恥ずかしいからやめろ 途中の結果も必要なんだから別に恥ずかしいとは思わんが・・・
429 名前:427 mailto:sage [2010/02/27(土) 01:21:43 ] あ、文字列を作るためだけにループ使うなと言いたいのか。 でもString関数なんて今まで知らなかったよ。 ところで文字を連続させる関数て何に使うんだろうか。
430 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 08:35:11 ] >>429 文字を連続させるために使う。
431 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 08:55:01 ] 使いたい人が使いたいときに使う。 例えば*を100個書きたい場合(101個だとダメ99個でもアウト〜)に String()を使えば間違わないで書けるとかじゃろ?
432 名前:デフォルトの名無しさん [2010/02/27(土) 09:38:38 ] worksheetfunction に rept ってなかったっけ?
433 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:13:17 ] だめだ、同じ文字を10個ならべる目的が思いつかない。 固定だったら"**********"とか書くし需要少なそうだ。 まあ、あるものは使った方がいいのは確かだと思う。 String関数の中でループ処理が組んであるんだろう。
434 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:42:12 ] バリアント型 (内部処理形式 String の Variant) の値を返します。 指定した文字コード (ASCII またはシフト JIS コード) の示す文字、または文字列の先頭文字を、 指定した文字数だけ並べた文字列を返す文字列処理関数です。 Dim MyString MyString = String(5, "*") ' "*****" を返します。 MyString = String(5, 42) ' "*****" を返します。 MyString = String(10, "ABC") ' "AAAAAAAAAA" を返します。
435 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:49:08 ] ForとString()じゃパフォーマンスが段違いに違う。 String(999999999,"*")は一瞬で処理されるのに対し、ForはExcel自体がフリーズする。
436 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:49:20 ] >>433 目的ですか、うちでよく使うのは その1、ダミーデーター作成(スペースでいい場合はspace()を使うけど) 1.1、固定でも200個とか数えるのやだし 1.2、固定長データを扱うときにあまった領域の埋め草を作るのに使う その2、CUIで棒グラフ あとは、なんだろうね、なにかあったような気がするが思い出せない
437 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:50:37 ] たとえば あるLoop処理でc言語のTableを作るとかの場合に、 タブを何個挿入するのかをブレイスの深さで変えたい場合、 ブレイスの深さをカウンタにしておけば少し便利かも。 タブじゃなくてスペース4個とかでも同じ。 String(i, Chr(9)) & StringBuff & vbLf
438 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:50:43 ] ごめん9が1個多かった
439 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 14:44:21 ] なるほど、固定長データを埋めるときという例はすごくよく判ったし パフォーマンスが全然違うんだね。ありがとう。 生の固定長データを自分で作ったことが多分ないから気づかなかったよ。
440 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 16:02:28 ] だんだん文字列を大きくしていくのはメモリ確保に時間がかかるからやらないのが常識。 サイズが小さいうちは平気だけどね。
441 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 17:45:33 ] それは何nsの話なのか
442 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 18:39:18 ] 小さいうちは数ナノ秒でも大きくなると幾何級数的に時間がかかるよな。
443 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 20:11:25 ] excel2003を使用しています。 ファイルを外部から取り込む際に、ダイアログを使用していますが、 この取り込むときのフィルターのかけ方で、特定の文字列を含むファイルのみ表示することは可能でしょうか? Filter = "エクセルファイル(*.xls)" & Chr(0) & "*.xls" & Chr(0) 現状はこの様になっており、拡張性がエクセルファイルのものだけを表示するようになっています。 これに特定の文字列を持ったファイル名を表示するという条件を追加できませんか?エクセルファイルで、名前が091201を含むなど
444 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 20:13:24 ] >>441 性能問題起こしそう
445 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 20:16:35 ] "09*.xls"
446 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 20:53:18 ] まぁ、スピードが要求されるならC++でDLL書いてVBAから呼べって話になるんですがね
447 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 22:02:08 ] そういう問題じゃねーのまだ分ってねーの 計算量のオーダが2乗ってことだよ
448 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 22:04:49 ] ほら 1+2+3+...+n=n(n+1)/2=n**2+1/2*n
449 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 22:28:51 ] 流れを無視してすみません VBA初心者ですが質問させてください Userformでの話なのですが ボタンが押された際に TextBoxにセルの値を代入し表示 2秒間隔をあけ、その後フォームを閉じる という処理を行いたいのですがTextBoxに表示される前にフォームが閉じられてしまいます。 フォームが閉じられる前にTextBoxにテキストを表示させるにはどのような方法をとればいいのでしょうか? サンプルコードは以下のとおりです。 Private sub CommandButton1_Click() TextBox1.text = sheets("sheet1").range("A1").value call delay(2) '2秒ディレイするという命令 Unload Me endsub 分かりづらいコードで申し訳ないですがご指導のほどお願いいたします。
450 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 22:40:23 ] >>445 ありがとうございます!!
451 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 22:43:48 ] どうしてもその自作関数つかうなら delayのほうに 閉じる動作書けばいんじゃね
452 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 23:09:19 ] >>447 .NET Framework使えよって話だ
453 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 00:17:06 ] >>449 ontime
454 名前:デフォルトの名無しさん [2010/02/28(日) 00:40:48 ] VBAで指定されたURLに日本語をくっつけてWebを開く事は出来ますが そうではなくて 開いたWebページのあるテキストボックスに選択されたセルにある文字列を入力して ボタンを押下する方法とかはあるのでしょうか? もしあればご教授お願いします
455 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 01:10:19 ] >>454 Sendkeys
456 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 11:21:20 ] >>449 DoEvents を使ってみるといいかも TextBox1.text = sheets("sheet1").range("A1").value DoEvents call delay(2) Unload Me
457 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 01:46:21 ] テキストファイルA.txtの内容をstrAとし、 テキストファイルB.txtの内容をstrBとし、2つを合体させて クリップボードにコピーしようとしています。 strA も strB も、それぞれ読み取れてはいるのですが、 strA & strB とすると前者の方しかコピーされません。 逆にしても同じです。 &でつなぐことはできないのでしょうか?
458 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 02:42:09 ] >>457 よくわかりませんが、先に strAB = strA & strB したり、そこで文字列結合関数を使ってみては?
459 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 19:14:57 ] nul文字混入
460 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 22:00:35 ] Worksheets("225構成銘柄(業種別分類)").Range(Cells(2, 1), Cells(2, 2)) = Worksheets("水産").Cells(3, 3) これでアプリケーション定義またはオブジェクト定義のエラーです。が出るのは何でだ? もしかしてシートまたいでのコピーっていちいちactiveにせないかんの? 簡略表記できないの?
461 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 22:50:10 ] >>460 1. Worksheets("225構成銘柄(業種別分類)").Activate Range(Cells(2, 1), Cells(2, 2)).value = Worksheets("水産").Cells(3, 3).value 2. With Worksheets("225構成銘柄(業種別分類)") .Range(.Cells(2, 1), .Cells(2, 2)).value = Worksheets("水産").Cells(3, 3).value End With 3. Worksheets("225構成銘柄(業種別分類)").Cells(2, 1).Resize(1, 2).value = Worksheets("水産").Cells(3, 3).value お好きなのをどうぞ
462 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 23:22:41 ] なんか納得いかないけどありがとう御座います。 とくに2なんかwithで囲っただけでなんで上手く行くんだ?
463 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 23:52:33 ] >>462 RangeやCellsはシートを指定しないとアクティブシートを対象とする。 そのため460の書き方では、CellsのシートとRangeのシートが一致していない。 461の.Cellsはドッドが付いているため.Rangeと同シートを対象としているので動く。 と正しくないかもしれないけど勝手解釈な説明をしてみた。
464 名前:デフォルトの名無しさん [2010/03/03(水) 08:47:09 ] >>457 (strA & strB) としてはどうか
465 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 16:46:26 ] >>463 ふんわりと勉強になった。 知らん事だらけで困惑する。
466 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 20:11:36 ] 簡単に言うと、 Cells(2, 1), Cells(2, 2) ってのが、どこのシートのセルか指定されてないってことね。
467 名前:デフォルトの名無しさん [2010/03/03(水) 21:25:06 ] 現在VBAでエラーが出た場合 On Error GoTo ErrorHandler ErrorHandler: MsgBox "エラーが発生しましたので終了します" のように強制的に終了させていますが これだとどこでエラーが起こったのかわかりません。 しかしこれをはずすとVBAの画面が出てきてしまうのでそれは何としても避けたいのですが いわゆる実際の開発現場での作業などで作成される場合、 一般的にデバッグってどうやってされているのでしょうか? たとえば通過ログを各地にはりつけてこのログが通って、このログが通っていないので その間で落ちたと言うやり方が思いつくのですが、 あるいはこの部分で落ちたとかがわかるコードなどあるのでしょうか?
468 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 21:32:39 ] >>467 Debug.Assert(条件文)
469 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 21:40:30 ] Err.Description じゃなかったっけ? それみてエラー箇所が特定出来ないなら関数が大きすぎるんじゃないか?
470 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:22:40 ] >>467 とりあえずErrオブジェクトでぐぐれ エラーの発生した場所を正確に知るにはErl関数を使うという手もあるが 使い方がかなり面倒なのでおすすめはしない
471 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:28:40 ] ちがう Err.LineNumber
472 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 01:06:17 ] >>467 VBEのメニューバーにそのものずばり「デバッグ」てのがあるでしょ いちいちソースを書き換えなくても、どこまで実行したら一時停止とかできるんだよ
473 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 16:44:12 ] >>471 ErrオブジェクトにLineNumberなんてプロパティある?
474 名前:デフォルトの名無しさん [2010/03/04(木) 20:12:54 ] Excelにプルダウンを入れていて、いくつか選択肢を入れているのですが Excelを最初開いた時には空白で 別のシートを選択して、またこのシートに戻ってきた時に表示されます これの原因ってわかりますでしょうか? 初期化がうまくいっていない気がしますが どうしても理由が分かりません ちなみにコードとしては VBAプロジェクトの同じシートの中に下記の記述を入れています Private Sub Worksheet_Activate() With Me.Director_Combo .Clear .AddItem "" .AddItem "あああ" .AddItem "いいい" .AddItem "ううう" .ListIndex = 0 End With End Sub
475 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 20:22:51 ] >>474 ThisWorkbookのWorkbook_Openイベントに記述する シートの指定を忘れずに
476 名前:デフォルトの名無しさん [2010/03/04(木) 21:48:31 ] ある文字列中に.が何個あるか出力したいんですけど、どうすればいいですか? 例えば"1.25.30.2"ならば3を出力したいです。
477 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 21:59:28 ] >>476 単純に思いついたコードなんで間違ってたらすまん Dim wkArr() As String wkArr = Split("1.25.30..", ".") MsgBox UBound(wkArr)
478 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 22:11:36 ] あんまりスマートじゃないな s = "12.34.56.." Debug.Print Len(s) - Len(Replace(s, ".", ""))
479 名前:デフォルトの名無しさん [2010/03/04(木) 22:30:41 ] >>478 なるほど。LenとReplaceを組み合わせるんですね。 どうもありがとうございます。
480 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:01:38 ] Sheets(intS).Activate ActiveSheet.Range("C3:C100").AutoFilter Field:=1, Criteria1:=ANAME Range("C100").Select Selection.End(xlUp).Select If Selection.Value <> "あああ" Then Range(Selection.Offset(0, -2), "E4").Copy Sheets(intB).Activate Range("C100").Select Selection.End(xlUp).Select If Selection.Value <> "" Then ActiveCell.Offset(1, 0).Range("A1").Select End If ActiveSheet.Paste ← End If Selection.AutoFilter 矢印の部分でWorkSheet クラスの Paste メソッドが失敗しましたのエラーになってしまいます。 * Microsoft Visual Basic for Applications (VBA) マクロで、Excel 2003 ブックの 1 行全体のコピーと貼り付けを実行している。 * Microsoft VBA マクロで、Excel 2003 ブックの 2,516 以上の行の範囲のコピーと貼り付けを実行している。 のどちらにも当てはまっていないと思うのですが、なぜでしょう。
481 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 00:03:56 ] ごめんなさい書き忘れました。 Windows7 Office2007 です
482 名前:デフォルトの名無しさん [2010/03/07(日) 08:20:54 ] やってはいけないの見本
483 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 09:46:48 ] >>480 コピー元かコピー先のどちらかでセルが結合されてない?
484 名前:480 mailto:sage [2010/03/07(日) 17:31:48 ] セルの結合はないです。 PasteSpecialでも同様のエラーが出ます
485 名前:デフォルトの名無しさん [2010/03/07(日) 19:38:09 ] VBAを利用して Webページにある複数のテキストボックスに A1セルに書かれている内容をWeb上のAというテキストボックスに入力 A2セルに書かれている内容をWeb上のBというテキストボックスに入力 するような物を作りたいのですが やり方とかあるのでしょうか? あれば教えてください
486 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 20:22:08 ] >>485 IEオブジェクト.Document.フォーム名.テキストボックス名.value = 設定したい内容 フォーム名やコントロール名が無い場合 DocumentオブジェクトのFormsコレクションやItemコレクションを使う IEオブジェクト.Document.Forms(n).Item(n).Value = 設定したい内容
487 名前:デフォルトの名無しさん [2010/03/07(日) 21:56:28 ] A〜E列を下記。A,Dを検索キーとしてBをEに移します。 test()では1が拾えず10を拾ってしまいます。(XP, Excel2000) どう修正すればよいでしょう。 A B C D E -- -- -- -- -- 1 あ __ 1 2 い __ 2 3 う __ 3 9 け __ 9 10 こ __ 10 11 さ __ 11 14 せ __ 14 15 そ __ 1 Sub test() Set myRngA = Range("A1:A15") Set myRngD = Range("D1").CurrentRegion For i = 1 To myRngD.Rows.Count myKey = myRngD.Cells(i) Set myCel = myRngA.Find(what:=myKey) If Not myCel Is Nothing Then myRngD.Cells(i, 1).Offset(0, 1) = myCel.Offset(0, 1) End If Next i End Sub
488 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:49:54 ] >>487 Set myCel = myRngA.Find(what:=mykey, LookAt:=xlWhole)
489 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 22:54:31 ] 大量の日付+株価の四本値データ(1まとまりで5列使用)があるのですが、開始日も終了日も全てバラバラ(最長の奴で8192日データ。この8192日の中に全ての期間入ってる) 綺麗に日付の行をそろえて昇順でソートしたいのですが、VBAで上手いことやるアイデアを下さい。
490 名前:デフォルトの名無しさん mailto:sage [2010/03/07(日) 23:29:40 ] >>489 ソートするって、四本値データが日付順にならんでないというのが不思議だが 同じ日付を同じ行に持ってきたいということかな? もしそうなら ビンソートでデータをビンに詰め終わったところで 空きビンに対応する日付データーを入れてやればいいんでないかな
491 名前:487 [2010/03/07(日) 23:38:31 ] >488 ありがとう。たすかりました。 LookAt:=xlWholeがないと、一行目が無視されるわけですね?
492 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 01:24:39 ] >>491 全然違う。 LookAt=xlWholeは完全一致。 これを書かないと初期状態ではLookAt:=xlPartの部分一致になる。 開始セルのAfter:=***を書かないと範囲の先頭の次から検索するので 部分一致で10がヒットすることになる。
493 名前:489 mailto:sage [2010/03/08(月) 01:37:33 ] ビンソートという用語初めて知った。情報有難う。 ソート自体は簡単なんだけど、データのスタート位置設定するの難しいわ。 日付が素直に+1日づつなら多少は簡単なんだけど、休場日とかのせいで日付が飛び飛びなのがうっとうしい・・・ 後学の為にVBAで処理したいけど、もう手作業でやるか?
494 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 01:57:54 ] SQL使えよ
495 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 12:36:05 ] SQLもビンソートも不明だったので。 @→一番長い日数入ってる列探して基準にする A→各銘柄からデータ取得開始日とって、基準を参考に貼り付け開始行を取得 B→貼り付け開始行を利用して切り取り貼り付け C→Aから繰り替えす みたいな普通の力技でなんとかしました。アドバイス貰ったのに全く生かせないでごめんなさい。
496 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 13:37:07 ] オートシェイプの検索アドインを業務の補助として作成中です。 一般的な実装はできましたが、よくばって検索値の前回値を使用できるようにしたい。 このような場合、前回値をどこに保存するのが一般的なのでしょうか? excelマクロ・xlaならではの保存方法等ないでしょうか? ないのであれば、別途保存用のシートに保存するか、またテキストファイル等に残します。 (あんまりエレガントじゃないきがして嫌です。) ご存じの方おりましたらご享受ください。
497 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 13:58:58 ] >>495 ビンソートよりもバケット(バケツ)ソートという名前のほうが一般的かもしれない 内容は 日付のラベルが付いたビンに対応するデーターを放り込んで 詰め終わったら、端から順に取り出す 今回はデータがもともと順並びしてるので、 結果的にあなたがエクセル上でやったことと同じ作業ですね
498 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 14:06:04 ] >>496 Excelはシートに保存するのがエレガントだと思います。
499 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 15:39:54 ] なんらかの関数で引数となるシート名が存在するかチェックしてるんだが シート数分Forでまわして同名シート見つけた時点でexitしてるんだけど シート枚数が多くて使用者のPCスペックが低いためか時間が結構かかってきているんだが なんかアドバイスない? さしあたって事前にシート名チェックするのやめて ダメならOn Error GoToで飛ばすようにしといたんだけど もっといい方法あったら教えてください
500 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 15:57:25 ] シート名チェックってそんなに時間かかる処理だっけ? 何枚くらチェックしてるの?
501 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 16:13:38 ] シートの存在チェックは、何かやってみてon error gotoが一番速い
502 名前:499 mailto:sage [2010/03/08(月) 16:22:21 ] >>500 50枚くらいなんだけどモバイル用ノートで CPUがセレロンなんだ・・・ >>501 やはりそうですよね まず実行してみてだめだったらon error gotoで 具体的エラー内容を探すように変えていきます。 ありがとうございました。
503 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 18:02:04 ] >>502 ん、通じたのかな?例えばIsWorkSheetExist()みたいな関数を作って、その中で on error goto NotExist a = worksheet("Sheet1").range("a1").value // (*) return true NotExist: return false をやれってことで、「何かやって」は(*)の行の内容のこと。 いろんな関数にon error gotoをばらまけってことじゃないよ。
504 名前:デフォルトの名無しさん [2010/03/08(月) 18:36:00 ] ADOつかってSQL使えば? 別にExcelのシートに対してもSQLで読み書きできるよ
505 名前:デフォルトの名無しさん [2010/03/08(月) 20:14:29 ] こんばんは。どなたか詳しい方教えてくださいませんか。 エクセルのマクロでCSVファイルを開く→編集→保存(CSV形式)までを自動化しているのですが、 保存時の文字コードをS-JISではなくEUC-JPにして保存したいのです。 色々調べたんですが使えそうなのがなかったので・・。
506 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 21:02:08 ] 保存した後で変換ツールに投げるとこまで自動化したらばどうよ
507 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 21:19:20 ] >>505 nkf.dll
508 名前:デフォルトの名無しさん [2010/03/08(月) 21:48:31 ] ありがとうございます。 nkf.dll を使ってみようと思います。
509 名前:デフォルトの名無しさん [2010/03/08(月) 22:44:29 ] 詳しい方に質問です。 ExcelVBAでシートに保護をかけて、変更して欲しくないセル(項目名など) をロックしています。 ただ、シートに保護をかけてしまうと、テキストボックスや線オブジェクト、 図形オブジェクトがdisable?になってしまって使用できなくなります。 何か解決する方法はありますでしょうか?
510 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 00:33:02 ] 保護の対象を細かく指定すりゃいいだろ
511 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 02:03:00 ] DrawingObjects:=False