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/
408 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 03:41:06.42 ] >>407 Offsetは左上の単一セルしか見ない 範囲を広げるにはResize
409 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 07:09:13.61 ] >>403 ありがとうございました。intカウンターをLongで解決。 なんで32000行あたりの特定の数字でオーバーフローしちまうのかなぁ
410 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 07:28:41.30 ] >>409 それぞれの型には範囲ってもんがある 基本的なことぐらい知ってれやれよ www.geocities.jp/cbc_vbnet/kisuhen/hensuu.html 変数・定数(基礎編)
411 名前:デフォルトの名無しさん [2012/02/24(金) 08:28:36.17 ] >>407 実際にRange("C1:C3")になるぞ。 そっちのPCは呪われてるのか?
412 名前:デフォルトの名無しさん mailto:sage [2012/02/24(金) 19:19:10.59 ] >>411 >>407 も >"A1:A3"は、結合してるセルなのだけど、何か関係ある? って書いてるけど、うちの環境で試しても A1:A3が普通のセルならC1:C3を返すけど、 A1:A3を結合してるとC1だけしか返されなかったよ。
413 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 14:46:56.38 ] >>412 ちょっと気になっていろいろ試してみた ヘルプには >指定された範囲からのオフセットの範囲を表す Range オブジェクトを返します。 とある ここでの指定された範囲ってのは指定したRangeじゃないし、オフセットの範囲ってのもそのRangeの範囲じゃないってことらしい 問題は、結合セルに対してOffsetをとった場合 指定された範囲=結合セルという一つの範囲 オフセット基準=指定範囲の終了地点(右下) だとみなされるようだ A1:A3が一つの結合セルだった場合、Range("A1").OffsetもRange("A2").OffsetもRange("A3").Offsetも同じ動作をする 普通にOffset実装したらそういう動作しそうもないから、 わざわざ結合セルに対するOFFset動作は特別な動作するように実装されてるんじゃないかな ということで、>>407 そう言うものだと思われます だれかこの動作の公式なドキュメントしってる?
414 名前:デフォルトの名無しさん [2012/02/27(月) 00:59:22.80 ] Excelファイルが読み取り専用の場合、入力できなくする方法 Excelファイルを読み取り専用で開いてるのを忘れて、 いざ保存しようとした時に読み取り専用だった事を思い出すって事ありませんか? だったらセルのロックみたいに入力自体できなくすればいいじゃないかと 思ってはみたもののどうすればいいかわかりません。 読み取り専用推奨で保存したファイルを開いて 読み取り専用にするか訊いてきた時に"はい"の場合はセルのロック、 "いいえ"の場合はセルのロックを解除というマクロを組んでAuto_Openで動かしてみましたが、 どうも訊いてくるより先にAuto_Openが実行されているようでうまくいきませんでした。 読み取り専用で開くかどうかもマクロで組めれば解決するのかなと思いますが、やり方がわかりません。 どうにかならないでしょうか?
415 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 01:19:29.12 ] Workbook_Openイベントプロシージャ
416 名前:デフォルトの名無しさん [2012/02/27(月) 07:37:36.89 ] マクロの記述で質問です。 B列のセルに"日本"を入力すると、 その該当するC列とD列のセルの値や文字列をクリアして斜線を入れたいのです。 例えば B2へ"日本"を入力すると、C2〜D2のセルに入っている値・文字をクリアして 自動的に斜線を入れる、 同じく B3へ"日本"を入力すると、C3〜D3のセルに入っている値・文字をクリアして 自動的に斜線を入れる、 といった感じです。 ここで B2に対してはそれらの動作が上手くいくのですが B3やB4以降の行に関しては上手くいきません。 例えばB3へ"日本"を入力するとC3〜D3のセル内容はクリアされずC2〜D2の値がクリアされてしまいます。 B4やB5以降に関しても同じくC2〜D2の値がクリアされてしまいます。
417 名前:デフォルトの名無しさん [2012/02/27(月) 07:39:07.10 ] 上の続きです。 一応マクロの文です。 おそらく相対参照の問題だと思います。 調べて試行錯誤しましたが上手いやり方がわかりません。 Excel2003です。 どなたかご教授お願いします。 Private Sub Worksheet_Change(ByVal Target As Range) Dim r, trg As Range Set trg = Intersect(Target, Range("B2:B14")) If Not trg Is Nothing Then For Each r In trg If r.Value = "日本" Then r.Offset(0, 1).Resize(1, 2).Borders(xlDiagonalDown) _ .LineStyle = xlContinuous Range("C2:D2").ClearContents Else r.Offset(0, 1).Resize(1, 2).Borders(xlDiagonalDown) _ .LineStyle = xlNone End If Next r End If End Sub
418 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 07:47:41.48 ] > Range("C2:D2").ClearContents それはそうだろ、としか。
419 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 08:01:13.16 ] Range(Cells(i,j),Cells(i+?,j+?)) でこのi,j,?を操作すれば
420 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 12:37:05.35 ] Range("C2:D2").ClearContents を r.Offset(0, 1).Resize(1, 2).ClearContents で、いけたわ こういうのわかりにくいから、 r.offset(0.1).clearcontents r.offset(0,2).clearcontents ってやってるわ。
421 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 16:29:03.11 ] >>418-420 ありがとうございます。 削除する対象のセルを結合したセルにすると 「結合された一部のセルを〜」のエラーが出てダメになりましたが r.Offset(0, 1).Resize(1, 2) = "" にすると大丈夫でした。 お世話になりました
422 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 18:00:44.53 ] range(“a1“).numberformat=“@“ range(“b3“).numberformat=“hh:mm“ if range(“a1“)<>range(“b3“) then としても差異は検出されないけれど、セルの内容全てを比較したい場合は、全プロパティ分のifを書いてやらんとあきまへんのどすか。
423 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 18:02:54.64 ] .text
424 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 19:26:17.07 ] range("a1").numberformat="#,##0" range("b3").numberformat="#,##0;-#,##0" 値は両方とも100 この場合も違うと判定させたい?
425 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:40:37.48 ] させたいどす。 .value でも .width でも罫線でも、違いを検出したいんどすえ。
426 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 10:59:13.54 ] rangeのプロパティカウントさせることができないっぽい 自分で関数作るか、if文書くかしかなさげ というか、プロパティカウントできないの初めて知ったわ これ地味に不便ね
427 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 12:42:32.91 ] VISTA Excel2007 です ライブラリの参照設定をコード内で実行したいのですが、 同じ文を標準モジュールに書くとエラーが出ないのに クラスのイニシャライズに書くと「中断モードでは実行できません」と エラーメッセージが出ます(ただ参照設定の処理がなされます) クラスのイニシャライズでエラーが出る原因など分かる方がいましたらご教授ください 以下コード: Const DAOFileFPath As String = "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll" ActiveWorkbook.VBProject.References.AddFromFile DAOFileFPath
428 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 21:31:31.36 ] >>427 べつに普通に実行できるが そのエラーメッセージの通り、中断モードのままやるからエラーになってるだけだろ
429 名前:427 mailto:sage [2012/02/29(水) 01:03:02.92 ] すみません もっと早く書き込みたかったのですが仕事で抜けられませんでした イニシャライズでなくメソッドにしても同じエラーになったので もしやと思い、クラスを新規作成して一からコードを手打ちしていったら 今度はうまく行きました モジュールが壊れていたんだと思います 必ず通るはずのStopをスルーして、その先のMsgBoxが動いている時点で気づくべきでした 前にもこんなことがあって、別のモジュールに一から書き直したらやっぱり普通に動いた そんな無茶な使い方してるわけじゃないのにな… どうも失礼しました
430 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 02:44:05.36 ] いやだから、Stopで止まったら中断モード... まあいいか
431 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 10:05:54.43 ] 忙しすぎて日本語読む余裕がないんだろうな
432 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 00:18:08.68 ] すみません、どうも詰まってしまったので質問させてください 商品名の入っているシートから、数学で言う所の和集合を取りたいと考えています 例えば、 A列 B列 1 CC TT 2 HH CC 3 TT E3 となっているようであれば、(CC、TT、HH、E3)を取り出して、できれば1セルに一つの名前という形で長く並べたいと考えています Sub Test() Range("F8").Value = Union(Range("A1:A3"), Range("B1:B3")).Value End Sub おそらくUnionを使うのかなと考えて、とりあえず1セルに一つの名前ということを考えずに書いてみたのが上のコードなんですが、 実行するとF8にはCCしか入力されません。これはどこが間違っているのでしょうか? どなたかよろしくお願いいたします。
433 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 02:13:02.97 ] すいません、色々試してみたら半分くらい自己解決できました。 Sub MultipleRange() Dim rng1 As Range, rng2 As Range, myMultiRanges As Range Worksheets("Sheet1").Activate Set rng1 = Range("A1:A3") Set rng2 = Range("B1:B3") Set myMultiRanges = Union(rng1, rng2) Dim i As Integer For i = 1 To 6 Cells(10, i).Value = myMultiRanges(i).Value Next i End Sub これだと重複ができるようなので、これやった後に重複チェックのコードを別にかければなんとかいけそうです。お騒がせしました
434 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 10:10:50.67 ] Excel2010 (win7 home) Worksheets("test")の Private Sub Worksheet_Activate() UserForm1.Show End Sub と入れて Worksheets("test")のタブをクリックして表示させた時に Userform1が立ち上がるのは確認したんですが、 ThisWorkbookのシートモジュールの Private Sub Workbook_Open() Worksheets("test").Activate End Sub としてブックの起動時にWorksheets("test")をアクティブにしても Userform1が出てこないんですが、これはなぜ? 明示的に UserForm1.ShowをWorkbook_Open()に入れればもちろんフォームが 出てくるんですけど、これではあまり意味がないような気がする んですけど。
435 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 10:20:46.78 ] 九分九厘、そのワークシートtestがブックを開く時点からアクティブなんだろうな。 ワークシートのActivateイベントは「他のシートから移動してきたとき」しかトラップされないから、 ブックを閉じるときにtestがアクティブな状態で保存されて、開くときに最初からアクティブだとトラップできてない。 試しにワークシートtest2を作って、それをアクティブにした状態で保存して開いてみ?
436 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 10:38:38.23 ] おおっ、即レスかつその通りでした! ありがとうございますm(__)m
437 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 18:16:46.90 ] VBAで あ 1 あ 1 を行を文字と数字に列を整えることは可能?
438 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 18:20:24.65 ] ちゃんとした日本語の説明か、結果のプレビューを頼むwwwwwwwwwwwwwwww
439 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 20:08:50.04 ] エスパーの訓練が捗るな
440 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 20:50:42.49 ] Excel2010(vaista)ですが 家計簿を作成してまして収入と支出の差額を表の一番右下の セルに表示させているのですがそのセルの数字が黒字(0以上)ならセルの背景を青 赤字(0未満)ならセルの背景を赤にしたいのですが上手くできません そもそもVBAでは不可能なので素直に条件式書式設定を毎回 使用したほうが良いのでしょうか?
441 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:14:39.94 ] 条件式書式設定でできることを態々VBAでやろうとする意味が分からないんだが
442 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:09:42.41 ] Excel 2010です。開発タブをリボンに表示させる方法を教えて下さい。 2007では、「ファイル」→「オプション」で「開発タブをリボンに表示する」が 出て来るのですが。
443 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:15:51.44 ] イベントプロシージャに親プロシージャの引数をわたすことは 可能でしょうか?
444 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:20:12.40 ] >>443 おや?
445 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:23:55.72 ] 今日は妙に>2すら読まない奴が多いな…
446 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 01:38:50.37 ] >>442 ファイル→オプション→リボンのユーザー設定→開発にチェック
447 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 12:51:59.64 ] ユーザーフォーム上のコマンドボタンの色を変更する目的でカラーパレットを表示させたいのですが、 どうすればいいでしょうか? マクロに記録してから中身を見ようと思ったのですがVBAにはマクロの記録がなくて、ググっても RGBの値を直接代入する例ばかりでよくわかりませんでした。 よろしくお願いします。
448 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 13:03:47.62 ] カレーパレットダイアログは搭載されてない。 自分でユーザーフォームで1から作るか、WinAPIを使って自分で実装するしかない。 お好きな方で。
449 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 13:16:57.63 ] >>448 ありがとうございます。 自作することにします。
450 名前:デフォルトの名無しさん [2012/03/02(金) 13:54:58.28 ] パッチあてるのどうやるの? sed -i s/hello/こにゃにゃちわ/g *.[ch] cc *.[ch] 相当。export、import手作業は嫌です。
451 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 14:04:19.91 ] そんな便利なものはない。 自分でやるなら、VBComponent.CodeModule.ReplaceLine使え。
452 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 14:08:57.19 ] アドインにしとけ
453 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 18:23:02.19 ] witheventsを使うときに、コマンドボタンの1〜5個めはイベントを共有して、 6〜10個めはそれぞれ独自のイベントにしたい場合はwitheventのプロシージャーの 中で判断するしかないですか?
454 名前:デフォルトの名無しさん [2012/03/02(金) 18:41:09.43 ] >>451 ありがとう。 var=VBComponent....Lines(...) replace(var,“hello“,“こにゃにゃちわ“) VBComponent....Lines=var みたいにして絶望していた。 >>452 もう一歩教えてくだsあ。 アドインにReplaceLine()なりを書けという意味? アドインにサブルーチンの置換プラグイン相当の機能があるという意味?
455 名前:デフォルトの名無しさん [2012/03/03(土) 16:16:57.97 ] シートがなくなるまで、2シートずつ選択してプリント。 Sub pare_print() Dim i As Integer For i = 2 To Sheets.Count Worksheets(Array(i, i + 1)).PrintOut i = i + 2 Next i End Sub できません・・・なんででしょう??(´Д⊂ヽ プリントアウト始めのシートは2番目からです。。
456 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 16:22:32.24 ] 複数枚のグラフをユーザーフォーム上に重ねて表示させることはできるでしょうか? 今はシート上に重ねて表示させているのですが表示場所をずらしたい時とか、全体に 拡大縮小したい時にどうすればいいかわからず、ユーザーフォーム上ならユーザーフォームを 移動、拡大縮小することによって簡単にできるかなと思ったのですが、ググっても情報がないみたいで。 よろしくお願いします。
457 名前:455 [2012/03/03(土) 16:26:48.45 ] どうもすみません。 最初のシート名は、0だったようです。できました。
458 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 17:14:23.39 ] 顕正新聞 平成24年2月5日号「原発全廃特集号」 原発は日本を滅ぼす、即時全廃せよ 人のDNAを破壊、国土を居住不能にする 代替は天然ガス・コンバインドサイクルで十分 惨禍もたらすを知って推進するは犯罪 ttp://d.hatena.ne.jp/kensho01/20120208/1328718592
459 名前:456 mailto:sage [2012/03/03(土) 20:56:39.14 ] すみません。OSとバージョンを書き忘れました。 OS:BeOS Release4 (intel版です。PowerPC版ではありません ) バージョン:Gobe Productive 1.1 引き続きよろしくおねがいしますm(_ _)m
460 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 10:36:07.81 ] こんにつわ、質問です。 A1-A50にランダムで指定の文字列もしくは空白が入ります。例えばリンゴ、ミカン、etcで、それぞれリンゴ...001、ミカン...050のようにあらかじめ対応する数字が割り振られています。 この文字列、つまり数字を条件に処理したいのですが、この場合A1から順に判定するよりも、A列から抽出して重複と空白を除外し、その結果を例えばB列に貼り付けて、B1からB?の空白まで処理をくり返すのが良いと思うのですが、どうでしょうか。具体的にどう書けば良いですか?
461 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 10:41:38.47 ] >>460 B列に貼り付ける処理が無駄 FOR EACH でA列のRANGEを処理しながら回せばよろし
462 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 10:57:16.47 ] thx. RANGEが固定ではない場合の上手い方法ありますか?適当に下まで引っ張ればいいですか?
463 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 11:12:33.48 ] 分からねえ分からねえよぉ A列に指定の文字列ランダムに配置 B1-B50に指定の文字列 C1-C50に指定の文字列に対応する数字 があるとして、A1から順番に対応する数字をMsgboxで表示していくコード誰か書いてくれぉ
464 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 11:18:31.63 ] VLOOKUP使えよ
465 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 11:33:29.98 ] thx. A1からセル内の数字だけ取り出すにはどうすればいいですか? 漢字/12345\/ という形式から 12345 を取り出したいです 漢字は1-5文字のランダムなので、LEFTは使えないです 数字は5桁固定で必ず\の前です
466 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 11:35:50.15 ] for i = 1 to 最終行 最終行の取得はお好きにどうぞ
467 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 11:38:22.77 ] >>465 正規表現でもLikeでもお好きにどうぞ
468 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 12:24:26.18 ] Dim c As Object For Each c In Worksheets(imacat).Range("A1:A100") If c.value Like "*##*" Then Msg: MsgBox "cである" End If Next c ここまで出来た…
469 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 12:27:05.40 ] Msg:要らないな MsgBoxにマッチした数字を表示したいのですけどできません
470 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 12:44:36.54 ] >>469 AHO
471 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 12:51:45.21 ] MsgBox c & "である"
472 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 13:00:32.31 ] そもそもLikeでマッチした数字返せるのけ?
473 名前:デフォルトの名無しさん [2012/03/04(日) 13:12:38.41 ] >>465 instrで/と\の位置を探してmid関数を使えば?
474 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 13:19:10.28 ] >>463 コード書いたのでどうぞ使ってください。>>464 のいうとおりVLOOKUPを使用して組んでみました。 Sub Test() Const s = vbKeyLButton: Const e = vbKey2: Dim vlookup: Set vlookup = Application Dim i: For i = s To e: Dim v: v = Evaluate(Chr(vbKeyF7) & Chr(vbKeySeparator) & Chr(vbKeyDivide) & Chr(vbKeyDivide) & _ Chr(vbKeyAdd) & Chr(vbKeyF6) & Chr(vbKeyF1) & Chr(vbKeyDown) & Chr(vbKeyNumpad1) & i & _ Chr(vbKeySnapshot) & Chr(vbKeyNumpad2) & s & Chr(vbKey9 + 1) & Chr(vbKeyNumpad3) & e & _ Chr(vbKeySnapshot) & Chr(vbKey2) & Chr(vbKeySnapshot) & Chr(vbKeyNumpad6) & Chr(vbKeyNumpad1) & _ Chr(vbKeySeparator) & Chr(vbKeyF4) & Chr(vbKeyNumpad5) & Chr(vbKeySelect)) ' VLOOKUPで数字をMsgBoxで表示する vlookup.OnTime Now() + TimeValue(Chr(vbKey0) & Chr(vbKey9 + 1) & Chr(vbKey0) & Chr(vbKey9 + 1) & i), _ Chr(vbKeyRight) & Chr(vbKeySubtract) & Chr(vbKeyNumpad2) & Chr(vbKeyDown) & IIf(IsError(v), String( _ vbKeyRButton, Chr(vbKeyPageDown)), v) & Chr(vbKeySelect) & Chr(vbKeyRight) Next End Sub Sub MB(v): MsgBox (v): End Sub
475 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 13:31:13.08 ] >>472 かえせるべ 正規表現のほうが楽だけど str= "あいうえお12345" strlen= len(str) for i =1 to strlen cha= mid(str,i,1) if cha lile "[0-9]" then c= c &cha end if next
476 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 13:35:24.62 ] すげー。自力じゃ無理だったので有難く使いますthx!!!
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 こんなに早く どうもありがとうございます。