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/
367 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 07:37:15 ] 少しは自分で書く努力しようぜ
368 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 08:39:56 ] year関数、month関数、day関数 オートフィルタは2種類 アプリケーションアラートの停止
369 名前:365 mailto:sage [2010/02/22(月) 10:08:10 ] >>368 その辺りを、調べてみますありがとうございました。
370 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 10:09:25 ] テキストボックスにInteger型のデータと文字列を結合して表示させたいのですがどう打ち込めばいいでしょうか? イメージ的には textbox1.text = integer型のデータ + "文字列" としたいのですが
371 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 10:14:05 ] >>370 integer型のデータ & "文字列" じゃ駄目か?
372 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:02:40 ] >>371 出来ました ありがとう
373 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:56:33 ] ソートの話の続きなんだけど、 一次配列100個の右4文字を昇順でソートするっていう場合は記述するしかないんじゃない?
374 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 14:36:56 ] >>373 セルに入れたくないならそうだろうね でもエクセルを使ってるからには どのみちセルにぶち込むデーターなんだろうし 右4文字を取り出した列を作ってやればいいんでない?
375 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 18:47:48 ] なぁ、EXCEL2000から2007に最近環境を変えなきゃならんオレに 表示とか環境設定みたいなのどうしてるか教えろ。 取り敢えず立ち上がったところから気に喰わないし自作DLLは変な文字吐くし泣けるんだわ。 他のスレで聞いてもいいんだけどVBA使ってる人に聞いてみたいんだ。 デフォルトのに慣れろってんならそうする。
376 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 19:49:33 ] >>375 2003と同じツールバーを出すサードパーティーのアドインがあったよ 即効で使わないといけないならとりあえずこれ 最近チェックしてないのでなくなってたらゴメン 2007に移行した人に聞いてみたら慣れたら2007のほうが使いやすいって言ってたので 時間的余裕があるなら耐えて使うかなw うちもまだ2003でふんばってまふ
377 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 19:54:38 ] Office 2007にOffice 2003互換メニューを追加する ttp://www.atmarkit.co.jp/fwin2k/win2ktips/1173oldmenu/oldmenu.html ↑を入れてるw
378 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:40:31 ] まあ、2010も同じ形式なので、諦めて慣れた方がいいような気もするけどね
379 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:05:50 ] とっくの昔に2007になれた。 2007のほうが使いやすいんだが、周りの全員がオレに聞いてくるのでうっとうしい。
380 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:06:21 ] >>376-378 サンクス フリーのアドイン見てみたけど、MSは基本このまま使えって言ってるって事みたいだね。 最初見たときマジでOOoに乗り換えようかと思ったわ。 XPの頃のPCがそろそろ更新のサイクルに来てると思うんだけど乗り換える人もある程度出てくるんじゃね? まああ、VBA関連のコードも書き換え(1から作り直し?)無きゃならんしオレがUIに慣れる方向でやってみて、 同僚の反応とか聞きながらこの先の事は考えてみるわ。
381 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:23:19 ] >>379 そらそうだろ。知ってるやつ居るならオレも聞きたいわwww てか、どのくらいで慣れるのか聞きたいわ。 あと、DLLのインタフェースにXML使うの実装しといたの思い出したらなんとかなった。 とにかくサンクス。
382 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:43:46 ] 2003と2007の両方入れてる 常用は2007なんだけどマクロの記録がタコなんでどうしても2003は消せない UIは慣れるしかない
383 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 23:04:21 ] >>364 アクティブでないアプリケーションの処理が遅くなるのはWindowsが そういう風にCPU処理を配分してるからでしょ。システムのプロパティで 裏のプログラムも同等に処理するように設定したら? その代わりアプリが表側に来てるときの処理速度は落ちるけど PCの性能が無限でない以上仕方ない。
384 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 00:30:51 ] >>383 デュアルコアだと快適になるかな?
385 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 05:51:45 ] ダブルクリックで複数立ち上げるとエクセル本体は一つしか立ち上がらないので マルチCPUでも一つのコアしか使ってくんない スタートメニューからエクセルを必要数起動しエクセルからシートを読み込んでやると 別プロセスで動くので各コアに分担させることが可能 割り振りはたすくマネージャから手動で変更可 これでどれだけ快適になるかはやってみなきゃわかんない よほど処理時間長いものじゃなきゃごちゃごちゃやってる間に終わっちまうしな
386 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 12:32:43 ] 指定のzipファイル内にあるcsvファイルを配列に落とすにはどうしたらよいでしょうか 配布の都合上外部DLLは使用出来ません
387 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 18:06:44 ] 自己解凍ファイルにするとか
388 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 18:54:41 ] >>386 きっとそのzipファイルは変えられないんでしょ。 XPならzipって標準でライブラリなかったっけ? 外部dllには違いないけど、それ読み込んで解凍させるとか。
389 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 19:15:51 ] ★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。 ★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
390 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 21:26:22 ] OS:windows Excelバージョン:2003 条件付き書式を設定していくマクロについて質問です. [問題] C1:E3の各セルに文字 aもしくはbもしくはcが入力されているとします. このときA1のセルにa,A2のセルにbが入力されたとき C1:E3の各セルでaもしくはbが入力されているセルのみ背景を赤にしたいのですが どうすればよいでしょうか? [自分なりの解答] 以下のような条件付き書式を各列で設定していくマクロを作ってみたのですが、 $C$1のところが$C$1〜$E$1とすることができず詰まっています... Do Until ActiveCell.Value = "" Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=COUNTIF($A$1:$A$2,$C$1)>=1" Selection.FormatConditions(1).Font.ColorIndex = 2 Selection.FormatConditions(1).Interior.ColorIndex = 3 ActiveCell.Offset(1).Select Loop End Sub
391 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 21:58:13 ] こういうことか? Sub test() Dim i As Integer, j As Integer For i = 1 To 3 For j = 3 To 5 If Cells(i, j) = Cells(1, 1) Or Cells(i, j) = Cells(2, 1) Then With Cells(i, j) .Font.ColorIndex = 2 .Interior.ColorIndex = 3 End With End If Next j Next i End Sub
392 名前:デフォルトの名無しさん [2010/02/23(火) 22:27:24 ] >>390 よくわかんないけど Sub testestes() Dim myRange As Range, r As Range Set myRange = Range("c1:e1") myRange.FormatConditions.Delete For Each r In myRange r.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=COUNTIF($A$1:$A$2," & r.Address & ")>=1" r.FormatConditions(1).Font.ColorIndex = 2 r.FormatConditions(1).Interior.ColorIndex = 3 Next r End Sub
393 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 22:43:53 ] >>390 条件付き書式を間違ってないか C1は=COUNTIF(A1:A2,C1)>=1で E1は=COUNTIF(A1:A2,E1)>=1といれるべきだと思う
394 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 22:52:26 ] >>391-392 レスありがとうございます. お二人のおかげで作りたいものができました. 勉強になりました.本当にありがとうございます. >>393 レスありがとうございます. ご指摘のとおりです. >>392 さんのレスに有る > & r.Address & のような方法を探してました.
395 名前:345,358,364 mailto:sage [2010/02/24(水) 00:55:58 ] レスくれた方ありがとうございます。 上手く伝わりませんが、>>345 で書いた通り、 PCはデュアル又はクアッドコアで、システムのパフォーマンスオプションはバックグラウンドサービスに設定。 エクセルを複数起動して並列処理しており、ウィンドウが表でも裏でも全て高速動作してる。 画面更新や再計算停止等の高速化は実施済み。 ただし、VBAコードの中にSortメソッドが含まれており、かつ非アクティブウィンドウである場合に限り、Sortメソッドの処理が極端に遅くなる。・・・という事です。 >>385 の方法をスクリプトで自動化してるので、Core i7でExcel2000を8つ起動して同じコードを走らせると8コア100%までぶん回して高速に演算できてるけど、 Sortメソッドを使うとそこが激しくボトルネックになる。 ちなみに普通にエクセルを1つだけ開いてSortを何万回も繰り返すコードを実行中に、デスクトップをクリックしてエクセルを非アクティブにするだけでも途端に劇遅になる。 これ多分Excel2000の仕様というかバグなんだけど、同じ現象についてはググっても見つからなかったので、これが問題になるほど何時間もぶん廻す使い方がよほど特殊なんだろう。 Sortメソッドを使わない方向で解決する事にします。
396 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 19:57:09 ] すみません教えて欲しいんですが SET A = Range("B1:E10") SET X = Range("C5") のような時に 単一セル X はセル範囲 A の 範囲内にあるかどうかの 判定方法はどうやったらよいのでしょうか?
397 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 20:01:38 ] intersect
398 名前:396 mailto:sage [2010/02/24(水) 20:05:39 ] >>397 あ!なるほど ありがとうございました
399 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 20:53:23 ] >>395 何がやりたいのか判らないけどアクセス使ったほうがいいんじゃないか? それはさておき、こことか。 chotosplus.sakura.ne.jp/wordpress/2009/07/16/excel-vba%E3%81%8B%E3%82%89%E5%88%A9%E7%94%A8%E3%81%A7%E3%81%8D%E3%82%8B%E5%90%84%E7%A8%AE%E3%82%BD%E3%83%BC%E3%83%88%E6%96%B9%E6%B3%95%E3%81%AE%E9%80%9F%E5%BA%A6%E6%AF%94%E8%BC%83/
400 名前:デフォルトの名無しさん [2010/02/25(木) 04:03:34 ] すみません、教えていただけないでしょうか OS:windows Excelバージョン:2003 反復型の成績判定で10人分の得点を一人ずつ成績判定を行うプログラムを作りたいのですが、 Sub 反復型の成績判定() Dim X As Variant X = Array(60, 82, 87, 50, 56, 86, 89, 76, 58, 68) Dim hantei As Variant hantei = Array("不可です", "可です", "良です", "優です", "対象外です") Dim h As Integer Const n As Integer = 10 Dim i As Integer Dim tokuten As Integer For i = 1 To n tokuten = X(i - 1) Next Select Case tokuten Case Is < 60 Debug.Print Format(tokuten, "#点は ") & Format(hantei(0), "不可です") Case Is < 70 Debug.Print Format(tokuten, "#点は ") & Format(hantei(1), "可です") Case Is < 80 Debug.Print Format(tokuten, "#点は ") & Format(hantei(2), "良です") Case 80 To 100 Debug.Print Format(tokuten, "#点は ") & Format(hantei(3), "優です") Case Else Debug.Print Format(tokuten, "#点は ") & Format(hantei(4), "対象外") End Select End Sub これだと68点の成績判定しかされないのですが、どこを直せば良いのでしょうか?
401 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 06:16:13 ] >>400 nextを end select の後に移動
402 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 06:21:10 ] >>400 Sub 反復型の成績判定() Dim X As Variant Dim element As Variant Dim hantei1 As Variant Dim hantei2 As Variant Dim h As String X = Array(60, 82, 87, 50, 56, 86, 89, 76, 58, 68) hantei1 = Array(0, 60, 70, 80, 101) hantei2 = Array("不可です", "可です", "良です", "優です", "対象外です") For Each element In X h = WorksheetFunction.Lookup(element, hantei1, hantei2) Debug.Print Format(element, "#点は ") & h Next End Sub
403 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 07:27:05 ] え!?hentai???と思ってしまった・・・orz
404 名前:デフォルトの名無しさん [2010/02/25(木) 12:04:56 ] できました! 助かりました。ありがとうございます。
405 名前:デフォルトの名無しさん [2010/02/25(木) 12:14:46 ] すみません、もうひとつ聞きたいことがあるんですが、 星の表示で1〜n個の*を順番に表示させるプログラムをつくったんですが、 Sub 星の昇順表示() '1 〜 n個の”* ”を順番に表示 Dim i As Integer, n As Integer n = 10 Do Debug.Print Format(i, "00") & String(i, "*") i = i + 1 Loop While i < 11 End Sub これをn〜1個の*を順番に表示させるためにはDo〜Loopを使ってどのように変えればいいのでしょうか? 教えていただけないでしょうか。
406 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 12:45:59 ] >>405 初期値 加算値 終了条件 宿題け?
407 名前:デフォルトの名無しさん [2010/02/25(木) 17:48:25 ] Dim y As Integer Dim x As Integer Dim objTableItem As Object '.body ‚loop body data For Each objTAG In objIE.document.body.all 'search for table tag If objTAG.tagName = "TABLE" Then 'add new sheet Sheets.Add y = 0 'row 'loop item in table For Each objTableItem In objTAG.all If objTableItem.tagName = "TR" Then y = y + 1 'row +1 x = 1 'columm=1 End If If objTableItem.tagName = "TD" Then 'set text data Cells(y, x) = objTableItem.innerText x = x + 1 'next columm End If Next End If Next このままだと、Excelを使ったIE操作に関する質問です。 website上のテーブルをコピーして、エクセルにペーストしたいのですが、このままではテキストにリンクが貼られていても、 テキストしかコピーできません。 例えば、<a href ="http.....">VBA</a>の場合、テキストのみがペーストされますが、エクセル上でVBAをクリックすると、URLにジャンプできるようにしたいのですが、何かいいアイディアはございますか?
408 名前:デフォルトの名無しさん [2010/02/25(木) 18:58:19 ] >>406 回答ありがとうございます。 すみません、具体的にはどこをどう変えればいいのでしょうか。 本当に初心者なので、どこをどういうふうに変えたら*の数が下がるようになるのかわからないんです。
409 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 22:22:30 ] >>407 If objTableItem.All.tags("A").Length > 0 Then Debug.Print objTableItem.All.tags("A")(0).href End If で http..... が取得できると思うけど
410 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 23:46:43 ] >405 ★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
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の画面が出てきてしまうのでそれは何としても避けたいのですが いわゆる実際の開発現場での作業などで作成される場合、 一般的にデバッグってどうやってされているのでしょうか? たとえば通過ログを各地にはりつけてこのログが通って、このログが通っていないので その間で落ちたと言うやり方が思いつくのですが、 あるいはこの部分で落ちたとかがわかるコードなどあるのでしょうか?