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/
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
512 名前:デフォルトの名無しさん [2010/03/09(火) 14:40:04 ] XPで2003を使用しています。 VBA初心者で調べつつ作成しましたが、思った動作になりません。 どうかご教示下さい。 仕入先マスタのシートで仕入先CDを重複しないよう、入力後に チェックをするようにしました。 (コードは次レスに貼ります) 【問題点】 If Not IsNumeric(Target.Value) Then Exit Sub を入れると、ターゲットが複数行の場合は動作してくれません。 上記のコードを削除すると、複数行を挿入したり、連続しない複数行を 削除した時に重複したと認識されてしまいます。 (emptyかNullが重複?) ※つづきます
513 名前:512 [2010/03/09(火) 14:42:31 ] ※つづきです Dim maxRow As Long Private Sub Worksheet_Change(ByVal Target As Range) With Workbooks("仕入管理帳.xls").Worksheets("仕入先マスタ") maxRow = .Cells(Rows.Count, 1).End(xlUp).Row ' If Not IsNumeric(Target.Value) Then Exit Sub If Target.Column <> 1 Then Exit Sub Set rngTarget = .Range("A2:A" & Target.Row - 1) Set rngFind = rngTarget.Find(Target.Value, LookAt:=xlWhole) If Not rngFind Is Nothing Then If Target.Row <> rngFind.Row Then Application.EnableEvents = False MsgBox ("仕入先CDが重複しています"), vbExclamation Target.ClearContents Application.EnableEvents = True End If
514 名前:512 [2010/03/09(火) 14:44:01 ] ※最後です Else Set rngTarget = .Range("A" & Target.Row + 1 & ":A" & maxRow) Set rngFind = rngTarget.Find(Target.Value, LookAt:=xlWhole) If Not rngFind Is Nothing Then If Target.Row <> rngFind.Row Then Application.EnableEvents = False MsgBox ("仕入先CDが重複しています"), vbExclamation Target.ClearContents Application.EnableEvents = True End If End If End If End With End Sub よろしくお願いします。
515 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:20:45 ] ★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。 ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。
516 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 15:58:01 ] >>512 Targetに複数のセルが含まれるときは、こうすれば一つずつチェックできる もちろんセルが1つでもエラーにはならない。Forの中を1回通るだけ For Each c In Target If Not IsNumeric(c.Value) Then Exit Sub Next c
517 名前:512 [2010/03/09(火) 16:25:12 ] >>516 出来ました!ありがとうございます! 1週間もあれこれ悩んでいたので、とても助かりました!!
518 名前:デフォルトの名無しさん [2010/03/09(火) 20:57:12 ] Excelに Craete AAA_TBL 〜 一行改行されて Craete BBB_TBL 〜 一つのシートにこういうデータがあった場合、 crateAAA_TBL.sqlファイルを作成して その中には Craete AAA_TBL 〜 crateBBB_TBL.sqlファイルを作成して その中には Craete BBB_TBL 〜 と分割したいのですが 分かりますでしょうか?
519 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 21:01:46 ] わけわからん、なにが起きてるんだ r=3 c=10 debug.print r , c if r=3 and c=2 then ........ elseif r=3 and c=4 then ........ elseif r=3 and c=3 then ........ elseif r=3 and c=2 then ....... elseif r=3 and c=10 then debug.print r , c debug.print "ここまで来た" end if 実行結果 3 10
520 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:00:52 ] Sub test() r = 3 c = 10 If r = 3 And c = 10 Then Debug.Print r, c Debug.Print "こないわけないだろ" End If End Sub
521 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:15:58 ] でも来ねえだもん、くまった
522 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:18:37 ] 省略せずに丸ごとソースを貼るかエクスポートしてどこかにアップしろ
523 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:20:24 ] if r=3 and c=2 then まったく同じ条件のIfが2つある。どうせほかにもタイプミスとかしてるに決まってる
524 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:44:29 ] デバッガでブレークポイント仕掛けてステップ実行しろよ
525 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:45:45 ] スマソ、自己解決した 頭のほうの if に不等号が入ってた 思い込みがあると目が見てても脳が見てないようだ
526 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:17:38 ] 無能には良くあること
527 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 00:37:20 ] 本当に>>523 が正解だったとは
528 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 06:46:48 ] 不等号が入ってたのは正解なので タイプミスではありません 見のがしです すいません、正確に言っておきたいもので(まげられないおんな風)
529 名前:デフォルトの名無しさん [2010/03/10(水) 07:34:21 ] ソフトのこと全く知りません。 そんな僕でもがんばればVBAは習得できるでしょうか?
530 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 10:13:26 ] はじめから知ってるやつはいねえからそこは心配ない あとはセンスしだい
531 名前:デフォルトの名無しさん [2010/03/10(水) 11:19:08 ] >>530 ありがとうございます。 超入門の本を読んでいるのですが、読み終わったらもう少し専門書を購入し読みながら、 他の人の書いたプログラムを解読しつつ勉強しようと思うのですが、 このやり方でいいのでしょうか?
532 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 11:49:53 ] 人が言葉を覚えるとき最初はオウム返しから始まるでしょ プログラム言語もそれと似たようなもんですよ 書籍のサンプル等をガシガシ打ち込んでけば、身についていきます コピペではあんまり身につきません、コピペが早くなるだけです 手打ちでがんばってください 人の書いたプログラムの解析は自分で作るよりも大変ですから、 そこから入るのは無理があるように思います
533 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 18:49:45 ] >>531 そういうやり方&他人のコード解読法で一回挫折したので、その後検定取りの為の勉強したな。(VBAエキスパートスタンダード) アレは基本的に誰でも受かるように出来てるし、体系だって勉強出来るシステムになってるので基本は身に付くよ。
534 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 05:27:46 ] Excel VBAで、コピーしたセル範囲をペーストする時に列幅を変えずに貼り付ける事は 可能でしょうか。 コピーする内容にセル結合や罫線が含まれています。 どうかご教授下さい。
535 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 07:59:09 ] 列をコピー&ペースト
536 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 12:00:19 ] >>534 まず普通にコピペしたあと、同じ場所にもう一度形式を選択して貼り付け→列幅
537 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:03:47 ] B3セルに"私は花子ですわ"、B4セルに"私は太郎ですよ" があるとき、C3、C4セルにA列の2つの文字列を比較して違う部分を赤色にしたい。文字列の長さは同じとする。 で、次のように作ったんだけど、最後しか赤くならない。なんで? Sub 文字列比較() ' 文字列比較 Macro ' マクロ記録日 : 2010/3/12 ユーザー名 : xp Dim str1 As String Dim str2 As String Dim buf1 As String Dim buf2 As String str1 = Range("B3") str2 = Range("B4") For i = 1 To Len(str1) buf1 = Mid(str1, i, 1) buf2 = Mid(str2, i, 1) If StrComp(buf1, buf2, vbTextCompare) = 0 Then Range("c3").Value = Range("c3").Value & buf1 Range("c4").Value = Range("c4").Value & buf2 Else Range("c3").Value = Range("c3").Value & buf1 Range("c4").Value = Range("c4").Value & buf2 Range("c3").Characters(i, 1).Font.ColorIndex = 3 Range("c4").Characters(i, 1).Font.ColorIndex = 3 End If Next End Sub
538 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:32:35 ] 初歩的な質問ですがお願いします。 For If xxx then @の処理 Else Aの処理 End If Bの処理 Next xxxの場合、@の処理をした場合には、Bの処理をせずに 次のfor文へ行きたいのですが、elseの中になにを書けばいいでしょうか?
539 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:42:58 ] >>537 マクロの記録でやってそうだからわかりそうなもんだけど、 Range("c3").Characters(3, 1).Font.ColorIndex = 3 '花 Range("c3").Characters(4 1).Font.ColorIndex = 3 '子 Range("c3").Characters(7, 1).Font.ColorIndex = 3 'わ は続けてやらないとダメだと思う。 j = 0 For i = 1 To Len(str1) If StrComp(Mid(str1, i, 1), Mid(str2, i, 1)) <> 0 Then j = j + 1 ReDim Preserve s(1 To j) s(j) = i End If Next こんな感じで位置を先に取得してみては?
540 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:46:19 ] 連レスすまん。 >>538 Aの処理の次にBを書いちゃダメなの? For If xxx then @の処理 Else Aの処理 Bの処理 End If Next それか、エスパーぎみに答えるとSelect caseを使うとか??
541 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 20:54:58 ] >>537 これの意味を勘違いしているような Range("c3").Value = Range("c3").Value & buf1 セルc3の文字列を取出してbuf1の内容と文字列結合 → セルc3に上書き この処理をすると これ以前にあった色指定が無効となる つー事で >>537 を修正すると Sub 文字列比較() Dim str1 As String Dim str2 As String Dim buf1 As String Dim buf2 As String str1 = Range("B3") str2 = Range("B4") Range("c3").Value = str1 Range("c4").Value = str2 For i = 1 To Len(str1) buf1 = Mid(str1, i, 1) buf2 = Mid(str2, i, 1) If StrComp(buf1, buf2, vbTextCompare) <> 0 Then Range("c3").Characters(i, 1).Font.ColorIndex = 3 Range("c4").Characters(i, 1).Font.ColorIndex = 3 End If Next End Sub
542 名前:538 mailto:sage [2010/03/12(金) 21:03:38 ] >>540 ありがとうございます。 顔洗って出直してきます。
543 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 21:25:28 ] For If xxx then @の処理 Else Aの処理 Bの処理 End If Next
544 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 05:44:13 ] >>538 for x=1 to 100 if xxx _ then @の処理 else Aの処理 end if Bの処理 Next 次のfor分の処理 こう書くと Bの処理をコメントアウトすればいいんじゃねということがわかるけど Aの処理のあと”だけ”にBの処理をしたい、と言うこと?それとも 真ならば他の人のいうとおりだけど Bの処理はAの処理の前にしたいのか、後にしたいのかが不明確ですよ Bの処理がAの処理と独立ならば順不同だけど
545 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 06:06:19 ] VBAと関係ないね
546 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 11:50:59 ] Webクエリでデータを読み込んで加工するVBAを作成しています データの込みこみを待ってから次の工程へ行くようにするにはどうすればよいですか?
547 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 15:10:25 ] >>546 Do While IEobject.Busy = True And IEobject.ReadyState <> 4
548 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 17:47:47 ] こみこみ ← なんかカワイイ
549 名前:546 mailto:sage [2010/03/13(土) 18:59:55 ] ありがとうございます WebクエリとIEObjectの関係が分からないので、 もう少し調べます
550 名前:デフォルトの名無しさん [2010/03/13(土) 20:40:49 ] Cells.Replace What:="1", Replacement:="1", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False 0から9までの全角数字を半角数字に変換したいのですが 上記を10回書くよりも これをfor文で回したいのですが 全角でというのか実現できません 教えてください
551 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 21:28:58 ] >>550 StrConv
552 名前:デフォルトの名無しさん [2010/03/13(土) 22:07:45 ] すみません質問です 以下のような数字の置き換えをしたいのですがどのようにすればいいでしょうか? <a name="1"> → <a href="hoge"> <a name="2"> → <a href="hoge"> <a name="3"> → <a href="hoge"> 〜 <a name="9999"> → <a href="hoge">
553 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:21:59 ] >>550 全角文字をループで扱うのはけっこう難しい。 文字コードを数値として扱う手もあるが、可読性が悪くなる。 プログラムの見栄えをすっきりさせたいなら、 配列に入れるか、置換のための関数を作るという手がある。 aryWhat = Array("0", "1", "2", ……
554 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:30:04 ] >>552 そういう場合は正規表現を使います。桁数の決まっていない数字は[0-9]+と書きます。 <a name=""[0-9]+""> とすれば、これ1行で1から9999までのすべてが検索の対象になるので、これをhogeに置換します。
555 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 22:33:35 ] >>550 ヒント Sub d() For i = 0 To 9 Debug.Print i, StrConv(i, vbWide) Next End Sub
556 名前:デフォルトの名無しさん mailto:sage [2010/03/13(土) 23:34:43 ] >>554 ありがとうございます すごく助かりました
557 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 11:41:57 ] 別のエクセルファイルの標準モジュールに書いてある定数を読み込むには、 どうしたらいいでしょうか?
558 名前:557 mailto:sage [2010/03/14(日) 12:23:52 ] 自己解決しました
559 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 16:11:54 ] NO 品名 価格 数量 金額 1 りんご 100 3 300 ・・・ という連続したデータを NO 1 ・・・ 品名 りんご 産地 数量 3 ・・・・ というふうに転記させる方法を教えてください。 転記先のフィールドは、元のフィールド名のものがない場合もあり、 逆に元のフィールドに無いものが転記先にあったりします。 また、転記元や転記先のフィールドの順番は、入れ替わる場合があります。 うまいやり方がありましたら教えてください。
560 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 17:34:39 ] >>559 どうかな。 1行目に作業用の空白行を追加する。 転記元の左端から1セルずつ値を読み、右に移動するループ(セルが空白になるまで) 転記先の上端から1セルずつ値を読み、下に移動するループ if転記元の値と転記先の値が同じならば 作業用の行に転記先のセル位置を記入 (ここまでで転記先のセル位置を取得) A1 A2 A4 NO 品名 価格 数量 金額 1 りんご 100 3 300 あとは転記元のデータを1行ずつ処理。
561 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 17:39:05 ] >>559 新しいほうのデータの1レコード分の配列を用意する 古いほうのデーターから該当する配列の位置に読み込む 新しいデータへ配列から書き出す 以後レコード分繰り返し
562 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:22:14 ] 別のシートにセルを一個ずつコピーしていけばいいのでは
563 名前:デフォルトの名無しさん mailto:sage [2010/03/14(日) 18:48:01 ] おれだったらVLOOKUPでぱぱっと片付ける
564 名前:480 mailto:sage [2010/03/14(日) 22:45:10 ] Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
565 名前:デフォルトの名無しさん mailto:sage [2010/03/15(月) 14:15:40 ] Excel2007 Workbooks.Add で新規にワークブックを作成する際に オプション→数式で自動になるように作成することってできませんか? 今の状態は手動になっています。
566 名前:565 mailto:sage [2010/03/15(月) 18:09:02 ] 自己解決? 元のプログラムが入っているブックのオプションが手動になっていたので自動に変えたら 新しくできたブックも自動になってました。 なんか、自分自身をコピーして作ってるみたいな?(よく判りませんが w
567 名前:デフォルトの名無しさん [2010/03/16(火) 11:39:35 ] WinXP Excel2003 Sub Input_Date(ByVal iDay As String) ActiveCell.Value = CStr(iYear) _ & "/" & CStr(SpinButton1.Value) & "/" + iDay ActiveCell.NumberFormatLocal = ComboBox1.Value End Sub いまのままだと何処のセルにも入力するようになっています。 指定したセルにのみ入力するよう変更したいのですが、どこを直せば良いでしょうか?
568 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 12:59:16 ] >>567 ActiveCell
569 名前:デフォルトの名無しさん [2010/03/16(火) 16:40:50 ] VBAで、「どこぞのプロシージャ内で」、「別のプロシージャやイベントを設定・修正」するって出来る? 例えばBook/Formのロード時のイベントプロシージャで、 btn_test_1 btn_test_2 … btn_test_10 …って感じのボタン10個について、forで回してそれぞれのClickイベントに同一の処理を上書きさせる、とか。 それともクラスモジュール作って〜な やり方しか無いのだろうか? わかり辛い書き方でごめん。
570 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 17:54:28 ] 2003、XPです。 株のシストレの計算をやらせるのに、ブック2枚を頻繁に行ったり来たりさせるようなモジュールはやはり相当遅くなるのでしょうか? A:計算する元の四本値データだけ入ったブック。(シートが35枚あって、それだけで既に80MBのサイズ) B:Aから計算結果だけを出力させるブック。 一枚に詰め込むべきか、複数枚に分けて管理すべきか・・・
571 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:11:19 ] >>570 単にデータを読み書きするだけなら大して遅くはならない。 いちいちSelectとかActivateとかやっちゃうと遅くなるんで、そうしないように注意してプログラムを作ればいい。 あとは、オブジェクト型変数とかWith句をできるだけ活用すること。 計算中は余分なイベントを止めるのもそこそこ効果がある。
572 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:14:14 ] >>569 質問の1行目だけ見ると答えはNO。 だけどたぶん、別の方法でできることをわかってないだけの気がする。
573 名前:デフォルトの名無しさん [2010/03/16(火) 18:38:49 ] VBAでFX自動売買ソフトを作る事って可能でしょうか? やりたい事 ・業者orヤフー等からのレート取得 ・発注機能 こんな感じです
574 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:42:34 ] 可能です
575 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 18:46:01 ] 是非作ってみたい もしくはどなたかに作成していただきたいです MT4だと業者に対応していないので・・
576 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 19:00:54 ] プログラムもわからんのにそんな事言っててもどうしようもないと思うが んで、誰がただでやるわけww?
577 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 20:13:48 ] >>570 株価データの保存はDBに任せて、Excelは計算に専念させた方がスッキリすると思うけどね
578 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 20:17:59 ] Cells(1, 2) = Cells(1, 1) というマクロを作ったのですが、Cells(1,1)の文字数が多すぎると #VALUE! というエラーが出てしまいます。 Cells(1, 1)の値を他のセルにコピーするにはどうすればいいのでしょうか。
579 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 20:27:13 ] まずは仕様書を書いてね そしたら見積もり出すから
580 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 20:28:36 ] >>578 そのエラーは文字列の長さとは直接は関係ありません。 まずB列の幅を広げて、セルB1の書式を確認してください。
581 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 20:58:02 ] >>578 当方の環境下では Cells(1, 2) = Cells(1, 1) だと 半角256文字以上で#VALUE! になるね Cells(1, 2).Value = Cells(1, 1).Value だと大丈夫みたい なぜかしらんけど つか.Valueを付けるのが本来の使い方なんだけどね
582 名前:デフォルトの名無しさん [2010/03/16(火) 21:29:59 ] >>570 ADOつかてSQL書けよ
583 名前:デフォルトの名無しさん mailto:sage [2010/03/16(火) 22:30:23 ] >>581 XP、2003だけど下記コードでエラー出ない。 なんでだろ? Sub test() Cells(1, 1) = String(257, "あ") Cells(1, 2) = Cells(1, 1) End Sub ↑どっかおかしい?
584 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 01:39:38 ] >>583 これでやったら912文字のところでエラーになった Sub test() For r = 1 To 1000 Cells(r, 1) = String(r, "あ") Cells(r, 2) = Cells(r, 1) Next End Sub
585 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 01:51:17 ] >>575 50万くらい出す気あるなら話聞いても良いよ。
586 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 02:10:47 ] >>584 Sub celltest() Cells(1, 1) = String(910, "あ") Cells(1, 2) = Cells(1, 1) End Sub 910文字まではOKってことだな。 >>578 と>>581 はどういう現象なんだろ?バージョンの問題かな?
587 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 03:01:12 ] いや、911文字までOK。 ていうか、みんなOSとExcelのバージョンぐらい書こうよ。 うちはXPと2003。 ちなみにVBAを使わずにセルに直接入力した場合は1セル32767文字まで入る。 ttp://office.microsoft.com/ja-jp/excel/HP051992911041.aspx
588 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 03:15:21 ] >>587 ん? >>584 だと911行目でエラーが発生してるから 911文字はエラー、910文字まではOKってことじゃないの? OSとバージョンが同じだから、やっぱりバージョンの問題なんだろうな。
589 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 03:22:49 ] doudemoii
590 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 12:25:45 ] どうでもよくない。 >>578 と>>581 の状況が再現できないと回答もできないし、 自分が同じトラブルに遭う可能性だってあるわけだから解決できないと気持ちが悪い。
591 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 12:47:26 ] >>589 だんだん話しについていけなくなっちゃったんだろうなw
592 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 14:51:07 ] 気持ち悪いから>>578 早く戻って来い!
593 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 16:29:57 ] >>581 で再現できてんじゃん
594 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 17:26:31 ] で、解決方法は?
595 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 17:31:37 ] 再現できないとか言ってるから、再現できてると言ったまで。 >>581 によれば、Value付ければいいんじゃないの?
596 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 17:47:44 ] >>594 Cells(1, 2) = Cells(1, 1).Valueにすればいい。 Cells(1, 2) = Cells(1, 1)と何が違うのかは知らん。
597 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 17:53:15 ] 解決できないから気持ちが悪いんじゃなくて、解決できてるけど仕組みがわからなくて 気持ちが悪いんじゃないの?
598 名前:デフォルトの名無しさん [2010/03/17(水) 18:11:26 ] 初歩的な質問ですんません セルに直接入力せずに三角形みたいなのをクリック(セルをクリックすると現れる三角形)すると あらかじめ設定してた項目を取り出せるあの機能はなんて名前でしったけ? またその設定はどこでやればいいですか? お願いします。vista使いです
599 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 18:16:36 ] >>598 ひょっとして、これのことか? Excel講座 > セルをコンボボックスにする www.serpress.co.jp/excel/no004.html
600 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 18:35:25 ] うちだと910文字超えないとエラーにならないのに、 どうして>>581 は256文字でエラーになるの? もうちょっと再現の条件とか手順をkwsk
601 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 18:45:27 ] >>599 そうそうそれそれ どうもすんません
602 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 19:41:37 ] >>598 セルにコンボボックスを仕込むより入力フォームを作って ボタンぼんでシートに値がコピーされるように作った方がいいと思うが。
603 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 20:40:45 ] テスト
604 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:04:36 ] Excel2007 ブックを新たに作成するときにシートの枚数を3枚とか指定することは出来ないのでしょうか?
605 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:19:57 ] テンプレートで
606 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:20:48 ] >>604 Application.SheetsInNewWorkbook = 3 こういうこと?
607 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:23:33 ] あ?テンプレの話? 2003だと ツール→オプション→全般→新しいブックのシート数 で設定できる。2007はわからん。
608 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:28:37 ] >>606 それです。ありがとう テンプレートは?状態ですけどw
609 名前:デフォルトの名無しさん mailto:sage [2010/03/17(水) 22:30:49 ] >>608 とりあえずググれよ。(もう見てないだろうが・・・)
610 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 06:32:14 ] >>600 どうしてExcelのバージョンすら明記しないのか不思議。馬鹿?
611 名前:デフォルトの名無しさん [2010/03/18(木) 13:18:25 ] >>610 話の流れからすると910文字までいけるのは、XPで2003だって二人が書いてるぞ。 バージョン明記してないのは質問者と>>581 の解答者だ。 それはそうと、これだと10000行までいけるなw Sub test() For r = 1 To 10000 Cells(r, 1).Value = String(r, "あ") Cells(r, 2).Value = Cells(r, 1).Value Next End Sub
612 名前:611 [2010/03/18(木) 13:44:40 ] おっと、>>611 はXPで2003だ。 ちなみに、Win7の2007でも検証してみた。 ・Valueあり→10000行までいけた ・Valueなし→8203行目でエラー という結果。2007だとValueなしでもこんなにいけるんだなw ってことは、質問者のバージョンは2002以前とエスパーしてみる。 それにしても、2007のVBEどっから起動するのかわからなくてビビったw
613 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 15:21:35 ] >>611-612 >>600 の「うち」の環境を書けと言ってるんだ、馬鹿。 じゃなければ、第三者が全体を把握できないだろ。
614 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 15:41:08 ] >>611-612 Value付ければいいって結論が出てるのに、いつまで何やってんの?
615 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:06:15 ] >>613 >>600 は、910文字超えないとエラーにならないって書いてあるから 流れから2003だってわかると思うが? 流れを読まなくてもわかるように、レス内に明記するのがネチケット(笑)ということなら、 まぁ、そういうことなんだろうw >>614 Valueは単純に“省略可能なもの”と認識してたんだが、 今回のケースで言うと、場合によっては省略してはいけないってことか? すまん、素人にもわかるように説明してくれ。
616 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:13:20 ] >>615 とことんアホだな。 仮にExcel 2003が911文字目からエラーになるということだとしても、 911文字からエラーになるからといってそれがExcel 2003とは限らないだろ。 高卒文系なのか? 何かを明らかにしたくてその話題に参加し、なおかつ相手に再現の手順を求めるのなら、 まず自分の情報を出せっつーこった。 > すまん、素人にもわかるように説明してくれ。 知るかアホ。 このスレは素人の好奇心を満足させるスレじゃねーよ。
617 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:19:38 ] >>611 ド素人はこれだから困る。 セルに設定出来る最大文字数はヘルプにちゃんと書かれてる。 ヘルプ見ろ。
618 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:24:40 ] エクセルVBAに詳しい人教えてください! yutori.2ch.net/test/read.cgi/morningcoffee/1268888151/
619 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:32:09 ] いつまでやってんだよ……
620 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:32:10 ] >>616-617 論点がずれてますよ。 人のことを馬鹿とかアホとか高卒文系とかド素人とか言ってるけど、 話の内容を理解できていないのは、あなたの方ですね。 何かを明らかにしたくないなら、あなたはこの話題に参加しなくてもいいと思います。
621 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:37:10 ] ずらしてんのはお前の方だ馬鹿。 これになんかコメントしてみろ、アホ。 > 仮にExcel 2003が911文字目からエラーになるということだとしても、 > 911文字からエラーになるからといってそれがExcel 2003とは限らないだろ。 > 高卒文系なのか?
622 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:38:03 ] >>618 ソース見てボタンの名前調べればいいんじゃないの? そんな単純なことじゃなくて?
623 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:38:50 ] ・Valueを付ければ問題ない ・Excelの仕様上、何文字まで設定出来るかはヘルプに書かれている これ以上、何を知りたいの?
624 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:41:05 ] 話の流れからするとw、>>600 =>>611 じゃねーの? 馬鹿と言われて悔しかったのかな?
625 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:41:30 ] >>621 hideyoshi.2ch.net/test/read.cgi/mental/1266008088/l50 とりあえず筋トレでもしてみたら?
626 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:45:40 ] おまいらいつまでやってんだwwwwwwwwwwww
627 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:50:36 ] >>625 反論不能か、高卒文系のド素人が。 もう黙っとけ。
628 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:57:30 ] VBAからGroovyのプログラムを呼びたいんですが、何か方法はありますか? Groovyに限らず、VBAから他の言語のプログラムを呼んで、返り値を使用する ことってできるんですかね?
629 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 16:58:28 ] 一つのセルには200文字も必要ねーな。 50文字でも十分じゃね? 数式厨には足りないかも知らんけどw 超長ーい数式を得意としてるやつもいるからな。
630 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:05:02 ] >>621 必死ですね。コメントを求められているのでレスしますね。 その事象が起きるからといって、Excel2003だという証明は私には出来ません。 学歴も聞かれてますね。おっしゃる通り文系ですが大卒です。 これでよろしいでしょうか?
631 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:06:40 ] だよな。表計算ソフトなんだから50文字でも多いぐらいだ。
632 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:09:01 ] 超長〜い数式は勘弁してほしいw
633 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:18:44 ] 超長ーい数式とか配列数式とかSUMPRODUCTのフィルコピーが大好きなやつはほとんどアホばかり。 VBAで言えば変数使わないで何度も同じ値を取得してるようなもんだ罠。 数式でやるならVBAの変数に相当する作業セルを使えってこった。
634 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:22:44 ] >>623 もういい加減アホとか言うのやめれ。
635 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:25:04 ] ん?俺のことかな すまん、今度からヴァカと書くことにするわ。
636 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:27:44 ] >>630 証明できるかどうかなんて聞いてないんだよ。 >>615 > 流れから2003だってわかると思うが? わかると思ってるなら、それは馬鹿ゆえだってことだ。 横からノイズ増やしといて、俺の知りたいことだけお前ら教えろとかいう奴はいらないんだよ。 わかった?
637 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:31:39 ] ふぁいと! 俺は50文字でも十分すぐるから興味ナス
638 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:32:35 ] >>630 お前も必死だよwww
639 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:34:53 ] 大卒文系って、裏・逆・対偶レベルの論理学も理解できないの? 今はやりのゆとりって奴?
640 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:36:20 ] まぁ餅つけ 50文字でも十分ということで糸冬了
641 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:39:24 ] まぁ、セルに表示できないような文字数を設定するというのは、基本的な使い方では ないわけだから、自分がそのような処理を実装しなければならなくなったときに、 ターゲットとなるExcelの仕様上の制限を調べ、テストを十分にやれば良い。
642 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:41:21 ] 必要条件と十分条件を良くわかってない馬鹿SEのことを思い出した。
643 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:43:09 ] CellsのデフォルトプロパティがValueじゃないってことじゃないかと思うけど、 調べるつもり無し。
644 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:51:55 ] Cells(2, 1) = Cells(1, 1) でエラーが発生するとき、 Range("B1") = Range("A1") でもエラーが発生するね。 何故なのかはそれほど知りたくないけど、RangeのデフォルトプロパティはValueだって 思ってたので、ちょっとキモチワルイ。 やっぱり Range("B1") = Range("A1").Value と書くと動く。 まぁ、デフォルトプロパティは使うなってことかな。
645 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:52:57 ] スレが伸びてると思ったら一人で暴れてるようだな。 文体でバレバレだw
646 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 17:57:50 ] >>644 セルの文字数についてはバージョンによる違いだってわかるけど、 Valueの省略については色々調べてもわからなくて、昨日からずっと気持ち悪い。 納得できる答えをくれる神は降臨しないかと待ってるんだけど スレ覗く度に荒れる一方で(ry
647 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 18:22:47 ] >>646 納得できる答えが見つかっても、安全側に倒してデフォルトプロパティに頼らない コードを書くしかないという状況は変わらないよ。
648 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 18:24:50 ] >>645 バレバレw
649 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 18:29:42 ] まぁどっちもひといが、この板的にはこれが一番ひどい。 >>611 >それはそうと、これだと10000行までいけるなw
650 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 18:38:10 ] 例えば Sub test() MsgBox TypeName(Range("A1").Value) MsgBox TypeName(Range("A1")) End Sub とやると Empty Range となる
651 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 19:46:05 ] >>650 だから?
652 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 19:54:40 ] >>611 にガン擁護された>>600 は、どのような登場の仕方をするのであろうか。
653 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 20:44:22 ] >>623 256文字でエラーになるExcelのバージョン
654 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 23:07:40 ] >>653 え!?それかよっ!!www
655 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 23:27:05 ] >>653 うち Excel2003(XP) と Excel97(Win98)あるんだけど Excel97(Win98) だと256文字でエラーになる
656 名前:デフォルトの名無しさん mailto:sage [2010/03/18(木) 23:48:24 ] 哲也君がVBAマクロを2昼夜かけて作ったんですよ。 これが本当の「マクロ 2夜連続」なんつって。
657 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 02:04:41 ] >>653 だったら、初めから自分の環境の結果を書いとこうね。 俺は何もしないけど、お前ら俺の知りたいことを教えろパターンですな。 ちなみに俺は、これまで出ていないExcel 2000を持っていて実験もし結果もわかったが教えない。
658 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 06:32:11 ] 俺はウチとまったく同じ環境の結果がガイシュツだから書かなかっただけなんだけど、 同じことを何度も書かなきゃいけないの? 役所に出す書類だな、まるで。
659 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 06:38:42 ] それが知りたいんだったら、既出の情報をまとめるなりなんなりしろよ。 餓鬼かよ。
660 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 07:31:23 ] 私女だけど、たった1行の実験結果を書かずに言い訳を何行も書く男の人って
661 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 08:40:37 ] まとめなきゃ把握できないほどの情報量か? 数えてないけど3例ぐらいしか出てなかっただろ。
662 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 08:55:26 ] XP 2003です ググっても中々みつからないんだけど、 手動で選択したセル範囲の数字を一気に計算(仮に10倍)とかするのってVBAで出来るの? あとついでに、セル範囲の一番右下の座標も取りたいんだけどやり方教えてください。
663 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 09:11:53 ] >>661 いつまでやってんだ
664 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 09:13:07 ] >>662 前半:できる。rangeを関数の引数に取りfor each 後半:一発でできるかどうかは知らん
665 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 09:15:03 ] >>682 VBAでもちろん出来るが手操作でも出来る。 どっかのセルに10と書いて、コピー、形式を選択して貼り付け、乗算 一個の選択した矩形範囲の右下隅のセルを操作したければ Selection(Selection.Count).**** Excel2003はこれで大丈夫だが、Excel2007は全セルを選択したとき CountプロパティがLong型なので入りきれなくてエラーになる。 そこまで考慮するなら With Selection .Item(.Rows.Count*.Columns.Count).**** End With 座標って行番号とか列番号とかアドレスが必要なケースは滅多にないだろう。 全くないというわけではないが。
666 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 09:15:04 ] >>661 ほら、お前もスレを確認しないと状況がわからないだろ。 >>653 の知りたかったことなんて誰も知らないんだから、状況をまとめて あとこのバージョンの動作を教えてくれってやるのが筋。
667 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 09:59:47 ] >>653 Excel 2000では256文字目でエラーになる。 これで全部揃った?揃ったならまとめくらいしてもバチはあたらないよ。
668 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 10:08:55 ] Excel95がまだ出てなーなw
669 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 10:26:54 ] だれか知ってる人がいたら教えてくれ。 A1の表示形式がG/標準のとき Debug.Print Format(Range("a1"), Range("a1").NumberFormat) とやると"M32032ral"が返るんだが、これって何?
670 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 10:28:49 ] いかん、Valueつけるの忘れたわ
671 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 10:31:38 ] A1の値を書くのも忘れたわ 1の場合ね
672 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 10:38:56 ] >>669 知ってるのか知らないのかわからないが、それ、Formatの第二引数の指定方法が間違ってる。
673 名前:デフォルトの名無しさん [2010/03/19(金) 11:18:49 ] 競艇のネット自動投票プログラム作っています。自動ログインは完成しましたけど、 次の画面の投票する競艇場選択のボタンを押す方法が分かりません。 押したいボタンのHTMLソースは以下 <input value="福 岡" onclick="jyocd(22)" tabindex="2" type="BUTTON"> ボタンの名前(name)が無いから通常のやり方ではできません。 また、 SendKeys "{TAB 5}" SendKeys "{ENTER}" で5番目の競艇場をクリックではできましたが、最終レースが終わると その競艇場選択ボタンが消えますので、必ずしも××競艇場が5番目とは限らないのです。 検索等で昨日1日中調べてみましたが解決しません。。。助けてください。
674 名前:デフォルトの名無しさん [2010/03/19(金) 12:08:09 ] データについているハイパーリンクの中の数字を取り出して(〜info.php?chr=25121とあったら568311)、もしAという数字だったら、その列の情報を全て、シートAにコピー という仕組みを作りたいと思っております。 ハイパーリンクの中の数字を参照するには、どうしたらよろしいのでしょうか?助けていただけると助かります。
675 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 12:57:29 ] >>672 どこが? まさかNumberFormatLocalってんじゃないだろうね。 もしそう思ってるならそっちが間違ってる。 そんなことはないとは思うけど。
676 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 12:58:20 ] まとめました。扱える文字数はバージョンの違いってわかるんですけど、 何故Valueを省略するとエラーが出るのか、どなたか教えて頂けませんか? 【バージョン不明】 256文字以上でエラー >>578 (質問者)、>>581 、>>596 911文字以上でエラー >>600 【バージョン記述あり】 Win98&97(256文字以上でエラー) >>655 OS不明&2000(256文字以上でエラー) >>655 XP&2003(911文字以上でエラー) >>583 (>>588 ?)、>>584 (>>587 ?)、>>586 Win7&2007(8203文字以上でエラー) >>612
677 名前:676 mailto:sage [2010/03/19(金) 13:01:21 ] 訂正ですorz OS不明&2000(256文字以上でエラー)は>>667 でした。
678 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 13:14:44 ] あぁ分ったわ。 NumberFormatは"General"だから Gは元号のGで明治だからM eは和暦の年 nは分 eは和暦の年 ralはGeneralの右3文字だな。 結局Formatじゃ駄目でWorksheetFunction.Textってことか。 俺の間違いだったわ。
679 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 14:42:54 ] >>678 いやいや、ヘルプ見ろよ
680 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 14:46:07 ] >>676 それ多分OS関係ない。 > 何故Valueを省略するとエラーが出るのか、どなたか教えて頂けませんか? 多分、今ここにいる奴は答えられないから、これまでに回答がないんだよ。 モーグにでも行けば?
681 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 17:50:13 ] >>674 > chr=25121とあったら568311 の法則がよくわからない。 Aは数字じゃない。 16進?でもなそさうだし。
682 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 17:53:43 ] >>679 FormatもWorksheetFunction.Textも似たようなもんだろうと思ってた俺が 馬鹿だったが、Formatのヘルプの表示書式指定文字なんて一部しか載ってないね。 とりあえず"s","h","n","g","aaa"などが抜けてる。 "General"はWorksheetFunction.TextにはあるがFormatにはないということだな。
683 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 18:01:50 ] 範囲指定していっぺんに10倍はVBAでもできる。 「形式を選択して貼り付け、乗算」をマクロの記録してみ。
684 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 18:12:10 ] Formatのヘルプの最後にある表示書式指定文字だが、あれは一覧じゃなかったか。
685 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 18:14:19 ] >>682 ホントだ。ローカルのヘルプは抜けてるのがある。 オンラインヘルプなら全部出るみたいだけど。
686 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 18:26:38 ] >>682 あと"p"とか"ccc"とか"ooo"とか"ww"とかもあるみたいね。 Format(1,"ww")が53、Format(1,"www")が531になるがなんのこっちゃ。
687 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 18:47:18 ] "p"じゃなくて"q"だったわ。 "ccc"も"c"ね。 Format$(シリアル値,"yyyy/mm/dd")とするところを Format$(シリアル値,"c")としても同じみたい。 >>685 オンラインのヘルプどこ? さっきから探してるんだが見つからん。 MSDNかな?
688 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 18:54:35 ] cはcountryのcだと予想して地域オプションをいじくってみたら、案の定 Format$(シリアル値,"c")は必ずしもFormat$(シリアル値,"yyyy/mm/dd")と 同じじゃなかったわ。
689 名前:662 mailto:sage [2010/03/19(金) 19:51:07 ] >>664-665 回答ありがとうです。本当にたすかりました。 面倒なんで「(どっかのセルに10と書いて)コピー、形式を選択して貼り付け、乗算」をマクロ記録させてそれでやり過ごしました。
690 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:03:49 ] Formatの奴うざいよ? Valueの奴と同じちゃうんかと思われるレベル。
691 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:15:38 ] うざくてすまんね。 Value関連は考えすぎだな。 629と633と637は俺だけどな。
692 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:21:00 ] というわけど、今後は>>690 のハイレベルな回答を期待しましょうねw
693 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:38:21 ] ヘルプ見ろでFAだろ。 質問者はまだ見れてないようだが。
694 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:42:05 ] めんどくさいけど探してやった。 ほれ。 msdn.microsoft.com/ja-jp/library/59bz1f0h (VS.80).aspx
695 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 20:47:20 ] それVBAも一緒なの?
696 名前:デフォルトの名無しさん [2010/03/19(金) 20:51:40 ] ブイバのことは俺に任せろ!
697 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 21:04:53 ] >>693 クソ生意気な奴だなぁ。 ヘルプくらいは真っ先に見てるさ。 俺の見れるヘルプにはcやwwwは見れないんだよ。 お前がそういうなら探せばどっかにあるんだろうけどね。 Formatで検索して出てくる下には書いてない。 Format 関数 ヘルプ > 関数 > D-G Format 関数の使用例 数値表示書式指定文字 (Format 関数) 文字列表示書式指定文字 (Format 関数) 数値を表すその他の書式 (Format 関数) もうどうでもいいけどな。
698 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 21:09:18 ] >>694 お、ありがとう。 そこにあったか。 どうでもいいと書いたがこれから見るわ。
699 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 21:14:54 ] >>693 =694の俺なんですが・・・
700 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 21:18:56 ] なんというツンデレ!! おまいら何やってんだよwww
701 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 21:25:30 ] >>699 ふーん? 結局お前もまともにヘルプ見てなかったと言うことかw >>694 もリンク先見たけど、cやwwwは載ってないわ。 ExcelヘルプでFormatで検索しても出てこなかったが、表示書式指定文字で検索したら出てきたよ。
702 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 22:21:05 ] >>701 日付の書式のヘルプ初めて見たよ。 cとかooooとかwwとか今まで知らんかった。
703 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 22:35:11 ] >>702 同じく。 しかしヘルプでFormatじゃなくFormat関数と最後まで打てば日付関連の書式は出てきたな。 手抜きはいかんな。 またうざいとか言われるからこのへんにしとくよ。
704 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 22:53:23 ] >>703 「Format 日付」でも出てくるよ。 間にスペース入れればAnd検索だな。
705 名前:デフォルトの名無しさん mailto:sage [2010/03/19(金) 23:16:10 ] >>704 トンクス Formatだけでも2ページめにあったね。 ヘルプはカーソル当ててF1しか普段使わないから、オンラインヘルプの使い方知らなかった。
706 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 02:51:23 ] いつからこのスレは自分が発見したことのメモ帳になったんだ
707 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 02:53:16 ] >>701 で、結局そのヘルプのありかをこのスレにフィードバックするつもりは無いのか。 やっぱValueの奴とレベル一緒だわお前。
708 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 03:37:26 ] >>672 でちゃんと使い方が間違ってると教えてもらってるのに、何なのこいつ。
709 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 07:56:45 ] >>672 >>669 だが、夜会合ですぐレス書かなくてすまんな。 ヘルプは>>671 や>>704 のおかげで読めたよ。 俺も実は探せてなかったもんでね。 ヘルプ読めと言いながらVBAのヘルプじゃないものを教えた人もいたみたいだが。
710 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 08:02:40 ] まちがった >>701 や>>704 のおかげな
711 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 08:09:44 ] >>707 ヘルプのありかは>>701 はフィードバックしてるんじゃね? 表示書式指定文字で検索って書いてあるし。 Excelヘルプをオンラインヘルプに読み替えればいいんじゃね?
712 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 10:14:12 ] ヘルプ見ろで切れまくる奴はいるは、ヘルプ見つけられない奴続出だわ、レベル低すぎ。 お前ら一体今までどうやってプログラミングしてたんだよ? 何でもググってコピペしてたんじゃねーの?
713 名前:デフォルトの名無しさん [2010/03/20(土) 10:14:17 ] エクセルVBAであるサイトのラジオボタンを自動で選択するマクロを作っているんだけど その方法が検索で調べた方法じゃできなくて困っています。 HTMLのラジオボタンの部分のソースは <input name="kumiban1" value="1" onclick="check1(this)" tabindex="3" type="RADIO"> となっています。 "kumiban1"のvalue="1" をクリックしたいのです。
714 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 10:37:36 ] >>713 同じページ内に同じ名前の name="kumiban1" が複数あった場合は objIE.document.all("kumiban1") だとエラーになる。 そういう時は objIE.document.all("kumiban1")(0) 、objIE.document.all("kumiban1")(1) のように番号を付ける。 自分のチェックしたいボタンが何番目かは自分で調べてね。
715 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 10:50:18 ] >>712 まぁまぁ、レベルの高いと思われる>>694 でさえ見つけられなったんだから。 俺もF1キーで大体事足りてるしね。 ところで2010では有名なFindメソッドの使用例の間違い、直ってるか誰か知らない? 俺未だにISDNだからベータ落とせない。 前トライしたら途中で切れてばっか。
716 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 10:53:30 ] >>712 コピペでマクロ作って社内で高評価 ↓ 自分で考えなければできないようなことをさせられる ↓ コピペ技術だけじゃどうにもなんねぇ・・・でもまともに組んだことねぇ ↓ そうだ!聞いて教えてもらう←いまここ ↓ 結局できない ↓ 評価右肩下がり
717 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 10:54:51 ] >ISDN マジか!! まだいるんだなぁ… テレホ思い出したわ つうか、ネカフェとか行ってDLしてくりゃいいんじゃねぇの?
718 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:10:16 ] かわりにダウンロードしてくれる友達とかいないの?
719 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:12:59 ] >>717 そんなものあったらすでに行ってるよ。 こちとらド田舎離島だからね。 今度弟にDLしてもらって郵送してもらうかな? 来年は光が開通するんだが。
720 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:14:44 ] >>718 リロードしなかった。 >>719 のとおり。
721 名前:デフォルトの名無しさん [2010/03/20(土) 11:24:21 ] >>714 >番号を付ける の記述はどうやるんですか?
722 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:33:19 ] >>721 えっ 回答にちゃんと番号付いてるやん
723 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:34:30 ] >>715 なんで>>694 がレベル高いことになってるんだかさっぱりわからんが、F1で事足りないときの 対処法を言ってるんだが。馬鹿(694)が一人でもいると、自分がマニュアル見ないエクスキューズになるのか?
724 名前:デフォルトの名無しさん [2010/03/20(土) 11:36:25 ] >>722 いや構文の記述法がよく分からないのです
725 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:40:09 ] プログラマー RTFMは 遠くになりにけり
726 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:44:44 ] >>723 レベルが高いをまじにとったか。 昨日Value関連でさんざん罵倒してたのが彼だと思ったからちょい嫌味で書いただけ。 人違いだったらごめんな。
727 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:49:06 ] >>724 ブラウザをコントロールする方法はいくつかあるから、 まずは自分のやりたい方法というか、試してだめだったプログラムをここにアップして。 そしたら修正点を書くから。
728 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:53:56 ] ってかここカルシムム不足がいるよね。 あーいえばこういうし困ったもんだ。
729 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 11:59:21 ] 牛乳飲もう
730 名前:デフォルトの名無しさん [2010/03/20(土) 12:05:08 ] >>727 いくつか試したんですが例えば↓こんな感じです。 Dim objIE As Object Dim objITEM As Object Dim nNO As Integer Dim strRADIO(0 To 5) As String strRADIO(0) = "1" strRADIO(1) = "2" strRADIO(2) = "3" strRADIO(3) = "4" strRADIO(4) = "5" strRADIO(5) = "6" nNO1 = 1 On Error Resume Next For Each objITEM In objIE.Document.all If objITEM.TAGName = "INPUT" Then If objITEM.Name = "kumiban1" And objITEM.Value = strRADIO(nNO) Then objITEM.Checked = True End If End If Next
731 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 12:26:28 ] >>728-729 まったく関係ないけど、それ俗説だから。
732 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 12:39:24 ] アホがアホって言われることが気に入らない奴が居るみたいね。
733 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 12:40:04 ] >>731 そうかカルシウムじゃ駄目なのか。 もう駄目かも知らんね。 もともとプログラマーは廃人が多いんだが。
734 名前:デフォルトの名無しさん [2010/03/20(土) 15:17:17 ] すみません、A列目の値が x で、1行目の値が y となるようなセルを探すのは VBAでできますか?Excelの機能だけでもできますか? どんな関数を使えばいいかヒントをください。検索します。
735 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 15:25:25 ] >A列目の値が x で、1行目の値が y となるようなセル ??????????????
736 名前:734 mailto:sage [2010/03/20(土) 15:34:52 ] すみません、A列の値と1行目の値をキーとして交差するセルを検索したいのです。
737 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 15:38:47 ] ctrl + Fで検索すればいいんじゃないの? つか、ここはVBAの質問スレだぞ。
738 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 15:47:57 ] すみません、そのセルの値をプログラム的に参照したいということです。
739 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 15:54:08 ] A列の値と1行目の値をキーってのがわからない 例をしめしてちょ
740 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 16:07:06 ] >>734 どうかな? Do While セルの値が空白になるまで if セルの値が"x"の場合 セルの位置を取得してLoop終了 end if 一つ次のセルへ移動 Loop
741 名前:740 mailto:sage [2010/03/20(土) 16:28:45 ] 考え方は以下の手順でよろしいかと。 A列を検索し、"x"の入っているセルの行番号を取得 1行を検索し、"y"の入っているセルの列番号を取得 Cells(行, 列).Value で目的のセルの値を取得
742 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 16:40:39 ] worksheetfunctionでlookupとかじゃだめなの? 質問者のレベル的にそこまで難しいことをしてなさそう。
743 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 16:52:32 ] でも、質問があると速攻答えてくれるお前らは何だかんだで根はいい奴等だと俺は思ってるんだからね///
744 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 16:59:13 ] >>713 ,730 コピペミスだと思うけど <input name="kumiban1" value="1" onclick="check1(this)" tabindex="3" type="RADIO"> を対象なら >>730 は 誤 nNO1 = 1 正 nNO = 0 ではないかな これでチェックが入るはず その上でonclick="check1(this)"を作動させたいのであれば objITEM.Checked = True を objITEM.Click に変更してみては?
745 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:44:50 ] 下手な言葉で説明されるよりも具体例を出して何をしたいのかを言った方が遥かに早いと思うぞ >>734
746 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 18:57:12 ] 質問です。 決まったセルの位置をVBAで扱う場合、 私は下記のように定数定義して使っています。 Public const 合計金額欄 As String = "D8" この方法は、 Range(合計金額欄) には良いのですが、 Cells(r, c) で使いにくい欠点があります。 みなさんはどんな風に位置を定義していますか?
747 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 19:30:22 ] >>746 極力マジックナンバーや文字列リテラルをコードの中に入れないと言う 方向性はいいけど、度が過ぎるとくどいコードになるから嫌われるよ。 セルくらいはコードの中でオブジェクト変数に Set c = Range("A8") と書いてcを使い回せばいいじゃん。 多くのプロシージャで定数の合計金額欄を使いたければ 各プロシージャの 中でオブジェクト変数に Set c = Range(合計金額欄) などとセットしてcを使い回せばいい。 CellsやRangeを頻繁に使うコードはあまりきれいじゃないから。
748 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:01:14 ] プロシージャの先頭で Set c = Range(合計金額欄) みたいにして、実際の処理にはcを使うようにすればいい。
749 名前:デフォルトの名無しさん [2010/03/20(土) 21:04:11 ] 「名前」を挿入しろよ
750 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:19:53 ] >>725 2010のFindメソッドのヘルプは相変わらず間違ったまま。 直す気はさらさらないんでしょうね。 2002のころから報告は山ほどいってるはずなのに。 あと静かになったところを混ぜ返すのもなんだけど >>669 ,>>672 別にFormatの第二引数の記述が間違ってるわけではないでしょう。 ご本人が>>678 で書かれてるように第二引数の書式にそって出力 されてるだけだから。 Format(Range("a1"), Range("a1").NumberFormat) すなわち Format(1, "General") すなわち"Genaral"の左4文字は書式指定文字で Format(1, "Gene"""ral""")と同じ。 シリアル値の1は1899/12/31(明治32年12月31日)だから 書式にそって"M32032ral"が出力された。 別に記述が間違ってるわけではないですね。 "M32032ral"に意味があるかと言われれば何もないけど Format(値,Range(***).NumberFormat)って書き方は日付の値検索で 使うこともあるね。 長文失礼
751 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:25:00 ] わかった。 お前が一番のいらない子だ。
752 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:27:08 ] つか、暴言は気まくりの奴をなんで「ご本人」とか言ってるんだか
753 名前:746 mailto:sage [2010/03/20(土) 21:35:04 ] >>747 >Set c = Range(合計金額欄) なるべく上記のようにして変数で取り扱うようにしたり、 Withで記述を省略したりしています。 >度が過ぎるとくどいコードになるから嫌われるよ。 入力フォームと定数定義を作りながら、 だんだん動作と実装のイメージを固めてコーディングに取り掛かる、 という作り方をしてるorz。
754 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:38:09 ] >>750 何を言いたいのか良く解らないけど、それマニュアル読めば解決することだよね? マニュアル読めという回答はするなという主張なのかな。
755 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:48:26 ] ほとんどの質問はぐぐれば解決することだよね? 以下略
756 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:49:12 ] 暴言ねぇ、 そんなのどうでもいい。 仮に丁寧でも内容が間違ってれば駄目だから。 ヘルプ読めはべつにいいんじゃないの? ただ間違った指摘があったから書いただけ。
757 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:51:25 ] >>746 本当に決まり切った位置なら、セルに名前を付ける。 home.att.ne.jp/zeta/gen/excel/c03p05.htm そうじゃないなら、Rangeを返す関数を作ったり、そのRangeの値を返す関数を作ったりする。 function SumPriceRange() as range set sumpricerange = range("d8") end function function GetSumPrice() as long getsumprice = range("d8").value end function とか。
758 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 21:58:44 ] >>750 君って、printf("%d", some_pointer)で変な値が出力されるんですけど、とか聞かれたら、 どのような仕組みでその変な値になるか説明しそうだな。
759 名前:746 mailto:sage [2010/03/20(土) 22:09:56 ] >>757 セル範囲を管理するモジュールを1つ用意して、 その中にセル範囲を返す関数を並べ、 各プロシージャはそれを参照するという感じでしょうか?
760 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:12:32 ] >>750 669だけど、WorksheetFunction.Text(値,書式)のように返り値1を期待してのものだったので俺の間違いでいいです。 これ以上相手すると疲れるから。 降参です。
761 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:17:28 ] 自分で事を荒立てといて、なんていいぐさw
762 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:23:59 ] 最初のレスでG+e+n+e+ralで表示された結果って書いとけば良かったんだよ。 マニュアル読めとか出し惜しみすんなよ。
763 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:37:59 ] なんか再燃してるねぇ。 2chはこうじゃなくっちゃw >>752 暴言がどれをさすか知らんけど、クソ生意気と書いたのは俺で質問者じゃねーから。 >>762 出し惜しみする頭なんてあるわけないと思うw Formatの使い方よく知らないからヘルプヘルプとわめいてたんじゃね?
764 名前:デフォルトの名無しさん mailto:sage [2010/03/20(土) 22:41:43 ] ヤレヤレ ┐(´ー`)┌ マイッタネ
765 名前: [―{}@{}@{}-] デフォルトの名無しさん mailto:sage [2010/03/20(土) 23:49:45 ] >>750 どうもです MSも相変わらずですか。
766 名前:デフォルトの名無しさん [2010/03/21(日) 10:49:19 ] >>744 でもダメですた。 競艇の自動投票を作っているんですけど競艇のサイトが特殊なのかな・・・ ラジオボタンのチェックが入りません。
767 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 10:58:32 ] >>750 何がどう間違っているのか書けよ屑
768 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 11:30:42 ] >>766 投票ページにアクセスするには会員登録が必要だろうから、 そのページのソースをどっかにアップしてくんない?
769 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:06:08 ] >>750 お前の存在が間違いじゃないの? そもそも荒れた原因はお前が最初にFormatのやつうざいと言ったからだろ? Valueから暴れてるよな? もういいから消えろ。 素人の好奇心云々や文系高卒やらさんざん暴言吐いてたのはお前だと思うが 素人はお前だ。 玄人と思ってるかも知らんけど、それは勘違いというものだ。 わかった?トウシロのぼくちゃんw
770 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:07:29 ] テンプレに、「まずOption Explicitをつけろ」も追加が必要だな
771 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:09:54 ] おーすまん>>750 上はもちろんトウシローの>>767 あてね
772 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:11:17 ] >>750 > 別にFormatの第二引数の記述が間違ってるわけではないでしょう。 これってへりくつって言うんですよ。 それに既に>>678 で説明済みのものを、自分の言葉で長々とかかずにはいられない ほど自己顕示欲をもてあましてるんでしょうか。
773 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:13:46 ] >>769 そんなに基本的な論理学もわかってなかったことを指摘されたのか痛かったのかな。 知らないことを教えてもらったという意味で、感謝されてもいいくらいだ。
774 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:13:54 ] 「間違いを訂正するときには、 名前欄に自分のレス番号を記入すること」も追加かな。
775 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:20:31 ] はっきり言って、>>2 にもあるように、Excelのバージョンくらい書くのがこのスレの礼儀だし、 まずヘルプを確認するのが常識なんだけど、それを指摘してる奴が痛すぎて、相対的に バージョンも書かない、ヘルプも読まない奴の方が正義っぽくなってる。
776 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:22:47 ] そいつの相手してる奴がこれまた痛いw
777 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:23:19 ] >>767 "M32032ral"って何かって質問だから>>762 を読めば? 何で出し惜しみしたの?
778 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:28:44 ] いろんな厨がいるが、ヘルプ厨ってのもいるんだなw
779 名前:744 mailto:sage [2010/03/21(日) 12:39:04 ] >>766 これ以上は自分の手に負えそうに無い感じだけど 最後に1点だけ If objITEM.Name = "kumiban1" And objITEM.Value = strRADIO(nNO) Then Debug.Print "ここに北" objITEM.Checked = True End If とかやってみ イミディエイトウインドに何も表示されないなら 対象タグを見つけられてない フレーム分割されているとかそんな感じじゃないのかな
780 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:42:42 ] >>777 俺は頭悪いからそんなこと分らないんだよ とにかくヘルプだヘルプ! VB.NETのヘルプじゃなくてVBAのヘルプな
781 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 12:49:17 ] わからなかったら素直にそういえばいいのに。 自分の無知を認めることも大事だ。
782 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:20:02 ] printf("%d", some_pointer)で変なマイナスの値が表示されることに 一生懸命説明する奴大杉。
783 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:32:05 ] 自作自演もほどほどにしようぜ
784 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:33:34 ] 必死だなw しかしまぁ流れを読んで見ると>>678 に対する>>679 が一番アホだな。 こういう馬鹿ヘルプ厨がいるからおかしくなるんだよ。
785 名前:679 mailto:sage [2010/03/21(日) 13:38:32 ] 今顔真っ赤です。 こうですか?わかりません(><)
786 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 13:47:38 ] >>785 お前は暴れてるやつの一人だと思ったが、ただ無知だっただけの善意の第三者か?
787 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 14:02:22 ] レスが集中してるから暴れてるのは一人か二人だと思う。 暴言吐いてる人が構ってチャンじゃないかな。
788 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 14:46:51 ] OAuthをExcelVBAで書きたいんだけれど サンプルどこかに転がってるでしょうか?
789 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 15:52:47 ] withevents を使用するために参照設定があれば教えてください また、使用方法の勉強に適したURLあればお願いします。
790 名前:766 [2010/03/21(日) 16:34:22 ] >>768 ソースアップしました。 firestorage.jp/download/90a5112c83637a3be41a86ca9723b61c6c7229b1
791 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 17:15:55 ] WithEventに参照設定要ったっけ?入れなくてもThisWorkBookモジュールに入れたら動いたけど あと、その競艇投票ソースとExcelとの関係は?
792 名前:デフォルトの名無しさん mailto:sage [2010/03/21(日) 17:17:38 ] あ、それから説明サイトは、、、、 mougの即行テクニックで witheventsで検索すればちょろちょろと解説がある
793 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 01:55:13 ] VBAで練習用にマインスイーパ作った 他なんか勉強になって作って楽しいもんないかね
794 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 02:17:08 ] >>793 ゲーム作って勉強したいならこんなんあるみたいよ。 www.amazon.co.jp/gp/product/4844326864/
795 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 03:01:05 ] >>794 なんだかオモチャ臭がぷんぷんするけど どうなんだろうね
796 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 03:08:47 ] >>795 どうなんだろねー? 動画見たら、こんなんVBAで出来るの!?って興味持ったけど 値段高いからねぇ。 図書館で検索したけどなかったわw
797 名前:デフォルトの名無しさん [2010/03/22(月) 08:28:03 ] VBA、というよりはWin32APIを使いまくってるけどね ttp://gyouzausa.hp.infoseek.co.jp/mode1/GAME/index.html
798 名前:デフォルトの名無しさん [2010/03/22(月) 08:45:10 ] 初歩的な質問ですけど、教えてください '対象行をdataシートへコピーする Sub ColumCopy(ByVal cnt As Integer) Dim k As Integer Worksheets("data").Activate k = 0 Do k = k + 1 Loop Until Cells(k, 1) = "" Worksheets("Page1").Range(Cells(cnt, 1), Cells(cnt, 8)).Copy _ Destination:=Worksheets("data").Range(Cells(k, 1), Cells(k, 8)) Worksheets("Page1").Activate End Sub というのを作ったんです(cntには51という値が、kには1という値が入っています)が、 実行時エラー アプリケーション定義またはオブジェクト定義のエラーです でWorksheets("Page1").〜の部分で終了してしまってます どの様に直せばよろしいのでせうか?
799 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:38:03 ] すまん、俺のせいですげー荒れたみたいだな。 > 結局Formatじゃ駄目でWorksheetFunction.Textってことか。 > 俺の間違いだったわ。 ヘルプ見れば(もちろん679をレスした時点で俺はヘルプを見てる)、自分のやりたいことを Formatで実現するには"General Number"を指定しないといけないということに気づくんじゃ ないかと思ってヘルプ見ろって言ったんだよね。 次からは、ヘルプ見ろってつい言いたくなっても自重するよ。
800 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:42:47 ] もう一個言い訳しとくと、>>672 で > 知ってるのか知らないのかわからないが とつけたのは、1にならない理由がわからないのか、わざと定義されてない引数を指定したら 変な文字列になったけど、その変な文字列に変換されるロジックをしりたいのかわからなかった から。 多分前者だろうと判断して、こう書いた。 > Formatの第二引数の指定方法が間違ってる。
801 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 09:50:36 ] あと、>>675 でちょっとカチンときてしまった。ヘルプも見ない奴に言われたくないって。 愚痴ばかりですまん。しばらくこのスレの書き込み自重する。
802 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 11:52:04 ] >>798 CellsにもSheetを指定しなきゃダメ Worksheets("Page1").Range(Worksheets("Page1").Cells(cnt, 1), Worksheets("Page1").Cells(cnt, 8)).Copy _ Destination:=Worksheets("data").Range(Worksheets("data").Cells(k, 1), Worksheets("data").Cells(k, 8)) With Worksheets("Page1") .Range(.Cells(cnt, 1), .Cells(cnt, 8)).Copy _ Destination:=Worksheets("data").Range(Worksheets("data").Cells(k, 1), Worksheets("data").Cells(k, 8)) End With Dim Ws1 As Worksheet, Ws2 As Worksheet Set Ws1 = Worksheets("Page1") Set Ws2 = Worksheets("date") Ws1.Range(Ws1.Cells(cnt, 1), Ws1.Cells(cnt, 8)).Copy _ Destination:=Ws2.Range(Ws2.Cells(k, 1), Ws2.Cells(k, 8)) 好きな書き方でどうぞ
803 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 13:51:29 ] >ヘルプ見ろって言ったんだよね。 皆ヘルプ見て分からなかったから質問スレに書き込むんじゃないかな。 キーワードがヒットしなかったか、重要な情報を見落としたかはともかく。
804 名前:798 mailto:sage [2010/03/22(月) 14:10:23 ] >>802 Cellにも指定しないといけなかったんですか。 気が付きませんでした。 ありがとうです
805 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 17:23:03 ] Cell表記でいつも思うんだが Worksheets("data").Range(Worksheets("data").Cells(k, 1), Worksheets("data").Cells(k, 8)) より Worksheets("data").Cells(k, 1).Resize(1, 8) のほうがコード読み書きしやすくない?
806 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 17:32:39 ] ついでに言えばコピー先は左上だけ指定すればいい Destination:=Worksheets("data").Cells(k, 1).Resize(1, 8) ↓ Destination:=Worksheets("data").Cells(k, 1)
807 名前:デフォルトの名無しさん [2010/03/22(月) 17:47:27 ] workSheets(\\\"data\\\").select したほうが短くならない?
808 名前:デフォルトの名無しさん [2010/03/22(月) 18:22:09 ] VBAを学ぼうと本を買ってきたのですが、いざ読んでみたものの、 この次何をしたらいいかよくわかりません。 何をしたらいい?
809 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 18:36:00 ] PCを窓から捨てる
810 名前:デフォルトの名無しさん [2010/03/22(月) 18:42:57 ] >>809 (´・д・`)窓からPC捨てたら、VBAが学べるの?
811 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 20:21:37 ] >>805-806 同感 しかしクソIME(Microsoft Office IME 2007)は上の「どうかん」が変換できないよ。 他にも辞書登録しないと駄目なのがいっぱいあるが中国人に作らせたんじゃないだろうな。
812 名前:デフォルトの名無しさん [2010/03/22(月) 20:42:03 ] 2chとかに書き込む時はgoogleのが便利なのに(´・ω・`) 最近はちょっと軽くなったし
813 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 20:42:20 ] 中国人だよ。
814 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:32:01 ] テスト同感 >>812 Googleの日本語入力があるなんて知らなかったよ。 今ダウンロードして使ってる。 いいこと聞いたよ。 >>813 アチャー、中国神社無理もないな。 うーん、Googleも完璧じゃないな。
815 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 23:55:19 ] >>808 手段と目的が逆転した時は、まず目的を探せ
816 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 00:36:44 ] 「入門書はクリアしたので次のステップは何がよいでしょうか」 という問いかけかもしれん
817 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 02:13:17 ] >>816 じゃあやっぱり目的を探せであってるんじゃないか?
818 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 07:08:47 ] じゃあ次は中級の本を読めばいいんじゃね?
819 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 13:54:18 ] Cells(3,5*i-2)からCells(k,5*i+1)まで というように行位置と列位置で指定した範囲をコピペしたい場合 何かいい方法ありますか? 行位置と列位置からセル番地を求めて Range("○○:××")って形で指定くらいしか思いつかないんですが
820 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 13:57:09 ] >>819 CellsはRangeの範囲指定にそのまま使える。 Range(Cells(3, 5 * i - 2), Cells(k, 5 * i + 1)) と書けばいい
821 名前:デフォルトの名無しさん mailto:sage [2010/03/23(火) 14:15:50 ] >>820 ありがとうございます!
822 名前:デフォルトの名無しさん [2010/03/24(水) 03:18:22 ] 教えてください。 office 2000、Win XP SP3です。 このようなことはできるでしょうか? ・マウスでセルをクリックすると、そのセルに、色が付くとか、あるいは●の文字が出る。 ・もう一度そのセルを押すと、色が無くなる(白になる)とか、あるいは文字が消える。 セルを、まるでチェックボックスに見立てたような動作です。 通常のチェックボックスをシート上に置けばよいのでしょうが、 行単位で、それぞれにチェックを付けたいのです。 そうすれば、行の挿入や削除したとき、チェックボックスも一緒に増減するからです。 このようなことがVBAでできるでしょうか? 宜しくお願いします。
823 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 04:05:05 ] >>822 無理。 Worksheet_SelectionChange、Worksheet_BeforeRightClick、Worksheet_BeforeDoubleClickなどで 代用する手はあるけど希望通りの動作にならなかったり副作用が出たりする。
824 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 04:13:30 ] セルのクリックってWin32APIでできそうなんだけどなあ。 需要もあると思うんだけど、検索しても見つけられないんだよな。
825 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 08:07:38 ] 2003 XPです Sub デイデータ制御() Worksheets("水産").Cells(5, 2).Select End Sub これを同じブック・違うシート上でやると実行時エラー1004が出ます。 あと、activate とselect って何が違うんですか?
826 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 09:37:56 ] >>825 activeは範囲選択したときのtabの動作 selectは左クリックで操作したときの動作 selectの方が早くて不具合も少なかったと思う 後マクロはシート1に Sub Macro1() Call デイデータ制御 End Sub 標準モジュールに Sub デイデータ制御() Worksheets("水産").Select Range("a1").Select End Sub と記述する。別シートを洗濯できないのはスコープの問題。 とりあえず簡単に、別シートのマクロは記述できないと覚えて置けば良い それでもWorksheets("水産").Cells(5, 2).Selectと一度に記述ができないのは何でだったかな 忘れた。
827 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 14:34:19 ] >>826 回答ありがとうございます。 一度に記載出来ないのは仕様だったのね・・・
828 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 16:56:07 ] 自動整形をやめる方法ってありますか? *はスペース hoge*=*1 hogehoge*=*1 でなくて hoge*****=*1 hogehoge*=*1 って揃えたいんですが
829 名前:デフォルトの名無しさん [2010/03/24(水) 18:17:14 ] FUNCTIONで関数を作っったら、ユーザー関数として使えるのでしょうか? 本では使えるようなことが書いてあるのですが、 関数の挿入のWINDOWでユーザー関数の項目が出てこないので選べません。 エクセルは2003で、超超・・(略)・・超初心者です。
830 名前:デフォルトの名無しさん mailto:sage [2010/03/24(水) 21:55:11 ] とりあえず、>>1-7 見ような
831 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:48:52 ] >>828 無理
832 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:50:37 ] 特定の文字列が含まれているシートの特定のセルを参照して、それをフォームに一覧表示したいです。 すべてのシートから参照する方法は分かったのですが、特定の文字列を含むシートのみを抽出する方法が 分かりません。 なにとぞお願いします
833 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:51:13 ] >>829 使える 出てこないのはたぶんFunctionを書く場所が間違ってる
834 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 00:52:09 ] >>832 Find
835 名前:832 mailto:sage [2010/03/25(木) 01:31:19 ] すいません、具体性が足りませんでした。申し訳ないです。 例えば、○○○、□□□、○○○1、○○○2というシートがある時、 ○○○が含まれる3つのシートのC1の値を参照し、一覧にしてフォームに表示させたいのです。 私としては、foreachを使っていけば良いんじゃないかと思って考えてはいるのですが、具体的な形に ならないものではまって動けないという感じです。 知恵をお貸し下さい。お願いします。
836 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 01:51:53 ] ttp://officetanaka.net/excel/vba/function/InStr.htm
837 名前:832 mailto:sage [2010/03/25(木) 02:06:29 ] ヒントありがとうございます。また頑張ってみます。
838 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 16:41:54 ] ボタンをクリックして表示させるフォームに引数って渡せないでしょうか。 クリックしたボタンによって違う処理をしたいんですが、引数を渡せないと大量の同じようなフォームをできてしまうのでそれを避けたいのですが…
839 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 18:07:16 ] 継承が使えればformを継承し新しいクラスを作る もしくはshow関数をオーバーロード もしくはグローバル関数を使う もしくはテキトーなtextboxに値でもいれておき、それを参照するようにする 下に行くほど簡単。どれでも好きなものを
840 名前:デフォルトの名無しさん mailto:sage [2010/03/25(木) 18:16:40 ] excel2007で質問させてください。 各シートから条件に一致したデータを抽出して印刷しようとしています。 印刷ひな形となるシートのコピーを作成して そのコピーしたシートにデータを書き込んで印刷→シート削除という流れなのですが worksheets(hoge).copyを使用すると Application.ScreenUpdating = falseにしていても 画面遷移が起こってしまいます。 画面遷移なしで処理したいのですが何か他に方法はありますか? ひな形シートの全セル選択で貼り付けると印刷設定が移動できませんし 印刷設定のプロパティも全部コピーしていくしか無いのでしょうか
841 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 02:13:27 ] ちょっとVBAに慣れると調子に乗って ExcelベースのGUIで便利なアプリにしてやろうなんて 夢想しがちだが、肝心な機能の呼び出しが非公開だったり することが多くて失敗しやすいね
842 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 05:24:58 ] >>840 印刷設定のコピー方法はプリンターの機種ごとに違ってて、そう簡単にはコピーできなかったと思う
843 名前:デフォルトの名無しさん [2010/03/26(金) 09:41:04 ] ←→ ┌─────┐┌─────┐ └─────┘└─────┘ 上のような感じで複数のセルの中から値の入力されてるセルの上端に双方向矢印を入力させるというマクロを作りたいのですが 可能でしょうか?双方向矢印を引くだけならマクロの記録を使ってできるのですが値のあるセルだけにという条件をくわえるにはどうしたらいいでしょうか? どなたか教えてください。
844 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 13:18:35 ] >>843 こんな漢字? Sub a() Set d = UsedRange For Each s In d If s.Value <> "" Then s.Offset(-1, 0).Value = "←→" End If Next End Sub
845 名前:デフォルトの名無しさん [2010/03/26(金) 13:58:50 ] >>844 うまく説明できてなくてすみません。。 例えばA1からD9までの範囲があったとしてそこの中のセルに値があるものだけを検索して 図形の双方向矢印をセルの上端の線に合わせて入れたいんですが可能でしょうか?
846 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 17:26:23 ] >>839 グローバル関数でいけました。ありがとうございました
847 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 21:14:29 ] >>843 やりたいのはこんな感じ カナ?カナ? Dim Sh As Worksheet Dim r As Range Dim X1 As Integer Dim X2 As Integer Dim Y1 As Integer Dim Y2 As Integer Set Sh = ActiveSheet For Each r In Sh.Range("A1:D9") If r.Value <> "" Then With r X1 = .Left Y1 = .Top X2 = X1 + .Width Y2 = Y1 End With With Sh.Shapes.AddLine(X1, Y1, X2, Y2).Line .BeginArrowheadStyle = msoArrowheadTriangle .EndArrowheadStyle = msoArrowheadTriangle End With End If Next
848 名前:デフォルトの名無しさん [2010/03/26(金) 22:49:43 ] >>847 ありがとうございます!!まさにそのとおりです。 ちなみに矢印を上端の中心に持ってきて左右の長さを縮めたいのですが・・・ ←→ .←────→ ┌─────┐┌─────┐ └─────┘└─────┘ 今のままでは右のようになるので左の図のようにしたいと考えてまして そういった方法の指定も可能ですか?
849 名前:847 mailto:sage [2010/03/26(金) 23:18:03 ] >>848 可能 Rangeオブジェクトのプロパティ Left Top Width Height 後はヘルプを見るなりして がんばってみてね
850 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 23:27:15 ] 色んなことをやりたい人がいるんだな
851 名前:デフォルトの名無しさん [2010/03/26(金) 23:35:17 ] このスレはVBAとPerl14 のスレなのになぜPerlネタが一切でてこないんだ?
852 名前:デフォルトの名無しさん mailto:sage [2010/03/26(金) 23:49:26 ] 次の質問どうぞ
853 名前:847 mailto:sage [2010/03/27(土) 19:33:47 ] >>843 もう見てないかもしれないけれど >>847 のコードは 型宣言を 勘違いしてたみたい 変数 X1 X2 Y1 Y2 は Single型もしくはLong型で宣言するべきだった Integer型だと少数点以下がカットされるので線が少しずれてる さっきヘルプを見ていて気づいた ゴメンね
854 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 03:21:33 ] シェイプ関連の位置指定は、ポイント単位だからなあ。 て、Longも駄目だろw
855 名前:847 mailto:sage [2010/03/28(日) 10:55:03 ] >>854 がーーーん またまたすみません たっ たしかにそうでした 回答者に向いてないかも俺 さすがに落ち込みました
856 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 11:02:37 ] ドンマイ。よくあることだw
857 名前:デフォルトの名無しさん [2010/03/28(日) 21:05:10 ] 質問です。 CSVファイルをエクセルブック内のワークシートに貼り付けするとき、 Workbooks.Open Filename:=csvfile Workbooks(csvfile).Worksheets.Copy after:=Workbooks(mybook).Worksheets("ファイル一覧") Workbooks(csvfile).Close こんな感じで簡単に貼り付けています。 csvファイルが5MBとかサイズが大きくても上のようなやり方で問題ないでしょうか。 csvファイルの先頭から1レコードずつ取得して貼り付けるという方法もネットから探し出せたんですが どっちがいいのか判断しにくいです。
858 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 21:07:57 ] ExcelVBA開発がメインの人っているの? 趣味とか、基本的にはVBとか、やけにできる事務員とか、そんな感じですか?
859 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 21:21:12 ] 自称やけにできる事務員ですw
860 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 21:35:38 ] 英単語が並べられている列があり、隣の列に意味を書き出す、というのを作っています。 使用する英語の辞書のURLはwww.alc.co.jp/ です。 「apple」という単語を検索するとURLは eow.alc.co.jp/apple/UTF-8/?ref=sa となります。 ここで、英単語を検索した結果表示されたページから該当箇所を抜き出すというやり方が分かりません。 上記の「apple」の場合、「・apple」から「分節ap・ple」まで抜き出したいのです。 やり方がわかる方教えてください。
861 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 22:09:20 ] >>860 * データの転載は禁じられています。 class="midashi"
862 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 22:25:22 ] >>857 5MBのCSVなんて動作遅くならないか? 速さをなんとかしたいならsqlでやる。
863 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:28:17 ] >>860 VBA上から Webページのデータを取得するのは そのWebページのソースを見て理解できないと無理 (そしてそれをどうVBA上からコントロールするかも) ソースをみたけど <DIV class=mr_10 id=resultList ondblclick=seow()> ってのがあるから id=resultList ←これを利用すれば 「・apple」から「《コ》アップル・メニュー」 までは抜き出せるね あとはタグを辿っていくしかないかな
864 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 13:57:45 ] >>858 やけにできる事務員だった データの正規化やコピーする際に絶対にミスしないのが魅力的 速度自体は大して変わらん
865 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 10:59:35 ] 1ブック内に複数あるシート全てを選択した状態で、且つ一シート目にのみ開始ページ番号が振られている状態で 印刷したときに割り振られるページ数を、印刷せずにマクロで調べたいのですがどのような方法があるでしょうか? このシートのこのセルは何ページ目に該当する、ということを調べて行きたいです。 プレビューで見ていけば可能ですがページ数が膨大なのでマクロで処理したいと思っています。
866 名前:865 mailto:sage [2010/03/30(火) 11:02:54 ] すいません、バージョンは2000です。
867 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:47:33 ] >>865 『このシートのこのセル』はそもそもどうやって特定するの? 1シートで印刷するのは複数頁あるってこと?
868 名前:865 mailto:sage [2010/03/30(火) 16:43:41 ] >『このシートのこのセル』はそもそもどうやって特定するの? 全シート走査で特定単語を置換していくので、 その置換処理が行われたときのセルを元に出力時のページをその都度 調べてワークファイルに書き出したいと思っています。 (置換処理、書き出す処理はできてます) >1シートで印刷するのは複数頁あるってこと? そうです。 1シートに1頁の場合と複数頁ある場合とがあります。
869 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 20:18:53 ] 特定単語を置換する前に 検索→セル番地取得→セル番地から頁数割り出し という作業をかませばいいんでないの?
870 名前:865 mailto:sage [2010/03/30(火) 21:13:16 ] >>869 「セル番地から頁数割り出し」の部分がわからないんです…
871 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 21:41:45 ] 一度、印刷プレビューで1頁で何セル印字するのか調べてみたら
872 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 22:13:52 ] 使った事ないけど VPageBreak オブジェクト HPageBreak オブジェクト なんかどう?
873 名前:872 mailto:sage [2010/03/30(火) 23:30:03 ] ちょっとテストしてみたけど 頁数割り出しの参考にならないかな Sub test() Debug.Print "改ページ数:"; ActiveSheet.HPageBreaks.Count For Each a In ActiveSheet.HPageBreaks Debug.Print "改ページ 行位置:"; a.Location.Row Next End Sub
874 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 07:24:45 ] Application.OnTimeでサブルーチンを時間起動したいのですが、 セルをダブルクリックして値入力状態であったり、モーダルで バルーンを表示させていたりすると、Application.OnTimeに制御 が移らず、サブルーチンを起動できません。 これを回避する知恵をお持ちの方、ご教示願います。
875 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 16:52:52 ] 回避するって >セルをダブルクリックして値入力状態であったり、モーダルで >バルーンを表示させていたりすると、 はどうするねん 別にexcel.applicationを起こしてそっちでontimeさせればええやん
876 名前:デフォルトの名無しさん [2010/04/04(日) 19:32:11 ] XPsp2,EXCEL2003です。 ピボットテーブルをVBAで作成しているのですが、 データによって(件数?)、集計の仕方が、 「個数/金額」になったり、「合計/金額」になったりします。 常に「合計/金額」になるようにするには、どうすれば良いのでしょうか? コードは次の通りです。 ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "ZZZWORK!R5C" & c_yymm_p & ":R" & lastrow & "C" & c_io_p).CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル4", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveSheet.PivotTables("ピボットテーブル4").ColumnGrand = False ActiveSheet.PivotTables("ピボットテーブル4").AddFields RowFields:=Array("分類", "科目") _ , ColumnFields:="年月" ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額").Orientation = _ xlDataField Application.CommandBars("PivotTable").Visible = False ActiveWorkbook.ShowPivotTableFieldList = False よろしくお願いします。
877 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 02:29:05 ] >>876 ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額").Function = xlSum
878 名前:876 [2010/04/05(月) 08:04:46 ] >>877 レスありがとうございます。 そのコードを追加したら、 実行時エラー'1004': PivotFieldクラスのFunctionプロパティを設定できません。 になりました。どうすれば良いのでしょうか? 追加した位置は、下記のステートメントの次です。 ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額").Orientation = _ xlDataField よろしくお願いします。
879 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 12:28:18 ] >>878 フィールド名の「金額」の部分を自分の作ったテーブルに合わせて書き換える テーブルの一番左上の灰色のセルの値を見る
880 名前:878=876 [2010/04/05(月) 17:07:07 ] >>879 レスありがとうございます。 常に合計になるようにできましたm(_ _)m
881 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 18:37:42 ] サブメニューを複数個作りましたが、 どのサブメニューを選択しても、同じSubプロシージャを呼び出したいです。 Subプロシージャ側で、どのサブメニューが選択されたかを知るにはどうすればいいでしょうか? パラメーターとか使えますか? 参考になるサイトがありましたら紹介していただけませんか。