1 名前:既定のプロパティさん mailto:sage [2012/01/29(日) 00:05:13.16 ] 01 pc11.2ch.net/test/read.cgi/tech/1054356121/ 02 pc11.2ch.net/test/read.cgi/tech/1168308855/ 03 pc11.2ch.net/test/read.cgi/tech/1180192018/ 04 pc11.2ch.net/test/read.cgi/tech/1189814602/ 05 pc11.2ch.net/test/read.cgi/tech/1197448064/ 06 pc11.2ch.net/test/read.cgi/tech/1205231499/ 07 pc11.2ch.net/test/read.cgi/tech/1212587819/ 08 pc11.2ch.net/test/read.cgi/tech/1219673793/ 09 pc11.2ch.net/test/read.cgi/tech/1228372971/ 10 pc12.2ch.net/test/read.cgi/tech/1235332603/ 11 pc12.2ch.net/test/read.cgi/tech/1241885130/ 12 pc12.2ch.net/test/read.cgi/tech/1247566074/ 13 pc12.2ch.net/test/read.cgi/tech/1254281104/ 14 pc12.2ch.net/test/read.cgi/tech/1262748898/ 15 pc12.2ch.net/test/read.cgi/tech/1271261239/ 16 hibari.2ch.net/test/read.cgi/tech/1280045912/ 17 hibari.2ch.net/test/read.cgi/tech/1289182437/ 18 hibari.2ch.net/test/read.cgi/tech/1298240666/ 19 hibari.2ch.net/test/read.cgi/tech/1305754555/ 20 hibari.2ch.net/test/read.cgi/tech/1312435844/ 21 hibari.2ch.net/test/read.cgi/tech/1316931607/ 前スレ: Excel VBA 質問スレ Part22 toro.2ch.net/test/read.cgi/tech/1322400978/
477 名前:デフォルトの名無しさん [2012/03/04(日) 13:48:13.13 ] 数字だけ取り出すなら dim a a=instrr(cells(1,1),"\") msgbox mid(cells(1,1),a-5,5) が簡単だと思うけど。
478 名前:デフォルトの名無しさん [2012/03/04(日) 13:54:17.43 ] VBAで可視セルを扱うにはどういう機能またはプロパティまたはメソッドを使いますか?
479 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 13:57:27.36 ] >>478 可視セルをどう使いたいかによる。
480 名前:デフォルトの名無しさん [2012/03/04(日) 14:04:24.13 ] >>479 toro.2ch.net/test/read.cgi/bsoft/1329913579/161-
481 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 14:23:38.72 ] 連続じゃないセル、たとえば、range("A1:A3")とrange("C1:C3")を3*2の配列に格納するには どうすればよいのでしょうか?
482 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 14:35:08.42 ] >>477 これにしたthxx.
483 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 14:36:48.77 ] >>481 For〜Nextで順番に代入 作業列を使ってもいいんなら一ヶ所に固まるようにセル範囲をコピーしてからVariant型に代入 B列を削除して配列にコピーしてからアンドゥ
484 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 14:37:11.44 ] >>481 dictionary使うとか set dic = createobject("scripting.dictionary") for i = 1 to 3 dic add cells(i,1)value, cells(i,3).value next for i =1 to 3 cells(i,5).value=dicitem(cells(i,4).value) next set dic=nothing
485 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 17:36:55.88 ] こんばんばーん、質問です。 連結されているセルにデータがあるものとして判定するにはどうすれば良い? 例えば、文字列がE1とF1をまたいでいる。セルが結合されているとき、F1にValueしても空だが、データがあるものと判定したいです。セルの結合数はランダムです。
486 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 17:45:29.93 ] MergeCellsで事故解決です
487 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 19:11:15.60 ] >>483 >>484 ありがとうございました
488 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 13:07:02.09 ] こんにちあ、質問です。 A1-A100に、空白セルもしくは"abc"のセルがあるとき、その行を削除したいのですが、 Dim c As Range For Each c In Range("A1:A100") If c.Value ="" Or c.Value = "abc" Then c.Rows.EntireRow.Delete Next c とすると、1度目の処理で空白行が消えて、もう一度処理するとabc行が消えます。なぜこの記述はダメなのか?一度の処理で済ますにはどう書けば良いですか?
489 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 13:28:54.49 ] If c.Value ="" Or c.Value = "abc" Then c.Rows.EntireRow.Delete ↓ If c.Value ="" Or If c.Value = "abc" Then c.Rows.EntireRow.Delete
490 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 14:05:09.36 ] エラーでますぉ
491 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 14:11:45.74 ] >>488 ごめんアホなこと書いた セルを消去してるので、セルが上に繰り上がってる A2のセルを消去したらA3のセルがA2に繰り上がるので、そのセルは評価されない。 for each じゃなくて for i =100 to 1 step - 1 A100から 減算させて評価させればいい。 つかstepとか忘れてて ぐぐったわ・・
492 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 14:29:25.31 ] 出来たthx! 質問です、 for i 1 to 100 文字列&i next とするときiが一桁のとき01のようにして&したいのですが、書き方ありますか?
493 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 14:32:02.47 ] Right関数使え
494 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 14:32:35.75 ] >>492 For i = 1 To 100 str = str & Format(i, "00") Next
495 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 14:38:43.95 ] かんぺきthx!
496 名前:デフォルトの名無しさん [2012/03/05(月) 17:41:04.96 ] どなたか教えてください。 Access2000からExcelファイルを生成しています。 参照設定を Excel9.0 Objectlibrary へ設定しています。 生成先のExcelは2000だったり2003だったり、を想定しています。 以下のソースは動作します。 Function EXCEL_TEST1() '事前バインディング 必ずEXCELへの参照設定が必要 Dim appWorld As Excel.Application Dim wbWorld As Excel.Workbook Dim Wksheet As Excel.Worksheet Set appWorld = CreateObject("Excel.Application") Set wbWorld = appWorld.Workbooks.Add Set Wksheet = wbWorld.Sheets(1) Wksheet.Cells(5, 5) = "カキコ" LAST_CELL = Wksheet.Cells.SpecialCells(xlLastCell).Address MsgBox LAST_CELL wbWorld.SaveAs "C:\hoge.xls", FileFormat:=xlWorkbookNormal appWorld.Quit 開放処理 End Function
497 名前:496 [2012/03/05(月) 17:41:43.26 ] これを以下のように、参照設定せずに実行時バインディングで行ないたいのですが、 LAST_CELL(最終セルアドレス)の取得と、 SaveAsの部分が動作しません。定数の記述が異なるのか、そもそも実行時バインディング では記述できないのかも分かりません。どなたか御教授お願いします。 Function EXCEL_TEST2() '実行時バインディング EXCELへの参照設定が不要 ---------- Dim appWorld As Object 'Excel.Application Dim wbWorld As Object 'Excel.Workbook Dim Wksheet As Object 'Excel.WorkSheet Set appWorld = CreateObject("Excel.Application") '生成 Set wbWorld = appWorld.Workbooks.Add 'ブック追加 Set Wksheet = wbWorld.Worksheets(1) Wksheet.Cells(5, 5) = "カキコ" LAST_CELL = Wksheet.Cells.SpecialCells(xlLastCell).Address MsgBox LAST_CELL wbWorld.SaveAs "C:\hoge.xls", FileFormat:=xlWorkbookNormal appWorld.Quit 開放処理 End Function
498 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 18:03:38.27 ] >>496 参照設定しないと 定数 xlLastCell や xlWorkbookNormal は 参照先で定義されているから使えないと思うぞ 自前で Const定義するか 定数値を指定するかどっちかしないと
499 名前:496 [2012/03/05(月) 19:26:17.24 ] >>498 様 有難うございます。あまり参照設定とかは経験がないものですから、 何から手を着けてよいのか分からない状態です。 constする値を調べる方法があればよいのですが。 検索が下手なせいか、なかなか参考になるサイトが見つかりません。
500 名前:496 [2012/03/05(月) 19:34:55.74 ] 496です。解決しました。 498様のヒントで、以下のサイトを見つけました。 ttp://park.geocities.jp/gdfsm000/jacob/jacob05.html 動かないところを片っ端から定数指定していきます。 有難うございました。
501 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 19:44:05.05 ] こんにつわ、質問です。 With ActiveSheet.QueryTables.Add 使ってるときに、存在しないURL,空白のURLを打ち込んだときにExcelがフリーズしてしまいます。 どうするのがよいですか?
502 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 19:44:54.64 ] 訂正 空白のurl→空白ページのurl
503 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 19:53:56.57 ] www.microsoft.com/download/en/details.aspx?id=19600 何故かVBAの言語仕様書が混じってるみたいだ。 FirstReleaseが2008年なのがなんともw
504 名前:デフォルトの名無しさん mailto:sage [2012/03/05(月) 19:56:19.90 ] win7 64bit office2010 32bitです 画像を複数枚選択して、なおかつそれらを40%の大きさにリサイズして取り込みたいのですが、どうしても上手くいきません。どなたかご教授お願いします。
505 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 00:23:45.39 ] >>504
506 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 03:47:59.25 ] 教えてください。 If A then with B Else with C End if って動かないみたいなんだけど、他に方法ありますか?
507 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 03:53:58.23 ] >>506 下にEnd With が続くとエスパーして Dim target As Withで使う型、またはVariant If A then Set tartget = B Else Set tartget = C End If With target 処理 End With
508 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 03:57:21.74 ] >>507 こんなに早く どうもありがとうございます。
509 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 10:38:36.68 ] スレートPCについてるWebカメラで撮った画像を直接EXCELに貼り付けたいんですが、どんな方法があるでしょうか? 望ましいのは、ボタンクリック等のイベントで撮影モードに移行し、撮影完了でEXCELに戻ってくるような操作方法です。
510 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 11:02:50.25 ] フォームモジュールをインポートすると コードの先頭行に空白行が1行追加されてるのは仕様ですか? 空白行を削除して保存しなおしても、また追加されてしまいます。 標準モジュールではそうなりません。
511 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 11:16:15.79 ] >>509 shellかなんかで立ち上げてsendkeyで操作するとか
512 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 11:48:06.15 ] イミディエイトウィンドウのバッファ容量って、もっと広げることはできないんでしょうか 途中経過を1000行ぐらい出力したら流れて消えてしまいました
513 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 20:00:16.74 ] >>512 そんなこと考えてないで さっさとテキストファイルに出力して プログラムを進めてくれ
514 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 21:08:23.50 ] イミディエイトって、どういう意味でいえいと?
515 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 21:16:17.49 ] >>514 完成したVBAマクロを試しに動かしたら、 何故かExcel巻き添えで落ちる呪いをお前にプレゼントしよう。
516 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 21:25:45.56 ] 辞書で引いてみたら immediate は、 広大な、恒久的な という意味らしいな
517 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 21:42:45.76 ] >>516 何ていう辞書?
518 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 21:55:00.87 ] >>517 何だったかな ロブスターとかだったかな 513に借りたんだけど
519 名前:デフォルトの名無しさん [2012/03/06(火) 22:39:09.48 ] フィルタ結果の件数の取得は、どうすればいいんでしょうか?
520 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:18:02.17 ] イミディエイトウィンドウって 一度に100行まで表示じゃなかったけか。 ちがってたらゴメン。
521 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:31:03.27 ] >>518 元ネタがきになる
522 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:31:33.21 ] イミディエイトウィンドウは200行がMAXで不可変らしいね。 >>519 「オートフィルタ カウント」 でぐぐればいろいろ出てくる
523 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 13:57:19.01 ] >>516 それimmediateの意味とはちがくね? immenselyとかimmensityの意味じゃね?
524 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 15:07:58.10 ] >>523 直接の〜、とか 即時の〜 という意味だね。 形容詞だね。 ホントどうでもいいけど
525 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 20:33:40.70 ] >>516 immediateはどうかんがえたって即って意味だろ
526 名前:デフォルトの名無しさん [2012/03/07(水) 21:21:07.31 ] ユーザーフォームを使おうと思ったのですが、 閉じるボタンを押した時、必ずフリーズします。 何故でしょうか。
527 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 21:37:14.41 ] >>526 ボタンを押した時に実行されるコードを何故貼らない
528 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 21:37:33.25 ] >>526 壊れているのかもな
529 名前:526 [2012/03/07(水) 21:42:22.61 ] すみません。526です。 セルをダブルクリックで呼び出すことにしていまして、 閉じるボタン押した時、セルが編集可能状態である為エラーが出るみたいです。 (ボタンで呼び出した場合は普通に閉じれました。) コードの中身はなく、ひとまずフォームを作った感じです。 ダブルクリックでフォーム呼び出しはやるべきではないのでしょうか。
530 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 21:50:53.38 ] Cancel = False
531 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 23:34:23.81 ] 教えてください。 まず変数aに1を代入し DO LOOPの中でaを5にしました。 その後aを使うと元の1に戻っているのですが、 これは仕様ですよね? この5という数値を使う方法はありませんか?
532 名前:デフォルトの名無しさん [2012/03/07(水) 23:41:52.46 ] >>531 仕様がないAH0
533 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 00:12:08.65 ] VBAの変数にループ内のスコープなんてなかったよな? >>531 とりあえずコード貼れ
534 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 00:19:44.48 ] >>531 a = 1 Do a = 5 Loop Until True MsgBox a
535 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 00:22:36.75 ] >>533 すみません。質問した者です。 変数に追加していくのではなく、 毎回上書きしていただけでした・・・ 初心者でごめんなさい。 ' Do ' If r = 1 Then ' Exit Do ' End If ' total = Cells(r, 4) ' r = r - 1 ' Loop
536 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 00:56:45.28 ] >>535 謎すぎるけど解決したなら、よかった
537 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 01:01:53.11 ] for系でないループで 中をIfとExitで制御している形はけっこう危険なんだよね。 思わぬ条件で抜けたり 一度も通らない経路ができたりする。
538 名前:デフォルトの名無しさん [2012/03/08(木) 01:02:17.51 ] =LEN(A1) =LEN(A2) =LEN(A3) みたいな値をB列にA列の終わりまで入れていくにはどうしたらいいですか? For文で回すんでしょうか・・・? データの最終位置を取得するのに、「End(xlDown).Row」と、「(Rows.Count, 1).End(xlUp).Row」 ってどう違うんでしょうか? MsgBox "End(xlDown).Row : " & Cells(1, 1).End(xlDown).Row MsgBox "(Rows.Count, 1).End(xlUp).Row :" & Cells(Rows.Count, 1).End(xlUp).Row ↑ を、マクロ開始前のセルの位置をズラして色々やってみても結果は同じでした・・・。
539 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 01:33:09.38 ] >>538 Cells(1, 1).End(xlDown).Row は上から順番に見ていく 途中に空白があると、それより下のデータは無視される Cells(Rows.Count, 1).End(xlUp).Row は下から順番に見ていく 最終行までびっちりデータが入っている場合を除いて、本当の一番下がわかる
540 名前:デフォルトの名無しさん [2012/03/08(木) 01:45:52.43 ] >>539 分かりやすい説明をありがとうございました。 で、 =LEN(A1) =LEN(A2) =LEN(A3) みたいのを入れてくには、やはりFor文で回すのでしょうか?
541 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 02:04:48.60 ] >>540 数十行程度ならForでもいいと思う もっと大量にある場合はオートフィルの方がプログラムがすっきりするし処理スピードも速いはず
542 名前:540 [2012/03/08(木) 02:21:23.52 ] >>541 ありがとうございます! ググってみたところ、 Range("B1").AutoFill Destination:=Range("B1", Range("A65536").End(xlUp).Offset(, 1)) でいけるみたいです!この方が頭よさそうだし、スッキリ見やすいし、これでいきます! おかげさまで安眠できます。 夜分遅くにお付き合いいただき、ありがとうございました!
543 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 21:37:27.17 ] P列に区分として1又は9を入れた時、Q列に当日の日付を入れたい で、その行位置は範囲は 2行目からlastrow = Cells(Rows.Count, "A").End(xlUp).Row までとしてこういう時 どういう風に Worksheet_Changeに書けばいいんでしょ?
544 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 22:20:58.13 ] >>543 何がわからないの?
545 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 22:24:19.73 ] >>543 何も考えずにやれば、こう lastrow = Cells(Rows.Count, "A").End(xlUp).Row For i = 1 To lastrow If Cells(i, "P").Value = 1 Or Cells(i, "P").Value = 9 Then Cells(i, 17).Value = Now End If Next ただし、Worksheet_Changeでこれやっちゃうとループするので 違う所でやるか、変更箇所のチェックしてQ列なら変更しないとかの工夫が必要
546 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 22:26:58.87 ] だからP列に1又は9を入れた時、その横に当日日付を入れたい で、どう書けば良いのか?って聞いてんですけど
547 名前:デフォルトの名無しさん mailto:sage [2012/03/08(木) 22:31:28.83 ] リロードしてなかった。。。 >>545 ありがとうございます。 それを元にまた勉強してみます
548 名前:デフォルトの名無しさん [2012/03/09(金) 00:27:00.69 ] 結構ggったのですが解決しないのでどなたかご教授ください!! if 以下の3セルの内容が数字(全角・半角)でないとき 処理Aを行う Sheet1.Cells(y, x) Sheet1.Cells(y, x+1) Sheet1.Cells(y, x+2) else if Sheet1.Cells(y, x)のみが数値(全角・半角)でないとき処理Bを行う という処理を掛けたいです。 別の言い方をすると、セルが文字・全半角スペース・空の時に処理を掛けたいです。 If not と IsNumberで出来ると思いきや上手くいってません。 お願いいたします。
549 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 00:27:09.17 ] >>545 cells(i,16)で書くよりCells(i,"P")で書いたほう 列が非表示だったら時便利ね!とか、関係ないことをオモタ
550 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 01:08:49.15 ] With Sheet1 a = StrConv(.Cells(y, x), vbNarrow) b = StrConv(.Cells(1, x + 1), vbNarrow) c = StrConv(.Cells(1, x + 2), vbNarrow) End With If IsNumeric(a) = "False" And IsNumeric(b) = "False" And IsNumeric(c) = "False" Then 処理A End If If IsNumeric(a) = "False" And IsNumeric(b) = "true" And IsNumeric(c) = "true" Then 処理B End If ベッタベタでよければ どうぞ。
551 名前:デフォルトの名無しさん [2012/03/09(金) 01:15:04.82 ] >>550 ありがとうございます試してみます!! IsNumeric IsNumberの使い方もあまりわかっていなかったので助かりました。
552 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 02:42:06.08 ] >>550 IsNumericはBooleanなんだが、なぜ文字列で判定する? ちなみにIsNumericは、全角の数字でもTrueの判定するから、StrConvする必要はなかったりする 指数表記も認めたりするから、数字の定義によっては注意が必要
553 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 03:03:03.65 ] >>552 ””いらないね。あっても動くけど。 If not IsNumeric(a) And not IsNumeric(b) And not IsNumeric(c) で書いてたんだけど、解りにくいかと思ってやった。 今は反省している。 全角の数字判定は知らんかったわ。便利ね。 ありがとう
554 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 23:40:36.42 ] VBAは、無くなるの?
555 名前:デフォルトの名無しさん mailto:sage [2012/03/09(金) 23:51:09.95 ] それは目出度い
556 名前:デフォルトの名無しさん [2012/03/10(土) 00:40:01.35 ] JSサポートするという噂話だけ
557 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 01:21:54.25 ] VBAにJavaScript???
558 名前:デフォルトの名無しさん [2012/03/10(土) 16:17:05.72 ] 1行につき2シートずつ追加するマクロ(簡単に言うと)があります。 これが、72行ぐらいになって、シート数が159を超えたあたりから、シート追加の 「Copyメソッドが失敗しました」とエラーになります。 実際、そのブックでそれ以上シートを追加しようとしてもできません。 ググってみたところ、シート数に上限などはないようですが、メモリに依存するようです。 1枚1枚のシートは、それほど情報量はないのですが、Vlookup関数を多用してますので、 それもメモリを食っているかもしれません。 シート名も、平均22文字ぐらいあって、とても長いです。 一連のマクロは、一度も保存せずに、メモリ内だけで行っています。 データは、60行〜80行ぐらいまである時もあり、一括管理できるようにするため、 やはり1つのファイルに収めるのが理想的ではあります。。 どうすれば、このエラーを回避できるでしょうか?
559 名前:デフォルトの名無しさん [2012/03/10(土) 17:53:10.37 ] それってあるデータを見栄えのいいように整形するためにシートを作ってるって解釈でいいの?
560 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 18:26:11.05 ] 試したけど、空白シートをただ追加するだけなら5000シートでも問題なかった Excel2007 on Win7 シート毎の有効行やvlookupなど、少しずつ条件を変えて状況が変わるか試してみたら? 原因が特定できれば対処も考えやすいと思う
561 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 19:17:20.06 ] まず数百もシート作るっていう設計を考え直した方がいいんじゃないかと
562 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 21:48:45.31 ] ここは64bit版の出番だな。
563 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:17:58.69 ] Range("A1").Characters(Start, Length).TextのLengthに256を超える数値は指定できないんでしょうか? 257以上を指定したらCharactersクラスのTextプロパティを取得できませんってエラーが出るんです…
564 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:42:09.93 ] >>563 うちの2007ではちゃんと動いてる 環境かけ
565 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:49:30.49 ] >>564 Windows7 64bit版、Excel2010 32bit版です。。
566 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:52:16.01 ] ntの頃は、鯖と普通のやつの違いがレジストリのどっかが違うだけだったネタがあったな
567 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:53:02.68 ] >>566 誤爆
568 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 22:54:11.13 ] 今試したらRange("A1").Characters(Start, 257).Font.Bold = Trueとかは動くのに Textプロパティだとエラーが出てしまいます。。 やりたいことはTextプロパティを使わなくてもできるので別の方法考えてみます。
569 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:03:29.53 ] >>568 Length=256なら本当にOKなの?
570 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:07:39.75 ] >>569 MsgBox Range("A1").Characters(1, 256).Text MsgBox Range("A1").Characters(1, 257).Text の両方を試して256はOKでした
571 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:11:18.10 ] >>570 うちは同じ環境だけど、エラーでない
572 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:15:31.25 ] >>571 ですよねぇ・・・ 今までもRange("A1").Characters(Start, Length).Textという書き方は何度もしてきたと思うし こんなエラーに出会ったことがないので、たぶん私が何か見落としてるんだと思います。 もうちょっと調べてみます。ありがとうございました。
573 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:22:58.34 ] 質問です。 今、ウインドウ枠の固定を使って、上から3行だけを固定で表示させるようにしています。 この固定部分にボタンを配置して、マクロを登録しようと考えています。 それで、ホイールを回せば4行目から下が上下にスクロールするわけですが、ホイールを 回して下に適当にスクロールさせて、固定部分のボタンを押す。 そうすると「画面に表示されている」上から4行目のセル番地を取得する。 そういうマクロを作成したいんですが、これは可能でしょうか? すみませんがよろしくお願いします。
574 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:33:19.28 ] >>573 MsgBox ActiveWindow.ScrollRow + 3
575 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 23:42:17.38 ] >>574 おお!できた! 多分できないかなーと思ってたんで嬉しいです。 ありがとうございました。
576 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 00:33:01.82 ] >>572 うちの2007でも、TextやCaptionを取得しようとするとエラーになるな でも設定してもエラーにならずに正常に動く Dim c As Characters Set c = Range("A1").Characters(0, 260) MsgBox c.Text 'ここでエラー おかしいのはRange.Charactersメソッドじゃなくて CharactersクラスのTextメソッドだな エラーのMsgBoxの行を変えてテストした c.Text = String(25, "W") 'これは正常に動作 c.Text = String(250, "W") 'これはエラーは出ないが動作してない c.Text = String(256, "W") 'これはエラー どうも怪しげな動作してるな
577 名前:デフォルトの名無しさん [2012/03/11(日) 02:56:35.77 ] Excelってなんでもできるんだなー Excelで