1 名前:デフォルトの名無しさん [2017/11/08(水) 11:26:30.13 ID:+KUB1/9hd.net] スレ立ての際は一行目に !extend:checked:vvvvv:1000:512 と入れてスレ立てして下さい ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※関連スレ VBAなんでも質問スレ Part2 mevius.2ch.net/test/read.cgi/tech/1432173164/ Access VBA 質問スレ Part1 mevius.2ch.net/test/read.cgi/tech/1328536426/ Excel総合相談所 126 https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/ ※前スレ Excel VBA 質問スレ Part50 mevius.2ch.net/test/read.cgi/tech/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
647 名前:デフォルトの名無しさん mailto:sage [2017/12/18(月) 17:57:32.74 ID:pW3jV0rpa.net] ぱいそんってアメリカではもっともメジャーなスクリプト言語なんだっけ
648 名前:デフォルトの名無しさん mailto:sage [2017/12/18(月) 18:15:03.66 ID:fX+okHt3M.net] 何故にPythonかと思ったらエクセルにPython組み込むって話が出てるんだな。勉強するか‥
649 名前:デフォルトの名無しさん [2017/12/18(月) 19:14:05.94 ID:/veb4c2e0.net] >>628 自己評価だとそう感じるのかもしれないけど できる奴は最初からできるし、できない奴はいつまでたってもできない プログラムってそういうもん
650 名前:デフォルトの名無しさん mailto:sage [2017/12/18(月) 19:34:37.55 ID:pW3jV0rpa.net] >>632 そりゃあ人によっちゃ違うが、それは才能があるからで近道しようとしてそうなってる訳じゃないだろ わかんないことがあったら別の切り口から攻めると言うのもありじゃないの
651 名前:デフォルトの名無しさん mailto:sage [2017/12/18(月) 19:45:01.61 ID:au4G9Tq20.net] VBAerさんついに終わるのか Pythonに駆逐されちゃうね
652 名前:デフォルトの名無しさん [2017/12/18(月) 19:45:05.21 ID:/veb4c2e0.net] >>633 ないとは言ってないよ 俺が言いたいのは、別の切り口から攻めようが近道しようが 既知の問題の解決策は知識として身につくが 未知の問題に対する解決能力は上げることができないって事 つまり上達とか意識しないで楽なやり方ばかり選ぶ奴がいつだって一番賢い
653 名前:デフォルトの名無しさん mailto:sage [2017/12/18(月) 19:51:30.63 ID:pW3jV0rpa.net] >>635 天才の人は苦にしないだけでちゃんと道は通ってるよ
654 名前:デフォルトの名無しさん [2017/12/18(月) 19:54:37.06 ID:/veb4c2e0.net] >>636 何を言いたいのかよくわからんがそもそも俺が言ってるのは天才のことじゃない 単にプログラムができる奴とできない奴の話なんだが
655 名前:デフォルトの名無しさん mailto:sage [2017/12/18(月) 19:57:32.60 ID:pW3jV0rpa.net] >>637 iqないとダメなのはプログラムに限らんし まあスレチだから退散するわ
656 名前:デフォルトの名無しさん [2017/12/18(月) 20:01:42.20 ID:/veb4c2e0.net] >>638 いやだからIQとかの話じゃないってば 目の前の問題をありのままに受け入れる事ができる奴と 既に自分の中に構築された知識に当てはめないと解釈できない奴の違いだって
657 名前:デフォルトの名無しさん mailto:sage [2017/12/18(月) 23:11:06.58 ID:aXpCltYZ0.net] >>634 仮に採用されて皆がPython触るようになったら、今度はPython(笑)って扱いされる未来が見えるわ。 格好つけだけでやってる奴らが抜けて、AIとか作ってる真っ当なのが風評被害を受けそう。 言語は統一するよりも、それを扱うユーザー層毎に分けた方がいい。
658 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 12:28:53.96 ID:/mb664F4a.net] >>618 俺も似たようなの見たことがある。 でも引きずるような問題じゃ無かったと思う。 Excel再起動かPC再起動で直るんじゃね?
659 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 12:37:10.24 ID:pfZPHd/La.net] >>635 逆だと思うが。 未知の問題に対しての解決能力は上げることができる。 楽なやり方を選ぶ奴は上げられないだけ。 厳密には未知な問題といっても既知の問題と全く違うわけじゃない。
660 名前:デフォルトの名無しさん [2017/12/19(火) 16:48:29.82 ID:mNLh8c+i0.net] ここのやつらがあんまジャバジャバいうから引っ張り出して着たわ とりあえずコードは実行せずにパラ読みしようと思う https://i.imgur.com/peDAurF.jpg
661 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 17:01:17.86 ID:Bngslooy0.net] >>643 「わー、ロレックス持ってるなんてすごーい!」 「え?こんなの普
662 名前:ハだよ。持ってないとかwww」 みたいな展開になる事を期待してるんだろうけど腕時計の入れ方が無理やり過ぎて笑いしか出てこないw 本は中古屋で買ったみたいだし、あまりにもちぐはぐ過ぎてむしろ格を下げてるようにしか見えないんだが。 [] [ここ壊れてます]
663 名前:デフォルトの名無しさん [2017/12/19(火) 18:14:51.58 ID:J+VWEpvK0.net] >>642 うんだから最初に言ったんだけど自己評価だとそう感じるんだってば
664 名前:デフォルトの名無しさん [2017/12/19(火) 19:02:39.42 ID:mNLh8c+i0.net] JAVAの本でわかったこと 変数の宣言と同時に値を入れることを初期化という 変数の値が変わらないことを定数という いま10ページ目だけどこんくらいだわ
665 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 19:57:29.94 ID:9tP52mqX0.net] >>646 >変数の値が変わらないことを定数という これはちょっと違うのでは?
666 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 20:25:43.13 ID:fLKwjLgZa.net] >>645 お前の自己評価がそう感じてるだけだろw 何か自分はプログラム書ける気になってるようだけどw
667 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 21:14:28.27 ID:4AWSTK/ra.net] 変数の初期かもなんかむずむずする理解だな
668 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 21:15:04.92 ID:4AWSTK/ra.net] あ、でも彼はジャワティーの話をしてるのか ならわからんでもない
669 名前:デフォルトの名無しさん [2017/12/19(火) 21:26:16.08 ID:mNLh8c+i0.net] javaのパスが通らなくて実行できない 助けてくれ
670 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 23:45:33.30 ID:jfHXMkXp0.net] Java は環境構築が難しいから、初心者には無理 paiza.IO, codepad などのサイトで、ブラウザから実行しろ
671 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 00:20:41.41 ID:USwfdD4Y0.net] 別にJavaが難しいと感じたことはないな。 すっげえ昔にかじっただけだから今となっては初心者以下だけど。 いや、当時も初心者だったけど。
672 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 00:28:51.85 ID:USwfdD4Y0.net] コンパイラもJavaで出来てるからJava実行環境でコンパイラ動かして、そのコンパイラへの引数にエディタで編集中のテキストを一時ファイルにしたものを渡してたな。 そのエディタもJavaで誰かが作ったものを機能拡張したやつだったな。
673 名前:デフォルトの名無しさん [2017/12/20(水) 00:40:50.45 ID:xfg3gakwa.net] コマンドラインが敷居高いならeclipseでやれ 敷居高いつっても環境変数設定してそこにパス通すだけだがな
674 名前:デフォルトの名無しさん [2017/12/20(水) 01:00:50.98 ID:sohN4awK0.net] javaって効率悪すぎだろ テキストエディタで編集 ↓ 名前つけて保存 ↓ コマンドプロンプトでコード入力 ↓ 実行 どんだけ時間かかるんだよ
675 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 08:24:00.28 ID:TZHE5kKsa.net] いやeclipse使えよ
676 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 09:28:33.38 ID:FRuTBLwYp.net] これ以上はスレ違いなのでJavaスレでどうぞ
677 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 09:36:49.97 ID:GPFg9WZwx.net] eclipseも知らないで手動でコンパイルしながらブチキレてるの想像してワロタ 道は遠いね
678 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 12:25:53.38 ID:Vi8ViNgtd.net] スレチ
679 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 12:41:32.07 ID:/dU/ndoRa.net] お前ら良かったな EXCELでPythonが使えるようになるかも知れないんだって? あれはObject指向の流れを組む関数型を目指しているところの言語っていうからやりがいはあるよね 俺もVB.NetやC#はやったけど EXCELに載ることが確定したらこれからPython覚えるわ まぁ構造化言語からObject指向型言語に移行したとき めちゃくちゃ苦労したけど 今回も苦労するんだろうなぁ
680 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 13:38:58.93 ID:/fbzm/vOa.net] Pythonはさらっと概要見たぐらいだけど面白そうだね まあexcelにのらなくても勉強して損にはならんだろうな
681 名前:デフォルトの名無しさん [2017/12/20(水) 15:31:22.90 ID:EAMpcVD20.net] 必要ないもん勉強したって時間のムダだっつーの 真のエ
682 名前:Nセルマクラーだったらマクロ書くのにパイソンしか使えなくなった時に必死でググれ [] [ここ壊れてます]
683 名前:デフォルトの名無しさん [2017/12/20(水) 16:07:26.91 ID:/h7jUJynd.net] 今のままでも関数型で出来るらしいが https://qiita.com/matumoto_onga/items/7adfd4cf48288c477901
684 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 18:29:06.12 ID:khkAeR460.net] Pythonはオブジェクト指向も関数型も全部後付けって感じでイケてねえ F#にしとけって でもこんなのはプログラマ以外が触るものだからしょうがないのかもな
685 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 19:00:00.85 ID:sxNo8wqUa.net] >>665 F#ってまだ生きてんのか!
686 名前:デフォルトの名無しさん [2017/12/20(水) 19:51:25.83 ID:7WhairgWd.net] 生きてるし、活発に使われてるよ ソースはない
687 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 20:52:44.38 ID:EAMpcVD20.net] ソースはないソースはよ
688 名前:デフォルトの名無しさん [2017/12/21(木) 23:06:47.24 ID:1PuX0k7mM.net] 100列ぐらい続く計算エクセルがある 足したり引いたりするだけのエクセル。 酷くね?VBAにできないものか
689 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 02:00:09.18 ID:T3zOnX2zx.net] >>669 計算エクセルっていう表現が意味不明だが要は計算用のワークシートのことか? 大抵の場合、ワークシート関数とテーブル機能を組み合わせて何とかする方がVBA使うより楽だぞ 車輪の再発明をしてもしょうがないからな
690 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 04:21:53.41 ID:0EXQoFbJ0.net] 質問です。 Excel側からVBE上の指定のプロシージャ記述欄にジャンプする動作をVBAで記述できる でしょうか? やり方がわからずとりあえずSendKeysを組み合わせて動作するようになったのですが 不慮の事故が起きそうで怖いです。 VBEのオブジェクトモデルに沿ったアクセス方法があれば教えていただけないでしょうか。
691 名前:デフォルトの名無しさん [2017/12/22(金) 07:49:35.63 ID:BCzwPGy5d.net] >>671 VBE上でカーソルの位置をコントロールするってこと?
692 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 11:50:10.85 ID:7Q1lZFEo0.net] >>672 メンテのためにActiveBookから全Procのリストを新規Sheetに出力する Procedureを用意したのですが、Proc名からVBE上の該当Procにジャンプ したく、右ClickEventにジャンプ機能を割り当てました。 正しいアクセス方法がわからないので、ほぼSendKesyのみで記述している のですが、状況により意図しない挙動をします。 VBEを開く動作は "^{F11}"の代わりに Application.CommandBars.FindControl(ID:=1695).Execute が使えそうなことはわかったのですが、、、 VBE上で1つもModuleが開かれていなかったり、開かれているModuleと、ツリー 側の選択されているModuleが異なったりすると、"^F"が効かないようです。 FrontEndからではなく、ObjectModelに沿ったBackEndからの操作が 知りたいのですが、うまく情報を見つけられないところです。
693 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 12:58:52.19 ID:7Q1lZFEo0.net] >>671 自己解決しました。 キーワードを英語に切り替えてGGったら、StackOverFlowですぐ見つかりました。 .CodePane.GetSelection .CodePane.SetSelection あたりでなんとかなりそうです。お騒がせしました。
694 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 17:40:48.08 ID:3J82DkVga.net] VBAやりはじめて三年ぐらいだけど、For Eachで普通の配列もループできるの今日知ったわ コレクションだけだと思ってた
695 名前:デフォルトの名無しさん [2017/12/22(金) 18:05:37.66 ID:/KqbyaeQd.net] >>675 値の取得だけで設定はできないけどねー
696 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 18:16:05.21 ID:3J82DkVga.net] >>676 クラスの扱いが大分変わるのよ わざわざイテレータ自作してたわ
697 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 00:05:26.91 ID:/nzAEvVba.net] >>674 できるんだけどセキュリティ的に問題だからお勧めしない。 .netで書いた方が良いぞ。 でもVBEを操作するコードが書ければ、.net上でも殆ど同じコードでいけるから勉強しとくと良いかな。 [] [ここ壊れてます]
699 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 06:34:44.47 ID:F3cHZlpp0.net] sheet1に置いたボタンを押してからsheet1内のセルをクリックすると、クリックしたセルに「ここ」 とはいるようにしたいです。実際作りたいものはもっと複雑ですが、とりあえず。 そこで、sheet1のシートモジュールに以下の記述をしました しかし、どうやら前回クリックしていた場所を覚えていて、その場所に「ここ」と入ってしまいます 解決法はありますか? Private Declare PtrSafe Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Integer Private Sub CommandButton1_Click() Do If GetAsyncKeyState(VK_LBUTTON) Then ActiveCell.Value = "ここ" Exit Do End If Loop End Sub
700 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 06:43:21.92 ID:F3cHZlpp0.net] >>679 で書き忘れ 標準モジュールの宣言部に Public Const VK_LBUTTON = &H1 の記述もしてあります。
701 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 07:46:11.28 ID:8SavP0Th0.net] >>679 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count = 1 Then Target.Value = "ここ" End Sub クリックした場所に入れるだけならSheet1モジュールにこれで済むけど、コルーチン処理が必要というなら分からん。 いずれにしてもActiveCellとかActiveSheetとかは避けて設計すべき。
702 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 07:56:20.90 ID:F3cHZlpp0.net] >>681 自分もググってたどりついた先がそれだったんですよね でも常に発動してる状態だとやっぱり困るんですよ 一応application.enableevent を使って停止しておくこともできるようなので、 通常は停止しておくことも考えてはいます 設置したボタンを押したときだけ機能するようにしておけばいいのかな、と。 Worksheet_SelectionChange使う以外方法がなければそうするしかないですが 無効にしてる間はイベントが一切反応しなくなるという事なので、 イベント付きの他のブックを併用するようなケース等で問題が起きそうで迷ってます
703 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 08:00:18.36 ID:8SavP0Th0.net] >>682 なら If ToggleButton1.Value Then とか加えておけばいいだけでは?
704 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 08:11:12.55 ID:F3cHZlpp0.net] >>683 お・・これはいけそうです こういう使い方があるんですね・・・ 作業を先に進められそうです ありがとうございました
705 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 10:35:36.95 ID:oVsH3Gmz0.net] フォームコントロールボタンの文字の色を変えたいんだけど セレクトしない方法はないのですか? Sub test01() n = Worksheets("Sheet1").Shapes("Button 1").Name Worksheets("Sheet1").Shapes(n).Select Selection.Font.ColorIndex = 3 End Sub
706 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 10:51:51.14 ID:YCHexesv0.net] フォームコントロールボタンの文字の色を変えたいんだけど セレクトしない方法はないのですか? Set n = Worksheets("Sheet1").Shapes("Button 1") n.Font.ColorIndex = 3 みたいな?
707 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 13:25:10.14 ID:Zcbsqwvta.net] シート上のボタンならtoggleにしなくてもモジュールレベルのクリックフラグ変数で管理できねーか?
708 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 13:35:38.33 ID:8SavP0Th0.net] >>687 出来合いのものを、わざわざ回避する利点は?
709 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 15:32:28.22 ID:tRk+L7lt0.net] >>688 いや、最初コマンドボタンだったからコマンドの方がいいのかなって思っただけ 別に必要無いなら必要無いでいいし
710 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 18:23:21.18 ID:3q2JAS6ba.net] >>686 逆に何でセレクトしなきゃならんのかが分からん。 普通セレクトなんてしないだろ。
711 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 18:24:04.16 ID:3q2JAS6ba.net] すまん。 >>685 向けね。
712 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 19:38:10.94 ID:DrTFst260.net] >>685 Worksheets("Sheet1").Shapes("Button 1").TextFrame.Characters.Font.Color = vbRed または Worksheets("Sheet1").Buttons("Button 1").Font.Color = vbRed SelectするとButtons("Button 1")をオブジェクトとしてSelectionに持つので Selection.Font.Color = vbRed でいける 一方、ShapesはFontオブジェクトをもっていないので Fontオブジェクトを持っているヤツまで掘り下げてかなければダメ ということだと思う。
713 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 19:53:54.32 ID:AF0984djx.net] >>692 直感的な説明だが、オブジェクトがオブジェクトを持つという表現は間違い オブジェクトが持つのはあくまでメソッドとプロパティからなるメンバで、いわゆる下位オブジェクトにはメンバを介してアクセスしてるだけだからな
714 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 20:15:31.85 ID:oVsH3Gmz0.net] >>692 マクロの記録でやってたので。1行で可能なのですね。 TextFrame.Characters.Font.Colorでググったら出てきました。 ありがとうございました。
715 名前:デフォルトの名無しさん mailto:sage [2017/12/23(土) 20:55:59.08 ID:afY4COyy0.net] ちなみにButtonsとかCheckBoxesとかは隠しプロパティ ヘルプにもでてこないからな なんで隠してあるのかねぇ
716 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 00:26:44.47 ID:oSJcOqyea.net] >>694 分かるよ。 そういう人がとても多いから。 でも、殆どの処理はセレクト無しで書ける。 個人的にはセレクト無しで書けない場合でも何とかセレクトせずに書けないかを考える。
717 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 00:45:00.70 ID:BN72T8jr0.net] まあ、大多数の用途では得られるメリットが少なすぎてSelectを消す意味は薄いけどな
718 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 01:23:50.46 ID:2PxYmIQzx.net] オブジェクトのプロパティにアクセスする処理でSelectメソッドはなるべく使わない コードの実行中にデバッグ作業を行ったときなどに予期しないオブジェクトが選択されて、アクセスしたいプロパティにアクセス出来ずエラーになることがよくあるからね Rangeオブジェクトを指定していたはずがShapeオブジェクトやOLEObjectオブジェクトを選んでいたりとか
719 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 01:43:15.08 ID:O2udkTbW0.net] Selectは必ず代替手段があるから、範囲選択してユーザーに注意を促すとかでなけりゃSelect使う事に疑問を持った方がいい。
720 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 06:22:03.30 ID:ZKd7S1fn0.net] 起動中のIEからさらに別窓で開かれるフォーム入力用窓のIEオブジェクトを取得して操作したいと考えているのですが、 Function hoge() As WebBrowser Dim tmp As Variant For Each tmp In CreateObject("Shell.Application").Windows If TypeName(tmp.document) = "HTMLDocument" Then Set hoge = tmp Exit Function End If Next tmp End Function のようにShellを使ってもIEオブジェクトを取得できなくて困っています Set objIE = MAGIC(hWnd) のような形で、ハンドルからIEオブジェクトを取得する方法は無いでしょうか 他に方法があれば、ハンドルから取得する方法にこだわりません ただし、諸事情により外部からライブラリをダウンロードしてきて使用する、といったことはできないです
721 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 08:15:14.57 ID:BN72T8jr0.net] >>700 別窓かどうかの判定が抜けてる LocationNameとかLocationURLあたりを調べないと
722 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 11:59:50.98 ID:uwQxUsVy0.net] IEが複数あるかもしれないのに見つかったら抜けちゃうコードで何かおかしいと感じないの?
723 名前:デフォルトの名無しさん [2017/12/24(日) 15:06:20.77 ID:6Phr71Y20.net] Dim u As Long Range("A1", "I5").Value = u u = Round(u, 4) 四捨五入したいのに全部ゼロになる!
724 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 15:18:15.83 ID:CcW1Sn5Aa.net] >>703 uには何が入るの?
725 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 15:18:38.84 ID:CcW1Sn5Aa.net] てか、そりゃゼロになるだろw
726 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 15:27:49.11 ID:dho/ilxra.net] 何かが逆でワロタ。
727 名前:デフォルトの名無しさん [2017/12/24(日) 15:36:05.76 ID:6Phr71Y20.net] >>704 A1からI5のセルを桁指定したいんだ。 どうすればいいか教えてくれ
728 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 15:53:02.16 ID:sjlc/tcta.net] >>707 A1からI5の範囲に初期化したばかりのu(=0)を入れてる。 入れるのは逆で、入れた後で桁変更して戻す必要もある。 最初からuを使わずに自分自身に桁変更した自分を入れる方が普通かな。 そもそも見た目だけ桁指定する方が一般的だと思うが。
729 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 15:54:56.74 ID:CcW1Sn5Aa.net] 桁指定したいならexcel vba 書式設定 でググりなさい
730 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 15:56:16.29 ID:CBEBXlX2a.net] というか、値が複数(配列)だから一発でいけないだろ。
731 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 15:56:53.27 ID:JTJf6bSC0.net] それぞれの行のB列からC列を引きたいのですが、下のコードだと すべてB2-C2となってしまいます。 どうすればよろしいかご教示ください。 Dim i As Long Dim Lrow As Long Lrow = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To Lrow Cells(i, "D").Formula = "=B2-C2" Next
732 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 16:09:57.86 ID:U3mSSLWjx.net] >>711 数式書き込んでるループ内の処理の右辺を "=$B" & i & "-" & "$C" & i にするだけ 折角行インデックスをiで指定してループ回してるんだから使わないと この程度のことだったらVBA使わなくても組み込みのテーブル機能で実現できるけどね
733 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 16:11:04.02 ID:O2udkTbW0.net] >>711 Sub foo() Cells(2, 4).Formula = "= B2 - C2" Cells(2, 4).Copy Lrow = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(2, 4), Cells(Lrow, 4)).PasteSpecial End Sub
734 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 16:13:21.90 ID:JTJf6bSC0.net] >>712 >>713 ありがとうございました。
735 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 17:56:35.14 ID:ZKd7S1fn0.net] >>701-702 コードはあくまでも例で、実際はURLや文書内の文字列から判定しています 今回問題なのは、CreateObject("Shell.Application").WindowsをFor Eachで全要素を調べても、要素にそもそも含まれていない点です IEの子窓として存在しており、タスクマネージャーで調べるとプロセスも存在するのに、IEオブジェクトを取得できません しかし、WindowsAPIのFindWindowを用いるとハンドルの取得は可能だったので、 Set objIE = MAGIC(hWnd)のような形でハンドルからIEオブジェクトを取得する関数を作れないか質問させていただきました
736 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 19:48:46.67 ID:TDjZS1ex0.net] Excel2010です 以下のコードを実行すると、"$A$2"が表示されます。 セル範囲に添字0を付けた場合、セル範囲の先頭セルが参照される (この場合B2)と思い込んでいたのですが、私の誤りでしょうか? MsgBox(worksheets(1).range("B2:C3")(0).address)
737 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 21:16:40.55 ID:ODr8GH0o0.net] 0 じゃなく 1
738 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 22:01:25.06 ID:TDjZS1ex0.net] >>717 ありがとうございます OffSet()だと原点がゼロなので そういうのと混同していたかも知れません
739 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 22:44:17.96 ID:4FfGU/eI0.net] Dim FSO As Object Set FSO = CreateObject("scripting.filesystemobject") Dim folder As Object Set folder = FSO.getfolder(ファイルパス) Dim f As Object For Each f In folder.Files If f.Name Like "*" & Month(Date) & "*" Then ’ここでファイル名を翌月に変えてコピーを作成したい End If Next ファイル名は「AAA〇〇月BBB」で統一(ABは文字列で〇〇は月を二桁表示) 抽出できた今月ファイルをコピーして名前の〇〇を翌月に変更したもの(翌月ファイル)を同フォルダ内に作成したいです コピー元ファイル名を継承して一部だけ変更する良い方法が見つからなかったので教えてください
740 名前:デフォルトの名無しさん mailto:sage [2017/12/24(日) 23:29:24.13 ID:XB6s5ekxa.net] >>714 そのセル全部のRangeに対して"=B2-C2"でいける。
741 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 00:16:31.32 ID:2KDGjSox0.net] >>719 Sub foo(FolderPath As String) Dim FSO As New FileSystemObject Dim c As New Collection Dim Folder As Folder Dim File As File FindWord = "*" & Month(Date) & "*" Set Folder = FSO.GetFolder(FolderPath) For Each File In Folder.Files If File.Name Like FindWord Then Exit For Next If File Is Nothing Then Exit Sub s = Split(File.Path, "\") For i = LBound(s) To UBound(s) If s(i) Like FindWord Then e = Split(s(i), ".") s(i) = Month(DateAdd("m", 1, Date)) & s(1) End If FilePath = FilePath & s(i) If i < UBound(s) Then FilePath = FilePath & "\" Next FSO.CopyFile File.Path, FilePath End Sub 試してないけどこんな感じかなぁ。
742 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 08:06:21.04 ID:fMKsEfdQa.net] >>719 fileName = Replace(fileName,○○,××)
743 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 08:07:54.57 ID:fMKsEfdQa.net] ああ、AAAとBBBに数字がない前提じゃないとダメだな
744 名前:717 mailto:sage [2017/12/25(月) 12:59:33.91 ID:5/ecyLcnM.net] >>721 >>722回答ありがとうございます まだ試せていませんが AAA○○月BBBじゃなくて AAABBB○○月にした場合もう少し簡単に記述出来ますかね? ちなみにABに数字は含まれてないです
745 名前:デフォルトの名無しさん [2017/12/25(月) 16:18:43.87 ID:dIh/hlW50.net] んんんんあああああああああああああああああああああああああああああああああ
746 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 16:44:33.34 ID:DuOFgh3Va.net] コピーしてファイル名置換するだけでしょ? フォルダもすでに取得してるなら fso.copyfile file.Path,folder.Path & "\" & Replace(file.Name,"○○","××") だけで行けるんじゃね
747 名前:デフォルトの名無しさん mailto:sage [2017/12/25(月) 17:30:49.11 ID:1470x9yD0.net] UserFormに「次へ」のボタンをつくり複数のUserFormを次々と経由することで対話式に値を取得していきたいと思っています 誤った選択をしてしまった場合に備え、戻るボタンも作るとします ○UserForm1の「次へ」ボタンのクリックイベントに以下のように記述しました Me.Hide UserForm2.Show ○そしてUserForm2の「戻る」ボタンのクリックイベントには以下のように Me.Hide UserForm1.Show うまくいったと思いきや、一度1に戻ってからもう一度UserForm2を再表示させると UserForm2のinitializeに書いた処理が実行されません。 仕方が無いので1の次へに UserForm2.Show Unload Me と書いてみると、今度は2から戻る時に、「フォームは既に表示されています。モーダルに表示できません」と出ます 2の「戻る」には上に書いたようにMe.Hideがあるにも関わらずこのエラー表示 解決法はありますか?