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)
962 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 20:16:12.20 ID:rQmHQ7OM0.net] >>929 > dictionaryもありだけど、fsoのやつはなんか取り回しがいまいちじゃね 意味不明 Dictionaryとfsoになんの関係があるんだ?
963 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 21:00:25.33 ID:xouI7cQH0.net] >>918 とりま、Union関数は遅いから絶対に使うな、それだけ セル数がちょっと増えると簡単にフリーズする 普通に配列とかに入れてった方がいい
964 名前:デフォルトの名無しさん [2018/01/21(日) 21:12:55.02 ID:nVuQLEta0.net] >>935 とりま、なんでいきなりそれを言いだしたのかよく分からんが 遅いのはお前のプログラムが下手糞なだけ 脈絡のない下手糞自慢ごくろうさん
965 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 21:38:18.50 ID:Ycn/1JW20.net] require 'set' File.readlines("ファイル名").to_set.map { |item| puts item } Ruby の集合を使うと、以下のような行区切りのファイルを、 あ い あ あ う い 以下のような結果にできる。 ただし、集合にはデフォルトで、順番は無いので、 順番が必要なら、お好みの基準でソートする あ い う
966 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 21:51:29.18 ID:EcNkRoqM0.net] 毎度思うんだが、Rubyって他言語のスレにまで布教しに来なきゃならないほど不人気なのか?
967 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 22:19:18.53 ID:Ycn/1JW20.net] Ruby だと、テキスト処理が、めちゃめちゃ簡単に作れる 他の言語のように、悪戦苦闘しない
968 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 22:23:07.58 ID:+2jqUeqC0.net] どうせなら引っ越し準備も兼ねてPythonにしようゼ
969 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 23:23:35.81 ID:ppfN03med.net] 単純に2万個のセルをUnionするだけで1時間かかる Sub aaa() Debug.Print Time Dim u As Range Set u = Cells(1, 1) For r = 3 To 40000 Step 2 Set u = Union(u, Cells(r, 1)) Next Debug.Print Time End Sub
970 名前:デフォルトの名無しさん mailto:sage [2018/01/21(日) 23:45:19.36 ID:Ycn/1JW20.net] 2万個のデータは、テキストデータだけなら、1MB ぐらいだろ >>937 のRuby でのテキスト処理なら、1秒ぐらいじゃないか?
971 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 00:04:49.43 ID:R+7srG110.net] >>942 空気読んでね
972 名前:アこはテキスト処理の質問スレじゃなくて Excel VBAの質問スレだから [] [ここ壊れてます]
973 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 01:20:01.78 ID:pYe1Cwj70.net] そんなに時間が掛かるのなら、一旦データをエクスポートして、 データをテキスト処理してから、インポートして戻せば? たかが、2万個のデータで、1時間は現実的ではない そんなに時間が掛かっても、どうしても、VBA でやりたいのか?
974 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 01:43:29.00 ID:zmIcszTc0.net] あくまでUnionを使った場合であって高速に処理する方法はいくらでもあるからなぁ。 それに仕事でVBA使う環境だと他社との協調も考えなきゃいけないからRubyインストールする方がよっぽど非現実的だし。 まぁ、たぶんおちょくってるつもりなんだろうけど、そもそもVBA以外の環境がないって前提のスレだから、 Rubyマンの煽りが煽りになっていないっていう・・・。
975 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 04:08:31.22 ID:Xp9Ai2fT0.net] 重複の削除はワークシートでやった方がてっとり早いと思う
976 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 04:38:17.99 ID:AE7SVx7N0.net] >>945 > そもそもVBA以外の環境がないって前提のスレだから そんな前提で質問に来る人もいるだろうけど、 「最適解」を求めている人が、とりあえずVBAだとどうなるか、と思って質問する場合もあるでしょ だから、質問者が「全体にVBA以外はダメ」って制限をかけていない限りは、 上でも、ACCESSを進めている人もいたけど、実用面から考えた回答も質問者の利益になると思うんだけど (質問者がそう思っていても、何も知らないからそう思ってるってパターンすらあり得るかな)
977 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 05:56:27.49 ID:zmIcszTc0.net] >>947 Excel VBA質問スレでの「実用面」は、一般的な企業向けWindows PC(Office製品入り)で出来る事に制限されると思うけど。 それに質問者が明言した事以外は「出来ない」と考えておくのが常識だと思うね。 だいたい他の言語に興味があるなら、その言語のスレで質問すりゃいいわけだし、 どんな自己弁護をしたところで特定言語のスレで他言語の話をする理由にはならないよ。 せめて質問者に対してVBA以外の開発環境は無いか訊ね、Rubyが使えるという自発的な回答が得られた時に初めて、 Rubyスレに誘導して、そちらで話を展開すべきだね。
978 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 08:37:35.39 ID:AE7SVx7N0.net] >>948 > それに質問者が明言した事以外は「出来ない」と考えておくのが常識だと思うね。 リアルでも、相手に聞きもせずに勝手にそんな縛りをかけて要件定義する人はいないと思うよ > せめて質問者に対してVBA以外の開発環境は無いか訊ね、Rubyが使えるという自発的な回答が得られた時に初めて、 > Rubyスレに誘導して、そちらで話を展開すべきだね。 環境を聞くのは勿論ありだが、「○○だとより簡単にできるよ」ってこちらから言う事に何の問題があるのか? 今ある環境内で必ず実現する必要があるなら別だが、そうでない場合もよくあることでしょ ま、いずれにせよ、何も聞かないうちに勝手に「○○に違いない」って決めつけるのは、 要件定義では一番しちゃいけないことだよ
979 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 10:06:54.55 ID:zmIcszTc0.net] >>949 仕事している風を装いたいんだろうけど、明らかに経験が無いの丸出しなんだよな・・・。 そもそもVBAスレでRubyの話を出してくる事自体が問題なんだよ。 君が問題になっているのは要件定義の話ではなく開発環境の話だ。 明確な線引きをするなら、このスレではxlsmに記録し、特別な準備なしに実行できるものでなければ、何であれ許容範囲外だ。
980 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 10:12:50.46 ID:JFwvghX1M.net] またそうやって明文化されてもいない自分ルールを展開していくー
981 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 10:23:32.81 ID:zmIcszTc0.net] 明文化されてはいないけど、過去から今までのスレでの反応を見る限りは、 だいたいxlsmファイル単体でマクロの実行が補完できるかどうかが拒絶反応の出る出ないを分けてるよ。 ただ個別にマクロが記録された二つ以上のファイルを連携させる場合の話もあるから「xlsmに記録し、準備なしに実行可能な」と定義しただけ。 押しつけるつもりはないけど、この定義で問題が無ければテンプレに加えてキチ避けしてほしいくらい。
982 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 11:30:49.09 ID:r0T2WJT6a.net] >>934 ごめんscriptingRuntimeのやつ、の間違いだ
983 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 11:33:07.33 ID:y0jssaARd.net] VBAをメインとして他言語も補助的に使う。 それなりにあると思う
984 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 15:12:56.07 ID:EwN8a0pa0.net] 同じ現象が起きるようにできるだけ簡単なコードを用意しました まっさらなxlsmにUserForm1を挿入し、TextBox1とTextBox2を横に並べます UserForm1モジュールに下記のようにコードを記述します Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 39 Then With TextBox2 .SetFocus .SelStart = 0 End With End If End Sub UserForm1を呼んだ後、TextBox2にabと記入します このとき、TextBox1からTextBox2に矢印キー右でうつろうとするとaの前ではなくaとbの間にカーソルが来てしまいます。 どうすればaの前にカーソルが来るようになりますか?もちろんabは例示にすぎずいろんな文字列が入ります よろしくお願いします
985 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 15:25:33.05 ID:EwN8a0pa0.net] >>955 ですけど、KeyCode=40、つまり矢印キー下にセッティングして TextBox1から2に移ると頭にカーソルきますね ということは、入力した矢印キー右がTextBox2に移ったあとも生きててその影響が出てるってことですかね まぁ原因分かっても解決方法が分からないのですが
986 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 16:37:43.27 ID:DgxtyBXU0.net] 試していないけれど With TextBox2 の前に KeyCode = 0 を入れたらどう
987 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 17:07:09.72 ID:+/nnDvsjM.net] >>954 VBAでは書きにくい or 実行速度がめちゃ遅い かつ その言語なら簡単に書ける or 実行速度が速い ならありうると思う なのでAccessとかADOならまだわかるけどRubyはないな
988 名前:デフォルトの名無しさん mailto:sage [2018/01/22(月) 22:49:33.42 ID:EwN8a0pa0.net] >>957 しゅごい・・・できました ありがとうございました
989 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 10:46:16.37 ID:QE61Ho6h0.net] 。と。の間に入ってる文字を全部同じ文字に置換したい場合ってどうすればいいでしょうか? 。。 →。ccc。 。akok。 →。ccc。 。3293i9ia。 →。ccc。 みたいな感じです
990 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 11:16:56.30 ID:QE61Ho6h0.net] すいません数式の中の。と。の間の文字を置換でした
991 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 12:30:55.33 ID:4OtF4psx0.net] 数式の中のってのがよくわかんないから実際の数式を書いてくれ
992 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 13:09:34.71 ID:QE61Ho6h0.net] こういう事がやりたいって感じです わかりづらくてすいません =123456789(この9桁の数字はランダム) → =123ccc789 =123456789(この9桁の数字はランダム) → =12ccc3456789
993 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 13:24:33.86 ID:96uZKYcfd.net] >>963 。の話はどこへいったんだ?
994 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 13:52:49.81 ID:QE61Ho6h0.net] いやこっちの方がわかりやすいかなとw
995 名前:デフォルトの名無しさん [2018/01/24(水) 14:37:17.59 ID:626EYBnb0.net] 2週間くらい前から、 フォームコントロールのボタンを配置すると エクセルファイルの起動が いつもの起動時間の5倍くらいかかる様になり困っています。 ちなみに、新規のファイルでも同じ現象になり、 他のパソコンでも同じ現象になっています。 どなたか、解決方法を知らないでしょうか? 今使っている環境は Windows 10、バージョン 1709 Excel2016 バージョン 1712 です。
996 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 14:47:11.88 ID:LHEOU22dM.net] >>965 草生やしてんじゃねえよ真面目に質問しろ
997 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 16:00:42.34 ID:eVK1iV6m0.net] w
998 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 17:24:26.92 ID:QE61Ho6h0.net] なんでwなんて打ったのか・・・反省してます
999 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 17:48:11.23 ID:cTEKAhE2M.net] >>969 VBA 正規表現 置換 でググれ
1000 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 19:49:39.94 ID:4OtF4psx0.net] >>963 みんなこれでわかるの? 上と下に規則性があるように見えないんだが 上は値を置き換えてて、下は挿入してるよね
1001 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 20:02:49.35 ID:XHxrtrwiM.net] わかりません
1002 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 21:10:53.71 ID:6b5evSsja.net] >>918 そのテキストファイルがCSVファイルみたいにカンマ区切りで ヘッダとして項目名が付いてて項目名に重複が無ければ そのファイルにSQLぶん投げて結果セット取ってこれるんだけどなぁ
1003 名前:デフォルトの名無しさん [2018/01/24(水) 21:14:29.60 .net] 地道にループぶん回してFomulaLocalとInStrとMidしてちょ
1004 名前:デフォルトの名無しさん mailto:sage [2018/01/24(水) 21:29:25.29 ID:l13g0WQj0.net] いや、ループするにしても VbScriptingDictionary使うかCollection使って 値をキーとして登録して 同じキーがあれば無視、無ければ登録追加で 最後にその取っておいた内容を 展開するようにすればそこそこのレスポンスで 行けるんじゃないかな。 SQLで行けるならそれが最速だとは思うけど。
1005 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 19:41:38.87 ID:x0ph6Erf0.net] ちゃんとしたDBMSならともかく、エクセル表にSQL投げて実行速度が速いとか考えられんけど
1006 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 21:14:11.87 ID:xVw6nJl50.net] ADOだとそれなりに早いイメージなんだけど 実際はどうなのかね 誰か検証していてもよさそうだが
1007 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 22:04:13.28 ID:BYFi0PM80.net] 一項目だけの比較なんかだとVBAでやるのと変わらないけど、色々と条件が増えていくとSQLの方が速度が落ちにくい。 あと他の誰かが見ることも考慮すると、SQLで見えるようにしておいた方が分かりやすい。 ただExcelでSQLというのは絶望的に使いづらい。
1008 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 22:28:41.91 ID:3kW0jqmr0.net] UPDATEはできるけどDELETEができないんだっけ?
1009 名前:デフォルトの名無しさん mailto:sage [2018/01/25(木) 22:46:48.37 ID:2HN+h3+60.net] できなくてもやらなきゃいけない時があるんだよ男にはな
1010 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 10:16:15.47 ID:i1V2CYFLa.net] エクセルのテーブル機能ってどうなんよ あんまり使わんから馴染みないんだけどsql使いやすくなったりせんの?
1011 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 14:00:22.47 ID:ewTTza6/0.net] >>980 猫もだよ 穴に逃げた虫を懸命に取ろうとしている
1012 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 19:52:38.86 ID:uoysLyn50.net] こういうのを見ると 早くPython導入して欲しいって思うよな アンケート取られてたからちょっと入門見たけど結構面白いわアレ こういった集約的なことに関してもずっと楽に作れそう VBやC#でも後の方で覚えることになるラムダ式や イテレーターとかごく基本的な当たり前のこととして いきなり最初から出てくるし
1013 名前:デフォルトの名無しさん [2018/01/26(金) 20:26:28.69 ID:Vo+OzJVu0.net] VBAですら暴走しまくりのお前らにpythonなんか与えたら社会を困らす力作マクロ()がますます増えちゃうじゃんかw
1014 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 20:36:36.35 ID:VXa7znFt0.net] コードをまともに読み書き出来ないメゾット君が心配するような事でもないけどな
1015 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 22:00:17.36 ID:mlDN6tJ0d.net] VBAを廃止なんてできるわけないからPythonと入り乱れたプログラムになるんだろーか?
1016 名前:デフォルトの名無しさん [2018/01/26(金) 22:15:41.07 ID:pXxYwYu40.net] 職場の環境じゃVBAくらいしか選択肢がない
1017 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 22:23:52.83 ID:Ji/nweCn0.net] >>987 https://forest.watch.impress.co.jp/docs/serial/yajiuma/1097447.html
1018 名前:デフォルトの名無しさん mailto:sage [2018/01/26(金) 22:40:51.06 ID:VXa7znFt0.net] 影響するのは最新バージョンだけだろうし、Excel版Pythonの初期バージョンだと使い物にならなかったり参考文献が少なかったりの問題で、 本格的に使われるようになるにしても五年以上かかりそう。そしてそこからさらに数年経たないと、そのバージョン使う会社が出てこなさそう。 っていうか今までもVBAをVB.Netへ移行させようとして失敗してたらしいし、AIブームに乗じた一時的なもんで実現しないんじゃないの。
1019 名前:デフォルトの名無しさん [2018/01/27(土) 00:23:34.40 .net] Pythonって起動にめっちゃ時間がかかるから(5秒くらい) 普段使いのちょっとしたツール作るには使い物にならないという印象
1020 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 00:36:59.48 ID:Xe+uGT7T0.net] 多分Python載ったとしてもしばらくはVBAと共存だろうとは思う。 勉強嫌いな爺さん達にはPythonが来るのは驚異以外の何物でもないかも知れないけど 導入されたら少なからず徐々に普及し始める。 なぁに、EXCELの中のコンパクトに纏まった世界の話だし 勉強するにはうってつけだと思う。 少なくとも今後のVBAよりは次に繋がるよ。
1021 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 01:00:30.81 ID:/Onm91iZa.net] 今まで言語を変えるような具体的な話は出てなかったからなぁ まさかObject指向言語じゃなくていきなり関数型言語が来るとはなぁ
1022 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 01:49:19.54 ID:mMQhkopa0.net] PythonはAIブームの収束と共に消えていきそうな雰囲気だから将来性っていうと疑問が・・・。
1023 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 08:00:53.71 ID:lEBNH3fnr.net] ツッコミどころ多すぎだけどとりあえずw オマエがギモンを感じるなw
1024 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 08:16:06.57 ID:ZgMGVzLO0.net] >>990 > Pythonって起動にめっちゃ時間がかかるから(5秒くらい) さすがにPC買い換えようよ...
1025 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 11:01:00.79 ID:Nudrd5lRF.net] Excel Python 質問スレ mevius.2ch.net/test/read.cgi/tech/1517018055/
1026 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 14:29:11.91 ID:arqbrGPuM.net] VBAがくっそ使えない言語だから普通はpython大歓迎でしょ…
1027 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 15:20:10.85 ID:cbFXqoc10.net] VBA嫌いじゃないけど、Phythonの方が明らかにエレガントなコーディングできそうだから歓迎しかないわ VBAは参照設定したら使える程度のものになるんじゃないか?
1028 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 15:44:26.54 ID:+7hAxrT3a.net] どんな言語だってできる奴はできる。 VBAが駄目だとか言う奴に限って碌なコード書けない奴ばかりなんだよなあ。
1029 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 16:05:43.43 ID:arqbrGPuM.net] こんな書いててストレスマッハの言語はないからな まあ全員パイソンいくでしょw
1030 名前:デフォルトの名無しさん [2018/01/27(土) 16:11:26.72 ID:3QIsbpwxM.net] VBA→javascript→Pythonの順に覚えたけど何がそんなにストレスなのかよく分からん
1031 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 17:39:06.57 ID:Xe+uGT7T0.net] それより次スレは?
1032 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 19:59:27.66 ID:QIG/4o8/0.net] >>998 パイソンやとスレで相談したいときに 質問スレではインデント崩れて悲惨なことになってるな
1033 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 20:30:03.5
] [ここ壊れてます]
1034 名前:6 ID:Xe+uGT7T0.net mailto: とりあえず次スレ立てておいた Excel VBA 質問スレ Part52 http://mevius.2ch.net/test/read.cgi/tech/1517052305/ >>1003 Pythonはスコープがインデントで決められているからね インデントの重みが他の言語のそれとは全く違う 代わりにEnd IfやEnd Subみたいなものがない [] [ここ壊れてます]
1035 名前:デフォルトの名無しさん mailto:sage [2018/01/27(土) 22:07:33.55 ID:845Tmzax0.net] >>1004 乙 1000ゲット
1036 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 80日 10時間 41分 3秒
1037 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています