Excel VBA 質問スレ Part59
: デフォルトの名無しさん (ワッチョイ d2a3-A3MQ) [sage] 2019/02/09(土) 15:12:30.70:3lTArmdf0 !extend:checked:vvvvv:1000:512 !extend:checked:vvvvv:1000:512 ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part58 ttps://mevius.5ch.net/test/read.cgi/tech/1542577644/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured : デフォルトの名無しさん (ワッチョイ a98e-Gewk) [sage] 2019/02/09(土) 15:22:25.15:8WZyJ5B/0 ただし、VBAが何かわからないような馬鹿はお断りです : デフォルトの名無しさん (ブーイモ MM22-FdHg) [sage] 2019/02/09(土) 15:40:14.54:CKZ2Rs4GM 他の言語スレでは相手にされずここならマウント取れるだろうとやって来る馬鹿もお断りです : デフォルトの名無しさん (アメ MMcd-pe6H) [sage] 2019/02/09(土) 17:15:55.60:Z3yo63+mM マウント取られちゃう怯えですか : デフォルトの名無しさん (ワッチョイ 8deb-/WZR) [] 2019/02/09(土) 21:48:35.35:dlyNQvdo0 前スレ終了直前でスルーされてしまった質問です。お願いします。 あるファイルに、 on error goto err ****** exit sub err: msgbox err.description end sub ↑ こういうコードをたくさん書いてきました。 しかし、エラーが出たときに、どのプロシージャで発生したのか知りたくなり、 msgbox err.description & このプロシージャ名 に変更したくなりました。 「このプロシージャ名」を書く方法ってあるのでしょうか? : デフォルトの名無しさん (ワッチョイ 911f-Q5xa) [sage] 2019/02/09(土) 22:15:26.08:J8bfqgzv0 C#で作成したライブリファイルをビルドしてtest.dllファイルを作成し仮にデスクトップに置きました。 中身は public string[] GetData(string path,string file) { //処理 } これをVBAで実行したのですが、標準モジュールでどう宣言したらできますか? そもそも出来るんですか? Declare Function strData Lib "???" Alias "???" () As string() これを使うんですよね? : デフォルトの名無しさん (ワッチョイ 8dda-OF6d) [sage] 2019/02/09(土) 22:30:32.98:nXE2v5Lv0 そうやって作ったのって、やっぱ実行速度はC#並みになるのかな。 VBAレベルに落ちちゃうなら、VBAに翻訳しちゃうとか。 : デフォルトの名無しさん (ワッチョイ a969-z8kj) [sage] 2019/02/09(土) 22:39:52.86:M8bBhNwV0 エクセルvba勉強始めてるんですけど 言語がなんかすきになれないです オブジェクトを生成してそれを操作するってのばっかりにみえるんですが それならいっそパイソンやら使いやすい言語でcomオブジェクトからエクセルを操作したほうがいいんでしょうか? : デフォルトの名無しさん (ワッチョイ a2a2-/WZR) [sage] 2019/02/10(日) 00:05:20.18:cpoaXViK0 要望2だけ反映させてました ttp://https://www.axfc.net/u/3958630 変更点 乱数はマイナスも作成できるようになりました 文字シャッフル機能を追加しました ケンブリッジのあれも取り入れてみました 要望1はいいと言うことなのでこれで終わりたいと思います。 スレ汚し失礼しました。 : デフォルトの名無しさん (ワッチョイ f901-IbHV) [sage] 2019/02/10(日) 03:10:28.77:T8b1EA5w0 無かったと思うな… あるとしても ThisModuleな感じか… : デフォルトの名無しさん (ワッチョイ 25ce-0b7p) [sage] 2019/02/10(日) 03:26:25.40:5I+kynYZ0 別の言語でエクセルの操作はおすすめできない やるならワークブック/ワークシートオブジェクトなどを操作した方がいい オブジェクトを操作するだけならわざわざ高いOfficeも買わなくていいし : デフォルトの名無しさん (ワッチョイ a2a2-/WZR) [sage] 2019/02/10(日) 03:36:45.00:cpoaXViK0 デバッグしてたらとまりませんね・・・ 何個かバグつぶしたので上げなおします ttp://https://www.axfc.net/u/3958695 : デフォルトの名無しさん (アウアウクー MM91-eF01) [] 2019/02/10(日) 08:29:51.15:nwYV/fdtM なんかすみませんね。深夜睡眠をけずってまでやってらったようで、、。ツールありがとうございます。 あとはこちらでいただいたツールをベースに必要に応じてカスタマイズします。 : デフォルトの名無しさん (ワッチョイ e188-drk2) [sage] 2019/02/10(日) 09:22:45.87:adWOvpgi0 JScriptでエクセルやってます いろいろ出来るようになったのですが、VBAで選択した範囲の右下をとるときに、 y = Selection.Row + Selection.Rows.Count - 1 x = Selection.Column + Selection.Columns.Count - 1 としますが、JScripで、 var sheet = book.Worksheets( 1 ); var y = sheet.Selection.Row とかしてもありませんと怒られます。どうしたらいいでしょうか また、いろいろとググっているのですが、JScriptで使えるエクセル専用のオブジェクトやプロパティを 調べられるサイトってないのでしょうか。なかなか見つけられないのですがわかる方、教えてください VBAならいろいろあるようですが : デフォルトの名無しさん (ワッチョイ 8dda-OF6d) [sage] 2019/02/10(日) 09:40:27.91:7rlN1EyT0 そこだけVBSにするとか。 : デフォルトの名無しさん (ワッチョイ 1df9-n/rh) [sage] 2019/02/10(日) 09:54:47.81:px4mCHlG0 JScriptは良くわからんが・・Javaは結構したけど 見当違いなら申し訳ないが 既にExcelが起動していて、シート1が選択され 範囲が選択されている状況で、JScriptを動かしているんで良いですよね : デフォルトの名無しさん (ワッチョイ 1df9-n/rh) [sage] 2019/02/10(日) 10:14:14.92:px4mCHlG0 単にプロシージャ名の変数を宣言しておき 各プロシージャ実行時にプロシージャ名に名前をセットして実行 エラー表示でプロシージャ名の変数を表示するだけでは : デフォルトの名無しさん (アークセー Sxd1-Hrf8) [sage] 2019/02/10(日) 10:29:08.47:D1+mLGbSx var sheet = book.Worksheets(1); sheet.Activate; var selected = book.Application.Selection; var x = selected.Row + selected.Rows.Count - 1; var y = selected.Column + selected.Columns.Count - 1; でいけるんじゃないかな 試してないから間違ってたらごめん : デフォルトの名無しさん (ワッチョイ 1df9-n/rh) [sage] 2019/02/10(日) 10:48:51.96:px4mCHlG0 昔は、メモリーの領域を分け合って使ってたけど いまわ全てオブジェクトと思え エクセルは色々このオブジェクトの使い方が説明されていて 機能も多い いやならすべて作ればとなるが、所詮何も出来ないだろ : デフォルトの名無しさん (ワッチョイ 1df9-n/rh) [sage] 2019/02/10(日) 10:52:53.82:px4mCHlG0 これは間違いだな、サブルーチンから戻った時を考えてない サブルーチンでは、元の名前を保存しておき元に戻す処理が必要になるが こんなの今時やらないな : デフォルトの名無しさん (ワッチョイ 1df9-n/rh) [sage] 2019/02/10(日) 10:57:18.71:px4mCHlG0 したがって、プロシージャ名は配列で宣言し、サブルーチンの時の処理が必要になるが これは、システムが管理しているのを使うべきだな、すまない : デフォルトの名無しさん (ワッチョイ e188-drk2) [sage] 2019/02/10(日) 11:29:32.47:adWOvpgi0 ありがとうございます! それで動きました。 どこでそういうのは調べるのでしょうか。 なかなかググってもわかりません 最初にJScriptを始めたとき、ネットでJScriptの方が初心者向けにエクセルの操作とかわかりやすい記述が 見つかったので、JScriptを始めたのですが、VBSだと、VBAとぼとんど同じプロパティで同じことができますか? そうなら、VBSに移ろうかな : デフォルトの名無しさん (ワッチョイ 1df9-n/rh) [sage] 2019/02/10(日) 12:19:38.78:px4mCHlG0 まあなんだな、質問して回答を実行してできたことが答えじゃなくて 何故できなくて、何で出来たのが答えなんだけどな : デフォルトの名無しさん (アークセー Sxd1-Hrf8) [sage] 2019/02/10(日) 12:35:46.47:YUFMtInCx 今回の質問はエクセルのオブジェクトモデルに忠実に従えば解決するものだよ VBS含め他のどんな言語を選択しようが、そのあたりの事情は変わらない 具体的には、今回はSelectionへのアクセス方法がおかしかったわけで、 MSDNリファレンスのプロパティ一覧を見たり、VBEのオブジェクトブラウザでプロパティを検索したりすれば、 Worksheetオブジェクトには現在の選択範囲へのアクセスを提供するSelectionプロパティがないことや、 SelectionプロパティはApplicationオブジェクトのメンバとして実装されていることが分かる : デフォルトの名無しさん (ワッチョイ 8dda-OF6d) [sage] 2019/02/10(日) 12:45:32.26:7rlN1EyT0 無理に移るんじゃなくて、併用するとか。 : デフォルトの名無しさん (ワッチョイ 1df9-n/rh) [sage] 2019/02/10(日) 12:48:09.50:px4mCHlG0 前スレでもあったが、シートを選択してなければ、そのシートの選択範囲は取れない ただそれだけだろ : デフォルトの名無しさん (アークセー Sxd1-Hrf8) [sage] 2019/02/10(日) 12:56:37.91:YUFMtInCx 元の質問のサンプルはsheet.Selectionという式の構文が間違っているので、仮にシートを選択していようが選択範囲は取れない あと、シート上のSelectionの情報を取るだけなら画面遷移を伴うSelectではなくActivateで十分だろう : デフォルトの名無しさん (ワッチョイ e188-drk2) [sage] 2019/02/10(日) 13:00:02.97:adWOvpgi0 全く同じことをjsとvbsでやってみました。jsはうまく動作しますが、vbsは動きません selectedにRowはないと言ってきます。レンジの選択はちゃんと出来ています jsのコード var book = GetObject("C:\\file.xls"); var sheet = book.Worksheets( 1 ); sheet.Select; sheet.Range( "A1", "B10" ).Select var selected = book.Application.Selection; var x = selected.Column + selected.Columns.Count - 1; var y = selected.Row + selected.Rows.Count - 1; WScript.echo( "x=",x,", y=", y ); book = null; WScript.Quit(2); vbsのコード Set book = GetObject("C:\\file.xls") Set sheet = book.Worksheets( 1 ) sheet.Select sheet.Range( "A1", "B10" ).Select Set selected = book.Application.Selection Set x = selected.Row ' ここでエラー MsgBox "x:" & x Set book = Nothing : デフォルトの名無しさん (ワッチョイ 1df9-n/rh) [sage] 2019/02/10(日) 13:03:50.84:px4mCHlG0 すまないな >シート上のSelectionの情報を取るだけなら画面遷移を伴うSelectではなくActivateで十分 実質的にどう違うかわからないので申し訳ありませんが教えていただけませんか : デフォルトの名無しさん (アークセー Sxd1-Hrf8) [sage] 2019/02/10(日) 13:14:52.82:YUFMtInCx Selectによる画面遷移はユーザーとの対話を想定した処理で、当然描画処理の負荷がかかる プログラム上で参照するアクティブなオブジェクトを切り替えるだけならSelectはしなくて良い : デフォルトの名無しさん (ワッチョイ 9111-gf/b) [sage] 2019/02/10(日) 13:26:46.13:BFbUXkOH0 >>Set x = selected.Row ' ここでエラー x = Selected.Row : デフォルトの名無しさん (ワッチョイ e188-drk2) [sage] 2019/02/10(日) 13:31:40.65:adWOvpgi0 出来た。 なんだかなあ、、、w : デフォルトの名無しさん (ワッチョイ e188-drk2) [sage] 2019/02/10(日) 13:44:31.83:adWOvpgi0 いろいろ試してみてわかりました もともと、エクセルのマクロで y = Selection.Row + Selection.Rows.Count - 1 x = Selection.Column + Selection.Columns.Count - 1 と書いていたものをjsでそのままやったら動かないので、 sheet.Selectionとしたり、book.Selectionとしたりいろいろと試したのですが、 Appliction.Selectionだったんですね x = book.Application.Selection.Row + book.Application.Selection.Rows.Count - 1 とすれは、jsでもvbsでも両方で動きました 実際は、 Set selected = book.Application.Selection と一旦とってからの方がやりやすいですね。ありがとうございました : デフォルトの名無しさん (ワッチョイ e188-drk2) [sage] 2019/02/10(日) 15:20:48.09:adWOvpgi0 jsで、Activateでやってみましたが、ワークシートも切り替わってますよ Selectとの違いがわかりません vbsではやってません : デフォルトの名無しさん (ワッチョイ a98e-Gewk) [sage] 2019/02/10(日) 15:55:33.83:hManQYIw0 スレチだ いい加減にしろ、死ねよ : デフォルトの名無しさん (ワッチョイ 911f-Q5xa) [sage] 2019/02/10(日) 16:05:34.34:ZjJO7g3i0 だれかこれ分かる人おらん? : デフォルトの名無しさん (ワッチョイ 0201-3tWi) [sage] 2019/02/10(日) 16:25:54.76:vOpxNkmL0 直接は呼べなくてCOM経由でしか呼べない VBA C# dll 呼び出し とかでググれ : デフォルトの名無しさん (ワッチョイ 868c-RyKv) [sage] 2019/02/10(日) 18:24:50.29:kyKghR0l0 C#わからんから無責任発言するけどC++でdll作りゃ問題ないならそうすれば? : デフォルトの名無しさん (ドコグロ MM09-/S9r) [sage] 2019/02/10(日) 18:46:31.86:96GWWqq3M C++で橋渡しするならC++/CLIでできるね でもそんな面倒なことをするより普通にexe作るかpowershell書くかして別プロセスとして呼べばいいよ データの受け渡しはコマンドライン引数なり標準入出力なりを使えばよい : デフォルトの名無しさん (ワッチョイ 0201-3tWi) [sage] 2019/02/10(日) 19:52:43.32:vOpxNkmL0 なんでより面倒な方法をドヤ顔で書いてるんだよ w C#で書いてちゃんと設定すりゃインテリセンスも効くというのにコマンドラインとかありえねー : デフォルトの名無しさん (アウアウウー Sa05-BKX2) [sage] 2019/02/10(日) 20:43:54.86:fHWqGmK3a わかるけどスマホからサンプルコード書くのはしんどいわ C# ComVisible Excelあたりでググって : デフォルトの名無しさん (ワッチョイ 868c-RyKv) [sage] 2019/02/10(日) 21:28:15.49:kyKghR0l0 自分でC++dll書けるなら呼び出す側はかなり簡便になるように作れるよ なによりワークシートの大量データを配列で丸ごと渡せるからね。 コマンドラインじゃ無理でしょ : デフォルトの名無しさん (ワッチョイ aeda-OF6d) [sage] 2019/02/11(月) 02:36:20.89:QZQ3TitU0 はるか昔に似たようなことやろうとしたが断念して↓で落ち着いた MsgBox "Err." & err.Number & " " & err.Description, vbCritical, "モジュール名" : デフォルトの名無しさん (ワッチョイ 911f-Q5xa) [sage] 2019/02/11(月) 14:06:13.76:2OxsMAwm0 やっぱ直接は無理か。管理者権限とかCOM経由しか無理なら諦めます。 : デフォルトの名無しさん (ワッチョイ 911f-Q5xa) [sage] 2019/02/11(月) 14:07:58.69:2OxsMAwm0 直接は無理そうなんで諦めます。 : デフォルトの名無しさん (JP 0H16-KbRv) [] 2019/02/11(月) 15:17:21.04:PhhkhwtYH CodeModuleプロパティでなんかできそうだけど使ったことないからわかんね : デフォルトの名無しさん (ワッチョイ a969-z8kj) [sage] 2019/02/11(月) 17:58:03.71:fFRcOW+J0 エクセルのシートやセルのオブジェクトにどんなメソッドやプロパティがあるのか見れるところないですか : デフォルトの名無しさん (アウウィフ FF05-DOJB) [] 2019/02/11(月) 18:04:33.43:itY+kGJRF ttp://https://docs.microsoft.com/ja-jp/office/vba/access/concepts/settings/set-references-to-type-libraries ttp://https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/can-t-find-project-or-library : デフォルトの名無しさん (ワッチョイ dd0b-VUEs) [] 2019/02/11(月) 18:43:45.66:fA09NaPq0 のダウンロードした回数多くないか? 有用なツールだと認められた証だろう。作った人は自慢していいよ : デフォルトの名無しさん (ワッチョイ e1b5-drk2) [sage] 2019/02/11(月) 18:49:07.13:TpVFRub80 ん? これ、何のファイル? : デフォルトの名無しさん (ワッチョイ cdca-/S9r) [sage] 2019/02/11(月) 22:38:05.08:9CUrx5/r0 このスレの人ってやっぱりプログラマーが多いんですか? それなりにVBA使えるようになった事務職なんですが、転職を考えています 想像してはいたんですが、VBAで職探しするとプログラマーばっかりですね VBA活かせる仕事ってやっぱりプログラマーになっちゃうんですかね : デフォルトの名無しさん (ドコグロ MMca-/S9r) [sage] 2019/02/11(月) 22:48:43.99:+VAWjoKJM プログラマの定義から自明だろう VBAのスキルだけで仕事するってことはVBAでマクロ作ること自体を仕事にするってことだろ? それは即ちプログラマに他ならない 嫌なら他のスキルを身につけた上でその補助道具としてVBAを使うことを考えなさい : デフォルトの名無しさん (アウアウウー Sa05-BKX2) [sage] 2019/02/11(月) 22:54:21.26:QKPibkACa プログラマはVBAほとんど書きません : デフォルトの名無しさん (ドコグロ MMca-/S9r) [sage] 2019/02/11(月) 23:04:40.76:+VAWjoKJM あとはIT業界でプログラマ以外で入りやすいのはシステムオペレータやコールセンター VBAを使う機会は少ないかもしれないけどVBAを習得できる程度の頭があるならそれなりに責任たある立場(バイトリーダーくらいを想像すればいい)にはなれるんじゃないかな : デフォルトの名無しさん (ワッチョイ 6e2c-V6Wy) [sage] 2019/02/11(月) 23:51:16.39:X8tlYFxV0 Excel エンジニアから、ステップアップしてプログラマーになった人は、たいてい、Ruby on Rails ! まず、Ruby・Sinatra から、web フレームワークを始める YouTube にも、そういう成功した人たちの動画がある : デフォルトの名無しさん (ワッチョイ cdca-/S9r) [sage] 2019/02/11(月) 23:54:44.08:9CUrx5/r0 経理財務畑で10年働いてるので、その補佐としてVBA使ってる現状です VBA楽しいので、そればっかりの仕事はしたくないんです たぶん嫌になっちゃうので。 なのでIT業界に行きたいわけじゃないんです でも、VBAで探すとITばっかりだなーって悩んでるんです : デフォルトの名無しさん (ワッチョイ f901-XNIb) [] 2019/02/12(火) 00:22:18.17:6UhGKpIA0 VBAは習得にかかる時間は他の言語覚えるのと同じくらい? それとも簡単? : デフォルトの名無しさん (ワッチョイ 25ce-0b7p) [sage] 2019/02/12(火) 00:40:28.65:boZzpQWE0 同じ : デフォルトの名無しさん (ドコグロ MMca-/S9r) [sage] 2019/02/12(火) 00:57:29.86:J2uuh0x+M 同じレベルを求めるなら同じ でもVBAは自称「VBAできます(キリッ」のレベルが他言語比で大幅に低いから、 人前で習得したと言っていいレベルに達するまでの時間は他言語よりずっと短い : デフォルトの名無しさん (ワッチョイ f901-KbRv) [] 2019/02/12(火) 01:28:22.73:bkolxWEM0 for i for j for k for l if cells(i,j)=cells(k,l) then m=m+1 cells(m,1)=cells(k,l) end if next next next next できました! : デフォルトの名無しさん (ワッチョイ 827c-/3is) [sage] 2019/02/12(火) 01:54:53.42:w+cVMhLi0 なんかシンメトリーできれい : ◆QZaw55cn4c (ワッチョイ e247-3ywI) [sage] 2019/02/12(火) 04:41:36.02:afakhEje0 VB6 と同じ程度なのでは? : デフォルトの名無しさん (アウアウエー Sa0a-DOJB) [] 2019/02/12(火) 07:32:55.78:SvKCMiwAa エラー処理(例外処理)が緩すぎる やり直し : デフォルトの名無しさん (ブーイモ MMcd-RyKv) [sage] 2019/02/12(火) 08:01:42.96:yCgE5JHqM 仕事を効率化するシステムはある程度自分で作るのが当たり前の時代が来る(かもしれない)から IT業界でなくてもプログラミングは必須になる(かも略 ただしそのツールの主流はVBAじゃないだろうね いろんなツールや他言語も覚えて他人の仕事をどんどん奪ってください。 そうすれば時代の流れを加速することになるのでヒーローになれます。 : デフォルトの名無しさん (ワッチョイ fe7c-SgG7) [] 2019/02/12(火) 11:26:12.35:8lolhehX0 MSがExcelにPython載せるっつってたから 君が卒業して社会に出る頃にはVBAは消えてるかも知れない : デフォルトの名無しさん (ブーイモ MMcd-/3is) [sage] 2019/02/12(火) 13:55:06.88:w218beJOM まず型はいらない。 コマンドや関数はフローチャートの図形みたいな視覚化とパラメータで作成。 論理エラー以外のエラーは出ない仕組み。 やろうとすればいくらでもできるんじゃね? : デフォルトの名無しさん (ワッチョイ a98e-Gewk) [sage] 2019/02/12(火) 13:56:32.19:vLhvVMgO0 馬鹿は嘘情報を検証もなく信じる : デフォルトの名無しさん (ブーイモ MMcd-RyKv) [sage] 2019/02/12(火) 14:29:27.10:yCgE5JHqM そんな軟弱な それじゃ小学生向けのプログラミング教室と変わらないじゃん : デフォルトの名無しさん (ブーイモ MMcd-uR/r) [sage] 2019/02/12(火) 14:34:04.56:yiYRNC81M まんまRPAじゃね : デフォルトの名無しさん (ワッチョイ aeda-OF6d) [sage] 2019/02/12(火) 14:40:47.72:CHFilx2O0 ttp://https://www.publickey1.jp/blog/17/excelpython.html : デフォルトの名無しさん (ブーイモ MM22-/3is) [sage] 2019/02/12(火) 15:57:24.73:gVOhdcQpM 一般の個人がやるならこのくらいが普通。 HTML手書きの敷居を下げたホームページビルダーだってそうだろ。 プログラムがCUIっていうのに違和感を持つべきだと思う。 : デフォルトの名無しさん (ブーイモ MM22-/3is) [sage] 2019/02/12(火) 16:00:06.68:gVOhdcQpM そそ、それをより深くしてさらに汎用化させた感じ : デフォルトの名無しさん (ワッチョイ fe02-tgDq) [sage] 2019/02/12(火) 18:57:41.03:WG+Lzv660 やろうとすればというかもうとっくに先人たちが取り組んで諦めた分野だよ 学生の頃に配線型のプログラミング言語を使ったことあるけど難しすぎて習得を諦めた : デフォルトの名無しさん (ワッチョイ 822f-Y3YF) [sage] 2019/02/12(火) 19:46:07.38:u96ReIy/0 先人たちの時代には難しかっただろう しかし今のPC環境ならグラフィカルなプログラミングも実用化できるんじゃね : デフォルトの名無しさん (ワッチョイ a2a2-/WZR) [sage] 2019/02/12(火) 19:49:06.70:gxc4B4g80 さんもう見てないかな 自分で使ってみたけどなんか違う・・・と思って考えてみたら 問題のシャッフル出題(各問1回だけシャッフルして出題)が足りないという結論に バグもつぶしたし、まだ見てるならレスください : デフォルトの名無しさん (ササクッテロル Spd1-P0T6) [] 2019/02/12(火) 21:06:37.12:N98Fn342p すみません、こういうのは出来ますか。 How are you? I’m looking forward to see you. を How are you? I’m looking forward to see you. になおす。 要は、中途半端な改行がある文を、一行にまとめる。 : デフォルトの名無しさん (ブーイモ MMcd-RyKv) [sage] 2019/02/12(火) 21:11:53.35:yCgE5JHqM みんなそんなに全力でテキストベースのプログラミングを避けたいのかねえ? 使いこなせば強力な武器になるとは思わんのか? : デフォルトの名無しさん (ワッチョイ 822f-HdPi) [sage] 2019/02/12(火) 21:30:27.20:u96ReIy/0 改行をなくすだけなら比較的簡単にできる 適切な位置で改行しろってなら、適切な位置を事前に完全に定義すればまぁできる おれは別に避けたいとは思ってないしその必要もないけど テキスト以外のプログラミングには従来のプログラミング言語にない可能性だってあるしな : デフォルトの名無しさん (ワッチョイ 827c-1PgY) [] 2019/02/12(火) 21:39:40.48:w+cVMhLi0 DOSはDOSで使いやすかったと思う。 Windows出たときいらねーべって思ってたけど今思うと3.1はやっぱりいらない。 : デフォルトの名無しさん (ササクッテロル Spd1-P0T6) [] 2019/02/12(火) 21:45:44.99:N98Fn342p 76です。 すみません。それでは、 .で改行できるようにお願い致します。 : デフォルトの名無しさん (ワッチョイ d9e9-OF6d) [sage] 2019/02/12(火) 21:52:09.03:qNrXOr6p0 一旦改行を全て削除して、そのあとでピリオド、クエスチョンマーク、エクスクラメーションマークで改行すればいいんでは。 : デフォルトの名無しさん (ササクッテロル Spd1-P0T6) [] 2019/02/12(火) 21:55:12.47:N98Fn342p 改行を削除できますか。 仕事で、大量の英文を整理したいので困ってます。 : デフォルトの名無しさん (アウアウウー Sa05-BKX2) [sage] 2019/02/12(火) 22:00:43.06:1aNudvIBa 線つなぐやつはサブルーチンが正体不明のアイコンになるからものすごくわかりにくい 逆にわかりやすいプログラムを描くには高度なアイコンデザインセンスが必要ということだ そんなの天才にしか使いこなせない : デフォルトの名無しさん (ワッチョイ d9e9-OF6d) [sage] 2019/02/12(火) 22:17:01.28:qNrXOr6p0 もうVBA関係なくなっちゃうけど、普通のエディタ使って置換機能を使えばいいだけでは。 : デフォルトの名無しさん (アウアウクー MM91-q7hS) [] 2019/02/12(火) 22:41:31.90:CcMjC8kpM セル内の文字列を対象にしてると思うからエディタでは無理では?分からないから適当に言うんだけど。 : デフォルトの名無しさん (ワッチョイ 822f-HdPi) [sage] 2019/02/12(火) 23:08:07.22:u96ReIy/0 質問はうけつけん Sub RemoveCRLF() Dim target As Range Dim str As String Set target = Sheet1.Range("A1") str = target.Value str = Replace(str, vbCr, "") str = Replace(str, vbLf, "") str = Replace(str, ".", "." & vbNewLine) target.Value = str End Sub : デフォルトの名無しさん (ワッチョイ f901-YOpM) [] 2019/02/12(火) 23:38:26.31:ja5MNGvN0 あまりいけてないけど、ぼくも考えた Dim str As String str = Range("A1") Dim re As Object Set re = CreateObject("VBScript.RegExp") re.Global = True re.Pattern = "[\r\n]" str = re.Replace(str, "") re.Pattern = " +" str = re.Replace(str, " ") re.Pattern = "([?.]) *" str = re.Replace(str, "$1" & vbLf) Range("A2") = str : デフォルトの名無しさん (アウアウクー MM91-q7hS) [] 2019/02/12(火) 23:44:44.19:CcMjC8kpM 最新版は5ですよね?使ってみましたがオブジェクトエラーが起きてどこで停止しているかみてみると、ソート処理時に停止する。 そこで4_2をベースにこちらでカスタマイズして、ボタン1つでセル内の文字列をシャッフルするコードをネットから拾ってきました。 ついでに縦横の切り替えもボタンで実現してます。 やりていことこ実現できているので満足です : デフォルトの名無しさん (ワッチョイ a2a2-/WZR) [sage] 2019/02/12(火) 23:58:53.49:gxc4B4g80 そうでしたか、なんかすみません じゃ本当に終わります。 : デフォルトの名無しさん (ワッチョイ 6e2c-V6Wy) [sage] 2019/02/13(水) 02:27:50.55:NEpE3zFw0 Python などの形態素解析で、文末でも判定すれば? : デフォルトの名無しさん (ワッチョイ e101-P0T6) [] 2019/02/13(水) 06:35:13.37:9485a3fT0 例えば?メモ帳とか? 改行を無くす置換はありますか? : デフォルトの名無しさん (ドコグロ MM09-CTVZ) [sage] 2019/02/13(水) 07:12:30.92:i20vW39tM 改行置換ならVBAも要らん ttp://https://excelkamiwaza.com/excel_kaigyou_tikan.html : デフォルトの名無しさん (ワッチョイ f901-P0T6) [] 2019/02/13(水) 07:30:01.13:AhLCWHg20 ありがとうございます。一つのセルに最大どんだけテキスト貼れるかですね : デフォルトの名無しさん (ワッチョイ f901-P0T6) [] 2019/02/13(水) 07:36:07.18:QsqoJnTp0 cntl+jか。知らなかった。ほかのワードとかでも使えるかな : デフォルトの名無しさん (ワッチョイ f901-XNIb) [sage] 2019/02/13(水) 07:44:47.38:zGo41KJe0 セルを指定する時とか”A1”とかちまちま書くのが普通? めんどくさいんだけどそんなもの? : デフォルトの名無しさん (JP 0H16-KbRv) [] 2019/02/13(水) 08:07:53.15:kNKWDOP4H ヘッダの話なら1個ずつ書いてくしかない : デフォルトの名無しさん (ワッチョイ 25ce-0b7p) [sage] 2019/02/13(水) 08:46:40.27:LdPPLa0i0 状況とやりたいことによる 範囲指定する書き方も出来るし、変数で楽できる場合もある : デフォルトの名無しさん (ワッチョイ 25ce-0b7p) [sage] 2019/02/13(水) 08:48:18.23:LdPPLa0i0 Excelと関係ない英文を整形したいだけならテキストエディタを使った方が早いぞ せめてWordにしとけ : デフォルトの名無しさん (ワッチョイ 1df9-n/rh) [sage] 2019/02/13(水) 09:17:10.81:s1ZD6WV/0 「何の条件」で「何を」「どのようにしたいか」の中で「何の条件で」が出てないな 「何を」「どのようにしたいか」も一部の条件しか出てない気がする 連想ゲームじゃないんだから質問はちゃんとかけよ : デフォルトの名無しさん (ワッチョイ 1df9-n/rh) [sage] 2019/02/13(水) 10:05:00.38:s1ZD6WV/0 この質問は Excelの枠に配置で、折り返して全体を表示するに 以下の改行のない文を貼り付けた時に How are you? I’m looking forward to see you. セルの幅に合う位置で改行されるのを思いの位置で改行したい ってことだろ、思いの位置が明文化されないとな 例えば英文であるかわからんが「...」みたいな文とか「!!」みたいなとかもありそうだしな : デフォルトの名無しさん (JP 0H16-KbRv) [] 2019/02/13(水) 10:59:06.69:kNKWDOP4H あと以下のようにしておくと面倒でなくなるよ cns_COL_ID = “A” Range(cns_COL_ID & 1) = “ID” : デフォルトの名無しさん (ワッチョイ 1df9-n/rh) [sage] 2019/02/13(水) 11:08:47.69:s1ZD6WV/0 貼り付けられたイベントで処理するのも普通だけどな 位置は分かるから、そのセル・レンジを処理する : デフォルトの名無しさん (ワッチョイ 1df9-n/rh) [sage] 2019/02/13(水) 11:41:27.51:s1ZD6WV/0 Private Sub Worksheet_Change(ByVal Target As Range) まあ、Changeイベントで If Application.CutCopyMode = xlCopy Then End if コピーされた場合「Range」に対して処理を書くんだな : デフォルトの名無しさん (ワッチョイ e188-drk2) [sage] 2019/02/13(水) 14:06:51.14:cLVWJ/NN0 セル上でドラッグドロップしたら、それでプログラムが動くようなことってできますか たとえば、縦1列に20個のデータが入っていて、その1つを別の場所に ドラッグドロップすると順番が入れ替わるようにするとか : デフォルトの名無しさん (JP 0H16-KbRv) [] 2019/02/13(水) 14:22:50.50:kNKWDOP4H こうかな Sub Worksheet_change(ByVal Target As Range) if target.column = 貼り付けた列番号 then 配列に突っ込む 配列をソートする 配列をセルに書き込む End Sub : デフォルトの名無しさん (ワッチョイ e188-drk2) [sage] 2019/02/13(水) 14:36:01.74:cLVWJ/NN0 出来るんですね。 ありがとう : デフォルトの名無しさん (JP 0H16-KbRv) [] 2019/02/13(水) 14:45:16.60:kNKWDOP4H あとApplication.Enableevents = Falseしないと配列をセルに書く時にWorksheet_changeが起きて無限ループするから気を付けて : デフォルトの名無しさん (ワッチョイ 1df9-n/rh) [sage] 2019/02/13(水) 14:45:50.22:s1ZD6WV/0 それって、切取りと切り取ったセルの挿入のことじゃない : デフォルトの名無しさん (ワッチョイ c5e6-yKLa) [sage] 2019/02/13(水) 18:05:52.67:YjEmAg3Q0 シフト押しながらドラッグするだけやろ。 テーブル定義ならシフトすら必要ない。 既存の機能を自力で作ってどうするんや : デフォルトの名無しさん (ササクッテロル Spd1-P0T6) [] 2019/02/13(水) 19:29:04.53:yofO24jUp 置換前にcntl+jと入れると、置換ボタンが押せない。 : デフォルトの名無しさん (ワッチョイ d9e9-OF6d) [sage] 2019/02/13(水) 19:30:45.49:JQT8xzoY0 検索で正規表現を使えないというのもあれだな。 : デフォルトの名無しさん (アメ MMcd-oukl) [sage] 2019/02/13(水) 20:11:24.50:1az0o1MYM ワードラップの問題だろ改行関係ない : デフォルトの名無しさん (ワッチョイ f901-XNIb) [sage] 2019/02/13(水) 20:17:10.65:zGo41KJe0 >>97>>102 ありがとう これはなぜ楽になるの? : デフォルトの名無しさん (ワッチョイ f901-KbRv) [] 2019/02/13(水) 20:39:49.89:9c/UwGiq0 楽というかマナー 意味の分かる定数で定義することで他人がプログラムを追わなくても理解できるようになる : デフォルトの名無しさん (アウアウウー Sa05-BKX2) [sage] 2019/02/13(水) 20:49:54.38:9vYYaAAUa プロパティ使ったほうが定数よりずっとわかりやすいよ : デフォルトの名無しさん (ワッチョイ f901-qEuu) [sage] 2019/02/13(水) 20:50:53.76:Hdk7qA5y0 決まりきったセル(範囲)参照する時は名前定義なりテーブル化した方がいいと思うけどな : デフォルトの名無しさん (オイコラミネオ MM16-duX/) [] 2019/02/13(水) 20:54:23.96:vtryBqN5M vba初心者です。 マウスイベントやスリープなどのapi を使って 会社で使うツールを半自動化してますが、 こういうアナログな方法ではなく、 マウスでクリックしなくてもツールがアクティブになったり、 スリープではなく画面が遷移したのを読み取って次の命令を実行してくれるような ものを作るにはどういう学問を学べばいいですか? : デフォルトの名無しさん (ワッチョイ f901-XNIb) [sage] 2019/02/13(水) 20:57:56.29:zGo41KJe0 あり : デフォルトの名無しさん (ワッチョイ a969-z8kj) [sage] 2019/02/13(水) 21:14:49.27:0iV7VQWH0 ウインドウズのイベントをフックする : デフォルトの名無しさん (ワッチョイ f901-qEuu) [sage] 2019/02/13(水) 21:25:30.47:Hdk7qA5y0 UI Automation ただ色々アレで結局Win32API併用することになることが多いけど : デフォルトの名無しさん (ワッチョイ 911f-Q5xa) [sage] 2019/02/13(水) 23:29:11.25:vsTJ7JQU0 自作したdllファイルに文字列を投げて配列を受け取りたい場合 Public Declare Function 〇〇 Lib "△△" Alias "□□" (string path)As string() 〇 自分で付ける関数名?? △ dllファイルの場所フルパス?? □ dllファイル内の何か? それぞれ何を指すんですか? ちなみにこれでも似たような事ができるんですか? Dim tarApp As Variant Set tarApp = CreateObject(“◎◎“) tarApp.Documents.Open FileName:="〇〇" Set wdApp = Nothing : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/14(木) 10:46:56.68:oxBa5+ju0 まあ、気楽に回答しておく >〇 自分で付ける関数名?? その通り >△ dllファイルの場所フルパス?? Pathが通ってればフルパスでなくてもよい >□ dllファイル内の何か? 別名宣言できる・・・まあ、調べろ >ちなみにこれでも似たような事ができるんですか? >Dim tarApp As Variant >Set tarApp = CreateObject(“◎◎“) > tarApp.Documents.Open FileName:="〇〇" >Set wdApp = Nothing 書いている意味が理解できてないだろう、Office系のソフトはちゃんとしたルールで作られてるが こんなこと気にする前に、有効なDllを作ってみろよ 尚、理解できてないことが丸わかり : デフォルトの名無しさん (ドコグロ MM1f-l5h6) [sage] 2019/02/14(木) 12:07:22.70:xvzsmsEPM (´;ω;`)イベントが起こらなくなりました : デフォルトの名無しさん (ワッチョイ e7e6-r8GT) [sage] 2019/02/14(木) 12:08:59.63:FmdtC3Uo0 エクセル再起動しろ : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/14(木) 12:20:00.82:oxBa5+ju0 まあ、間違ってるんだろそれだけ ソースを出さなきゃ何もないよ イベント鳥杉ってよくあるからな 有効な手段は、護摩をたけ、できるだけ激しく火事には気を付けろ : デフォルトの名無しさん (ワッチョイ 874f-5sVJ) [sage] 2019/02/14(木) 13:20:00.69:chn4JYyT0 たとえば、A1からC50までデータがあってA列をキーにソートしたいのですが、 途中たとえば、10行、15行、20−25行は抜かしたいのです。 これらにはコメントや他のものが入ってるので でもそれらを抜かして全体でソートしたいのですが、Unionで繋いでやったら複数のレンジは出来ないみたいな エラーを返されました 何かいい方法はないでしょうか : デフォルトの名無しさん (ワッチョイ 874f-5sVJ) [sage] 2019/02/14(木) 13:50:43.73:chn4JYyT0 例えば、画面表示は止めて、メモリ上で行を移動させてソートする行をまとめてからソートして、 また行をもとに移動させてから、画面上に結果を表示とか、出来ると可能性があると思うのですが : デフォルトの名無しさん (ワッチョイ ff6f-dKms) [] 2019/02/14(木) 14:23:28.89:sSBdRoDO0 if i = 対象行 then 行入替え end if とかでいいんじゃね? : デフォルトの名無しさん (オイコラミネオ MMdb-Fd8k) [sage] 2019/02/14(木) 16:52:27.07:PSNlkVOrM 行を非表示にしたら対象から外してくれんかな…(試してない) : デフォルトの名無しさん (ブーイモ MM7f-O/Qv) [sage] 2019/02/14(木) 17:20:39.55:L4IMpAFUM 〇 自分で任意に付ける関数名 □ dllがエクスポートしている関数名 : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/14(木) 17:59:11.87:bFGkVmlp0 dllってよくわかんないだけどvbsのexecuteglobalみたいな感じ? : デフォルトの名無しさん (ワッチョイ 874f-5sVJ) [sage] 2019/02/14(木) 19:55:09.02:chn4JYyT0 マジかあ。 やってみた。 出来てる なんだよ、プログラム作っっちゃった。 ソートしないところを一旦別に移して圧縮してソートしてから 下に戻すってやつ なんだよ、 この2時間返して w : デフォルトの名無しさん (アメ MM6b-+q6E) [] 2019/02/14(木) 22:52:59.46:nNkHGtvOM まあ、普通にデータはテーブルでもてば良いだけだろ 整形は別シートででーたをさんしょう : デフォルトの名無しさん (アメ MM6b-+q6E) [sage] 2019/02/15(金) 00:17:44.61:lL6vjf9tM 外部にライブラリーなどを持たすんだから Include の方が近いだろ : デフォルトの名無しさん (ワッチョイ dfeb-A2tD) [] 2019/02/15(金) 00:49:30.00:6QKgXGI40 よろしくお願いいたします。 VBAで、半角カナ文字列を与えると、その文字列の中にある、 ァィゥェォャュョッ などの小さい字をアイウエオヤユヨツなどの大きい字(半角カナ)に変換して返す functionを作りたいのですが、どう書いていいのかわかりません。 ひとつずつ、ァをアに変換、ィをイに変換、のように書くしかありませんか? まとめて書く方法ってあるのでしょうか? : デフォルトの名無しさん (ワッチョイ 7f2c-Ioh3) [sage] 2019/02/15(金) 01:15:28.74:BkaZ3+610 Ruby のNKF とか、文字列.tr とか、正規表現とか : デフォルトの名無しさん (ワッチョイ 5f7c-blJ9) [sage] 2019/02/15(金) 01:18:13.72:vhn0rFgQ0 60項目7万件のjsonデータ読んで保存した。 開いたらモジュールとフォームが破損って何なんだよ。うう吐きそうだ。 10Gじゃメモリたりなかったのか?いや、それならそうメッセージがでるはず。 まさかこんなんでコード飛ぶとは思わなかったからバックアップは取ってない。 10分おきの自動バックアップのデータはあったけどデータ取るのに2日かかったからとっくに消えてる。 もう作る気おきない。 参った。 : デフォルトの名無しさん (ワッチョイ 5f7c-blJ9) [sage] 2019/02/15(金) 01:20:07.21:vhn0rFgQ0 文字コードを差分だけ加算すればいい。 : デフォルトの名無しさん (アウアウエー Sa1f-ngFe) [sage] 2019/02/15(金) 01:21:08.10:EWf/hEPba ざまあ そういうのはCSVを介するのが定石だろう : デフォルトの名無しさん (ワッチョイ 872d-7G9U) [sage] 2019/02/15(金) 01:23:24.10:NXuVhChr0 dictionaryオブジェクトで連想配列作れば? Dim myDic As Object Set myDic = CreateObject("Scripting.Dictionary") myDic.Add "ァ", "ア" myDic.Add "ィ", "イ" myDic.Add "ゥ", "ウ" Dim str As String str = myDic.Item("ァ") #<--ここに参照したい文字を渡す MsgBox str, vbInformation ttp://https://www.sejuku.net/blog/29736 動くかわからんけどお試しあれ。 : デフォルトの名無しさん (ワッチョイ e7ce-1ffV) [sage] 2019/02/15(金) 01:37:27.77:6R3QhjK00 あんまり綺麗じゃないけど Function kanacaps(s1) As String For i = 1 To Len(s1) c = Mid(s1, i, 1) If "ァ" <= c And c <= "ッ" Then Select Case c Case "ァ" To "ォ" s = 10 Case "ャ" To "ョ" s = 40 Case Else s = 19 End Select Mid(s1, i) = Ch r(As c(c) + s) End If Next kanacaps = s1 End Function : デフォルトの名無しさん (ワッチョイ e7ce-1ffV) [sage] 2019/02/15(金) 01:38:16.76:6R3QhjK00 一部の文字列関数が、なぜか5ちゃんねる全体のNGワードになってるんで、わざとスペースを入れてある : 136 (ワッチョイ 7f2c-Ioh3) [sage] 2019/02/15(金) 01:38:19.40:BkaZ3+610 Ruby では、 str = "ァィゥェォャュョッあ" puts str.tr( "ァィゥェォャュョッ", "アイウエオヤユヨツ" ) #=> アイウエオヤユヨツあ : デフォルトの名無しさん (ワッチョイ e7ce-1ffV) [sage] 2019/02/15(金) 01:43:51.10:6R3QhjK00 もっとシンプルなのができた Function kanacaps(s1) As String t = "アイウエオヤユヨツ" For i = 1 To Len(s1) c = Mid(s1, i, 1) If "ァ" <= c And c <= "ッ" Then Mid(s1, i) = Mid(t, A sc(c) - 166, 1) End If Next kanacaps = s1 End Function : デフォルトの名無しさん (ワッチョイ e7ce-1ffV) [sage] 2019/02/15(金) 01:46:51.97:6R3QhjK00 しつこいけど、これで最後 Function kanacaps(s1) As String t = Array("ア", "イ", "ウ", "エ", "オ", "ヤ", "ユ", "ヨ", "ツ") For i = 1 To Len(s1) c = Mid(s1, i, 1) If "ァ" <= c And c <= "ッ" Then Mid(s1, i) = t(As c(c) - 167) Next kanacaps = s1 End Function : デフォルトの名無しさん (ワッチョイ e7ce-1ffV) [sage] 2019/02/15(金) 01:53:45.99:6R3QhjK00 最後と言いながらもう一度 これってまだまだコンパクトにできるパターンだな Function kanacaps(s1) As String t = Array("ア", "イ", "ウ", "エ", "オ", "ヤ", "ユ", "ヨ", "ツ") For i = 1 To Len(s1) c = Asc(Mid(s1, i)) If 166 < c And c < 176 Then Mid(s1, i) = t(c - 167) Next kanacaps = s1 End Function : デフォルトの名無しさん (ワッチョイ e7ce-1ffV) [sage] 2019/02/15(金) 02:00:19.18:6R3QhjK00 1回しか使わない変数を消した これ以上の短縮は無理かな? Function kanacaps(s1) As String For i = 1 To Len(s1) c = Asc(Mid(s1, i)) - 167 If 0 <= c And c < 9 Then Mid(s1, i) = Array("ア", "イ", "ウ", "エ", "オ", "ヤ", "ユ", "ヨ", "ツ")(c) Next kanacaps = s1 End Function : デフォルトの名無しさん (アメ MM6b-+q6E) [sage] 2019/02/15(金) 09:21:30.82:U9ClSHCYM 横レスだけど 他の言語に比べかったるいけどおいておいて 変換に使う文字列または配列はfunctionの外 変数はアドレス渡し function内で文字列を書き換え 変更が有った場合 true なかった場合false 使い勝手と動作速度を優先する とスマホで書いてみる : デフォルトの名無しさん (ブーイモ MMcf-O/Qv) [sage] 2019/02/15(金) 09:40:41.96:GIzZTHxJM たしかにs1を書き換えつつまたそれを返すというのは無駄だ。 ByValで受けて書き換えた結果を返すかByRefのままでSubにするかだと思う。 Booleanで返すのは今時の趣味には合わないんじゃないかな。 : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/15(金) 09:58:15.95:FxoJIoi60 セルを書き換えるべきか書き換えないかの判断をする 全てのセルの書き換えは時間もかかるし、空白のセルもある 必要ないデータは書き換えないでいいようにする if kanacaps(s1) then cells(i,j) = s1 のように : デフォルトの名無しさん (ブーイモ MMcf-O/Qv) [sage] 2019/02/15(金) 11:36:22.43:GIzZTHxJM s1自体は As Stringだろ 元の質問もワークシート関係ない話のように見受けられる : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/15(金) 11:44:10.23:FxoJIoi60 だったら、このスレ関係ないな本当にそう思うのか? 自分の主張じゃなく要求者の状況を読まなければ意味ない 150の書き方でならシート全てを変換するfunctionも簡単にできるけど お題を読めないのは厳しいな : デフォルトの名無しさん (ワッチョイ e7ce-1ffV) [sage] 2019/02/15(金) 11:49:05.00:6R3QhjK00 データ量と出現頻度と、呼び出し側でのデータの持ち方がわからない限り、最適解は出せないと思う 用途はなんだろう?半角カナが通るのにカナ小文字が使えないシステムなんて、大昔のオンラインシステムぐらいしか思い付かんけど : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/15(金) 11:56:15.89:FxoJIoi60 今更聞いてる処がどうなの? こんなのどっちでも簡単なのに、私は書かないけどなポリシーです : デフォルトの名無しさん (ブーイモ MMcf-O/Qv) [sage] 2019/02/15(金) 11:59:50.72:GIzZTHxJM データソースがRangeであるか否かに関わらずs1は As String相当 だろう。 件の関数が何を返すべきか(もしくはSubにすべきか)という話とは関連が薄い。 : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/15(金) 12:04:24.39:FxoJIoi60 別にfunctionの使い方を考えないならどうでもいいじゃない ただ誰も使わんだろ、それは言い過ぎか使うやつはいるな : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/15(金) 12:06:23.85:FxoJIoi60 基本的なことを理解せず、ソース書くやつって恥ずかしくないのかな? : デフォルトの名無しさん (ブーイモ MMcf-O/Qv) [sage] 2019/02/15(金) 12:09:16.16:GIzZTHxJM 不思議な意見を言う奴だな? : デフォルトの名無しさん (アメ MM6b-+q6E) [sage] 2019/02/15(金) 12:12:48.44:U9ClSHCYM ここは、もうやめよう : デフォルトの名無しさん (ブーイモ MM6b-OxnY) [sage] 2019/02/15(金) 12:42:06.25:Aa3kOoYYM 俺は理解したいけど使うの自分ならまぁ動けば良いや派です 話題変わるけど今はselenium使えないの? firefox操作したいけど色々なサイトのコード試しても動かんのだけど最新のseleniumVBAでfirefox操作するVBA使ってる人居たらfirefox起動からログイン処理するコード貼ってほしい : デフォルトの名無しさん (ドコグロ MM3b-3Kdw) [sage] 2019/02/15(金) 12:51:15.55:Qph8FA2WM > 基本的なことを理解せず、ソース書くやつって恥ずかしくないのかな? 確かには恥ずかしいなw : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/15(金) 12:54:55.89:FxoJIoi60 ふ〜ん、でどのように?(笑) : デフォルトの名無しさん (JP 0H4f-mnSR) [] 2019/02/15(金) 13:05:41.84:QYjRxS22H 配列を使わざるを得ないなら二次元配列に変更前と変更後を並べて突っ込む : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/15(金) 13:08:15.40:FxoJIoi60 まさか、148で変更をBoolean返すようにしたのを前提に150を書いたけど 何も読まずに書いてる? : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/15(金) 13:13:10.46:FxoJIoi60 もうやばいけど、バカって好きだな : デフォルトの名無しさん (アメ MM6b-+q6E) [sage] 2019/02/15(金) 13:19:37.16:U9ClSHCYM で、何か意見は? : デフォルトの名無しさん (ブーイモ MMcf-O/Qv) [sage] 2019/02/15(金) 14:34:08.07:GIzZTHxJM 結局そうなるよね。 一括で貼り付ければ楽なのに、わざわざ If でまだらに個別セットなんて却って遅くなる。 : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/15(金) 14:59:45.37:FxoJIoi60 まあ、しょうがない罠 分かんないんだもの : デフォルトの名無しさん (ドコグロ MM3b-3Kdw) [sage] 2019/02/15(金) 15:22:25.20:Qph8FA2WM > 基本的なことを理解せず、ソース書くやつって恥ずかしくないのかな? とか言いつつ質問者の意向もわからんのにコード書いてドヤるとか w : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/15(金) 15:34:51.44:FxoJIoi60 じゃあ、お前ヒントも書かずにわかるのか? ってか、引きこもりの文盲か? : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/15(金) 15:36:42.23:FxoJIoi60 あっ、すまん、ヒントを書いてもわからないんだよな : デフォルトの名無しさん (ワッチョイ 27f9-xnHp) [sage] 2019/02/15(金) 15:43:07.43:FxoJIoi60 どんだけ、アホで生きてるんjンだよ 関数の貼り付けとセルへの値の書き込すらわからんかな : デフォルトの名無しさん (ドコグロ MM3b-3Kdw) [sage] 2019/02/15(金) 17:36:05.74:Qph8FA2WM だから > 基本的なことを理解せず、ソース書くやつって恥ずかしくないのかな? とかが不思議ちゃんて言われてるんだよ セルへの書き込み程度でドヤるような奴だからしょうがないだろうけど w : デフォルトの名無しさん (アメ MM6b-+q6E) [sage] 2019/02/15(金) 18:35:03.47:U9ClSHCYM うふ : デフォルトの名無しさん (ワッチョイ c701-OvAq) [] 2019/02/15(金) 19:18:49.62:FIDflx8L0 Range("A1")="名前" Range("A2")="住所" Range("A3")="性別" Range("A4")="郵便番号" みたいな複数にわかる処理を Range("A1:A4")="名前、住所、性別、郵便番号"みたいな感じ(もちろんこれではダメ)で 一行(一回の処理)でまとめて設定できるような方法ってありますか? : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/15(金) 19:20:38.46:kIiggQTh0 ある : デフォルトの名無しさん (ブーイモ MMcf-O/Qv) [sage] 2019/02/15(金) 19:21:12.65:GIzZTHxJM Sub kanacaps(s1 As String) とした場合、 対象配列Aの各要素A(i,j)に対して kanacaps(A(i, j)) をループで回すだけ。 シートに書き出したければ単にAを貼り付ける。 このとき書き換えがあったかどうかを判定する必要はない。 Function なら Function kanacaps( ByVal s As String) As String で A(i, j) = kanacaps(A(i, j)) これも書き換えがあったかどうかを判定する必要はない。 普通は後者を選ぶだろう。 : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/15(金) 19:28:49.74:kIiggQTh0 これダメなやつ 最も負荷の掛かるセルへのアクセスは最小限にするべき コードが短ければいいってもんじゃない : デフォルトの名無しさん (ブーイモ MMcf-O/Qv) [sage] 2019/02/15(金) 19:37:44.26:GIzZTHxJM なんだよ セルの個数の問題なのか貼り付け回数の問題なのかはっきりしろ : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/15(金) 20:01:27.87:kIiggQTh0 自分で処理時間計ってみれば? : デフォルトの名無しさん (ワッチョイ 5fea-/KMh) [sage] 2019/02/15(金) 20:18:49.96:V814XEHD0 Array : デフォルトの名無しさん (アメ MM6b-+q6E) [] 2019/02/15(金) 22:25:19.73:f25ghBxYM まあ、例えばひづ : デフォルトの名無しさん (アメ MM6b-+q6E) [sage] 2019/02/15(金) 22:31:54.84:f25ghBxYM スマホは書いてる途中で書き込んじゃう癖が有って申し訳ない 例えば日付を月日で表しているセルを文字列で取得すると月日の文字が取得できる その文字をそのセルに書き込むと数値としての月日じゃあなくなるよな 不用意に変換しないことも大事なんだがな : デフォルトの名無しさん (アメ MM6b-+q6E) [sage] 2019/02/15(金) 23:12:49.57:f25ghBxYM 気になってshift jis の文字コードを確認してみた If 166 < c And c < 176 Then これは半角小文字だよ お題は全角カタカナ小文字だろっと : デフォルトの名無しさん (ワッチョイ a7da-cT+3) [sage] 2019/02/15(金) 23:38:50.38:e71gRKct0 凄いよな。 何でこうも、どんな用途に使うのかわからないような処理ばっか出てくるんだか。 そのうち、VLOOKUP(縦検索)でもHLOOKUP(横検索)でもない、 斜め検索のJLOOKUP作れとか言い出しそうだな。 : デフォルトの名無しさん (ワッチョイ 5fa3-0XvR) [sage] 2019/02/16(土) 00:29:38.87:VwWEnU/S0 データ処理の関数がわかんなくてお前らに横投げしてるからだろjk : デフォルトの名無しさん (アメ MM6b-+q6E) [sage] 2019/02/16(土) 01:02:24.60:Q7QEPoKZM まあ何だな 全角カタカナの文字列に半角突っ込む奴の指示は聞かないけどな : デフォルトの名無しさん (スフッ Sd7f-1ffV) [sage] 2019/02/16(土) 01:38:49.39:tkdqnLOdd 最初の質問はだぞ 処理したいのは半角カナ、作りたいのはFunction、関数の返す値は修正後の文字列と仕様が明記されてるのに、どうしてBooleanだのByRefだのが出てくるんだよ おまけに全角とか言い出すやつまで出てくるし : デフォルトの名無しさん (アメ MM6b-+q6E) [sage] 2019/02/16(土) 02:12:02.80:Q7QEPoKZM ァィゥェォャュョッ 全角小文字 ァィゥェォ 半角小文字 書いてるのが全角だったからな : デフォルトの名無しさん (アメ MM6b-+q6E) [sage] 2019/02/16(土) 02:22:26.92:Q7QEPoKZM =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE (A1,"ァ","ア"),"ィ","イ"),"ゥ","ウ"),"ェ","エ"),"ォ","オ"),"ャ","ヤ") ,"ュ","ユ"),"ョ","ヨ"),"ッ","ツ") : デフォルトの名無しさん (ブーイモ MM6b-KyI1) [] 2019/02/16(土) 05:24:29.40:evls1zM4M ワラ : デフォルトの名無しさん (アメ MM6b-+q6E) [sage] 2019/02/16(土) 05:32:17.75:Q7QEPoKZM 素人が素人に頼むとなそうなるわな (笑) : デフォルトの名無しさん (ワッチョイ bf8c-O/Qv) [sage] 2019/02/16(土) 07:48:58.08:GEWA9gU60 方向が変わったのはがきっかけだよね : デフォルトの名無しさん (ワッチョイ 5f01-3Kdw) [sage] 2019/02/16(土) 07:53:50.02:q1DAaOKG0 そこは最初から違和感あったわ > VBAで、半角カナ文字列を与えると って書いてて > ァィゥェォャュョッ って全角で書いてるからネタだと思って放置してたけどァィゥェォッュョみたいな文字ってスマホだと入力できないのな (いや、できるかも知れんが俺にはわからんかったのでこれはコピペで入力した) まあそれならそうと書いて欲しい この手の変換はそれなりに需要があるみたいで カタカナ 小さい文字 変換 vba とかでググるとそれなりにヒットする とりあえずは ttp://https://www.relief.jp/docs/002223.html とかを参考にすればいいと思う : デフォルトの名無しさん (ワッチョイ e7ce-1ffV) [sage] 2019/02/16(土) 10:00:10.02:uFHexw8O0 スマホで半角カナ小文字の入力は、俺のXperiaの場合だと「la」と入力すると全角小文字の「ぁ」になって、変換を押すと候補に半角「ァ」が出てくる : デフォルトの名無しさん (ワッチョイ e7ce-1ffV) [sage] 2019/02/16(土) 10:07:20.68:uFHexw8O0 フリック入力ならキーパッドの「ま」の下の「小」をタップすると小文字になって、候補に半角も自動的に出てくる : デフォルトの名無しさん (ワッチョイ 0711-l0e6) [sage] 2019/02/16(土) 13:35:38.12:V3lev6Wl0 1) Range("A1:A4") = WorksheetFunction.Transpose(Split("名前、住所、性別、郵便番号", "、")) 2) Range("A1:A4") = WorksheetFunction.Transpose(Array("名前", "住所", "性別", "郵便番号")) 3) Range("A1:A4") = [{"名前";"住所";"性別";"郵便番号"}] : デフォルトの名無しさん (ブーイモ MM6b-blJ9) [sage] 2019/02/16(土) 14:00:48.72:i29F+S9hM VBAの2次元配列って1次元配列として使えないのね。不便。 : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/16(土) 14:26:02.22:Y5C6RkaG0 二次元配列は何が入ってるか分かりにくいしネストも増えやすいから構造体かクラスを使う : デフォルトの名無しさん (ブーイモ MM6b-O/Qv) [sage] 2019/02/16(土) 14:36:39.42:eWrDkcRxM 割り切ってジャグ配列をメインに使えばいい Rangeはしょうがないけど : デフォルトの名無しさん (ワッチョイ c701-Fd8k) [sage] 2019/02/16(土) 15:38:49.30:XgEm9HUa0 XLシートが二次元の表なんだから難しくないだろ。 三次元なら立体を思い浮かべればいい。四次元になると時間をイメージかな。そこまでやったことないからわからん。 三次元までのネストの深さは気にならないな… ifとかで増えるにしても。増えすぎるなら内部を切り出すかな。 まあ、仕様によってどう作るかはいろいろだけど。 : デフォルトの名無しさん (アークセー Sx7b-a/B5) [sage] 2019/02/16(土) 16:03:55.03:kXl7LE8Fx n次元 = n階層の木構造とイメージするのが単純で良いと思うが : デフォルトの名無しさん (JP 0H4f-mnSR) [] 2019/02/16(土) 16:14:59.54:3bJEG0FOH 難しくないのにわからんって馬鹿? : デフォルトの名無しさん (ブーイモ MM6b-O/Qv) [sage] 2019/02/16(土) 16:41:41.01:eWrDkcRxM n次元より配列の配列の...の方が再帰的に扱いやすい : デフォルトの名無しさん (ワッチョイ 5f01-3Kdw) [sage] 2019/02/16(土) 17:53:27.66:q1DAaOKG0 日本語不自由? 難しくないのは二次元 わからんのは四次元 : デフォルトの名無しさん (ワッチョイ c701-OvAq) [] 2019/02/16(土) 22:42:47.76:0In5hf0F0 モジュールで Dim arr() As String Dim aaa As String ReDim arr(2) arr = ThisWorkbook.arr aaa = arr(0) ThisWorkbookに下記を設定 Public Function arr() As String() Dim arra(2) As String arra(0) = "日本" arra(1) = "米国" End Function Thisworkbookの配列を呼び出したいんですがどこが間違っていますか? : デフォルトの名無しさん (ワッチョイ 0711-l0e6) [sage] 2019/02/16(土) 23:01:11.68:V3lev6Wl0 arr = arra End Function : デフォルトの名無しさん (ワッチョイ a7da-cT+3) [sage] 2019/02/16(土) 23:03:14.34:CD9VXZwW0 エラーメッセージ何よ。 : デフォルトの名無しさん (ワッチョイ c701-OvAq) [] 2019/02/16(土) 23:06:17.40:0In5hf0F0 インデックスが有効範囲にありません : デフォルトの名無しさん (ワッチョイ a7da-cT+3) [sage] 2019/02/16(土) 23:10:54.03:CD9VXZwW0 ああ、よくある、結局原因がよくわからないやつね。 試したら、が正解だったわ。 面白いな。Thisworkbookに書いてあるものを呼ぼうなんて、 考えたこともなかったから、それが原因かと思ったわ。 : デフォルトの名無しさん (ワッチョイ 5fa2-A2tD) [sage] 2019/02/16(土) 23:17:04.90:7Iomz0v50 そもそも配列名とプロシージャ名が同じところもおかしい : デフォルトの名無しさん (ワッチョイ 478e-TQkV) [sage] 2019/02/17(日) 00:05:03.03:kxT8s3Mp0 馬鹿はそんなもん 間違いにくいようにコードを書くことをしない : デフォルトの名無しさん (ワッチョイ 5f7c-We++) [] 2019/02/17(日) 09:02:57.20:hMcsTv+Y0 コードを書かなきゃ間違えないということか、なるほど。 それとも馬鹿は誤解を受けないような文章を書くことをしないってことか? : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 09:28:38.67:l7X7saNL0 俺が分かるからいいみたいな考えだとチームで開発はできないよ : デフォルトの名無しさん (ワッチョイ 5f7c-We++) [] 2019/02/17(日) 10:19:09.83:hMcsTv+Y0 それはよく解る。保守性も悪くなるよね。 : デフォルトの名無しさん (ドコグロ MM1f-ngFe) [sage] 2019/02/17(日) 10:48:02.04:1fMGblo0M 一般的なプログラミング言語なら正しいけど、VBAだとかなり厳しくない? 下に合わせるとそれこそ可読性も保守性もクソもないゴミにしかならないよ : デフォルトの名無しさん (アウアウウー Sa4b-mBMX) [sage] 2019/02/17(日) 10:53:43.33:vi4O111wa 言語は問わず下に合わせるとゴミになる 属人性の排除といって下に合わせたがる人が少なく無いけどあれは間違いなんだ : デフォルトの名無しさん (ワッチョイ a7da-cT+3) [sage] 2019/02/17(日) 11:25:11.92:EkiBf8gr0 VBAで下に合わせると、やたらSelect & Selection.Copyが多い、 マクロの自動記録じゃねえのこれ? みたいなのが出来上がる。 : デフォルトの名無しさん (ワッチョイ ff7c-/Ktc) [sage] 2019/02/17(日) 11:45:18.78:7MWZQWrl0 ActiveHogeHoge へ参照が多いとそうなんだろうなと思うことにしている : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 11:45:44.34:l7X7saNL0 意味が伝わってないみたいだけど cells(i, 1) = arr(i-1, 0) がセルに何が書き込まれるかはコードの前後を追わないと分からないよね これを分かるようにするのが分かりやすいコード プログラミングが上手か下手かは関係ない話 : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 11:51:57.63:l7X7saNL0 多次元配列も Dim lngEleName As Long とか専用ループ変数を準備してるならいいけど、ijkで回してるのを見た日にはそいつを殴りにいくね。 : デフォルトの名無しさん (ワッチョイ 5fa2-A2tD) [sage] 2019/02/17(日) 11:59:45.89:plSLxTsM0 ひえー なんか諸先輩方思うところ多かったようで 自分も書くとき気をつけないと 初心者ですを免罪符にしないように気をつけよう : デフォルトの名無しさん (ワッチョイ bf8c-O/Qv) [sage] 2019/02/17(日) 12:32:03.24:jVC6vo8Y0 i, j, k でいいよそんなのw : デフォルトの名無しさん (ドコグロ MM1f-ngFe) [sage] 2019/02/17(日) 12:47:43.60:1fMGblo0M i, j, k で分かりにくくなるような長ったらしいプロシージャを書くのが悪い : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 13:16:45.17:Nxpc9YF00 上司「お前クビ」 : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 13:31:38.58:Nxpc9YF00 プロシージャが簡潔ならおk : デフォルトの名無しさん (ブーイモ MMcb-O/Qv) [sage] 2019/02/17(日) 13:42:14.79:gMXfU/jdM つまらない趣味にこだわるのは中学生までだぞ : デフォルトの名無しさん (ブーイモ MMcb-O/Qv) [sage] 2019/02/17(日) 13:49:15.60:gMXfU/jdM 偏見かもしれんがプログラミングで日常言語に近づけようとするやつは代数とか苦手だった? って思っちゃう : デフォルトの名無しさん (ワッチョイ ff7c-wP4P) [] 2019/02/17(日) 14:06:36.59:7mUUrd8D0 蛇腹erは代数が苦手(キリっ : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 14:20:05.25:Nxpc9YF00 上司「このiってなに?ちゃんと説明して」 : デフォルトの名無しさん (ワッチョイ 5f01-3Kdw) [sage] 2019/02/17(日) 14:51:51.50:naWxhgEk0 単なるループカウンタですけど? 見ればわかりますよね? : デフォルトの名無しさん (ワッチョイ bfb7-uWgP) [] 2019/02/17(日) 14:57:39.75:k4RkjrxP0 Ing Ele ってなんの略ですか : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 15:13:51.30:Nxpc9YF00 しばくぞコラ(LongとElementだよ(にっこり)) : デフォルトの名無しさん (アークセー Sx7b-a/B5) [sage] 2019/02/17(日) 15:32:11.89:t0Nzx7bGx ループカウント用のプロシージャ内ローカル変数でiとかjとか使うのはありだと思う モジュールレベル以上の参照スコープを持たせた変数をiとかjとかarrとかbufとかで宣言されてたら流石にキレるな : デフォルトの名無しさん (ワッチョイ 4769-QWHq) [sage] 2019/02/17(日) 15:36:00.05:de8FYcuQ0 スコープが大きいほど変数名も長くして : デフォルトの名無しさん (ワッチョイ e7b0-3a8x) [] 2019/02/17(日) 15:43:21.47:urjL+jec0 今時ハンガリアン使ってるのクソダサい : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 15:49:41.73:Nxpc9YF00 俺はゴールデンの方が好き 猫飼ってるから無理だけど : デフォルトの名無しさん (ワッチョイ 87b5-5sVJ) [sage] 2019/02/17(日) 16:33:33.48:Rm6p2g7t0 sheet1, sheet2とあって、sheet1に、 Private Sub ButtonClear_Click() があります これをsheet2のボタンを押したときに呼び出したいのですが、sheet2のsubで Private Sub ButtonTest() Worksheets("sheet1").Select ButtonClear_Click end sub としてもそんなsubはないと言ってきます。他にもいろいろと試したのですがどうしたらいいのでしょうか また、標準モジュール内で、 Sub ModuleTest() Worksheets("sheet1").Select ButtonClear_Click end sub としても同様に動きません Worksheets("sheet1").ButtonClear_Click とかしてもダメでした : デフォルトの名無しさん (アウアウウー Sa4b-mBMX) [sage] 2019/02/17(日) 16:40:07.44:vi4O111wa 共通の処理は共通モジュールかクラスに置いてください シート1、シート2からはその共通の処理を呼び出してください イベントハンドラはユーザーコードから呼び出すものではありません : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 16:50:40.07:Nxpc9YF00 Privateが付いてるプロシージャはそのモジュール内でのみ呼び出し可能 sheet1とsheet2は別モジュール だから怒られてる : デフォルトの名無しさん (ワッチョイ 87da-yQ/S) [] 2019/02/17(日) 16:54:09.55:Bys9dR540 化石みたいなレスのあるスレだな : デフォルトの名無しさん (ワッチョイ a7da-cT+3) [sage] 2019/02/17(日) 17:02:42.50:EkiBf8gr0 >イベントハンドラはユーザーコードから呼び出すものではありません 面倒くさいとき、普通に呼び出してたわ。 : デフォルトの名無しさん (ワッチョイ 87b5-5sVJ) [sage] 2019/02/17(日) 17:18:01.63:Rm6p2g7t0 Public にしてもはずしてもダメです : デフォルトの名無しさん (ワッチョイ 478e-TQkV) [sage] 2019/02/17(日) 17:22:34.48:kxT8s3Mp0 馬鹿はClassを知らない : デフォルトの名無しさん (ワッチョイ a7da-cT+3) [sage] 2019/02/17(日) 17:57:40.00:EkiBf8gr0 みたいにしても? : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 18:15:37.59:l7X7saNL0 そもそもボタンってデフォで標準プロシージャに追加されなかったっけ? 標準モジュール作って、Sub ButtonClear_Click() をまるごと移動させたらいけんじゃね? : デフォルトの名無しさん (ワッチョイ 5f7c-We++) [] 2019/02/17(日) 18:27:30.13:hMcsTv+Y0 そんくらい知ってるよ、夏の日の1993だろ。 昭和生まれをナメるなよ。 : デフォルトの名無しさん (ワッチョイ 87b5-5sVJ) [sage] 2019/02/17(日) 18:37:55.36:Rm6p2g7t0 調べてたらこんなのが出てきました ttp://http://jscript.zouri.jp/Source/ExcelCtrl.html#LINK7 ちょっとずれてはいますが、ここで // シートのマクロ関数を呼び出す ExcelApp.Run( "MacroTest.xls!Sheet1.func1" ); ってのがあるから、標準モジュールだけじゃなくて、シートの関数も他のシートからも呼べるんだよね マネてやってみたんだけどうまくいかん : デフォルトの名無しさん (ワッチョイ a7da-cT+3) [sage] 2019/02/17(日) 18:52:24.20:EkiBf8gr0 いや、普通に、シートを指定するんじゃ駄目のかな。 はThisworkbookに続けて関数名書いてるけど。 クラスモジュールもそうやって指定するでしょ? : デフォルトの名無しさん (スプッッ Sdff-isAZ) [sage] 2019/02/17(日) 18:53:32.60:X48frccGd ??? lngEle?なんかよりi,j,kの方がよっぽど良いだろ。 どんなスコープの場合でも特別な意味の無いループ変数だよ。 世界中で、さらにいうと他言語でも共有されてる価値観だろ。 まあ、ローカル以外で使われることは無いけど。 : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 19:03:59.23:l7X7saNL0 シートモジュール特有の制約があるのかもしれないけど調べるのめんどい : デフォルトの名無しさん (スプッッ Sdff-isAZ) [sage] 2019/02/17(日) 19:07:37.68:X48frccGd 根本的に考え方が分かっていない。 まず、色んな所から呼び出したいものは標準モジュールに書く。 そして、そいつを色んな所から利用するように設計する。 君の場合はButtonClear_ClickをSheet1からもSheet2からも使いたいんだからButtonClear_Clickの中身を別関数にして、Sheet1のButtonClear_Clickからその関数を呼び出すようにする。 : デフォルトの名無しさん (アウアウウー Sa4b-mBMX) [sage] 2019/02/17(日) 19:09:51.42:vi4O111wa vbaerは他の言語やらんから非常識なコードを悪気なく書いてしまうんだよな : デフォルトの名無しさん (ワッチョイ 87b5-5sVJ) [sage] 2019/02/17(日) 19:12:06.36:Rm6p2g7t0 ちょっと違うんだなあ sheet1にPrivate Sub ButtonClear_Click() ってかいてるでしょ。 この処理はシート1に対してする処理なのです それをシート2から、ある特定のタイミングでしたいので、こうなっている 標準モジュールにあるものはもちろん呼べるけど、疑似的にもそうしないといけないのかな : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 19:19:24.91:l7X7saNL0 Worksheets(“シート名”).Range() = 処理 : デフォルトの名無しさん (ワッチョイ a7da-cT+3) [sage] 2019/02/17(日) 19:20:23.75:EkiBf8gr0 試したら、Sheet2.ButtonClear_Clickで動くわ。 もちろん、Privateは削除でね。 一般的にはそうだけど、 実際には出来るんだから、思い込みだよ。 : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 19:22:02.36:l7X7saNL0 ていうかsheet1にコードを書いたとしてもsheet2がアクティブになってればそっちに書き込まれるからね : デフォルトの名無しさん (ワッチョイ 87b5-5sVJ) [sage] 2019/02/17(日) 19:22:44.45:Rm6p2g7t0 Worksheets("sheet1").ButtonClear_Click みたいな仰々しいことしなくても良かったのね。 ありがと。 あとでやってみる : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 19:33:19.37:l7X7saNL0 それは入れる物が間違ってる : デフォルトの名無しさん (スプッッ Sdff-isAZ) [sage] 2019/02/17(日) 19:50:26.47:X48frccGd 違わない。 設計の話をしている。 シート2からも呼び出すんだからシート1に対して行う処理であっても変わらん。 というか、基本的な所で噛み合ってないな。 どんな所に書いてもいきなりブックやシートの省略はしないのが基本だぞ。 Withを使うかオブジェクト変数で受けるのが基本だ。 : デフォルトの名無しさん (ワッチョイ 87b5-5sVJ) [sage] 2019/02/17(日) 19:56:06.48:Rm6p2g7t0 おかしいなあ。 オブジェクトが必要ですっていうエラーが出てきて動かない : デフォルトの名無しさん (ワッチョイ 5fe7-dKms) [sage] 2019/02/17(日) 19:56:59.16:9z/u7JpJ0 「ちょっと違うんだなあ 」は草 : デフォルトの名無しさん (ワッチョイ 475f-Zj1S) [sage] 2019/02/17(日) 20:15:00.10:jhLaQWBk0 君面白いねえ : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 20:26:28.38:l7X7saNL0 Sheet1.Select : デフォルトの名無しさん (ワッチョイ a7da-cT+3) [sage] 2019/02/17(日) 20:36:24.20:EkiBf8gr0 これでtestって出ない? [シート1] Sub ButtonClear_Click() MsgBox "test" End Sub [シート2か標準モジュール] Sub ButtonClear_Click() Sheet1.ButtonClear_Click End Sub : デフォルトの名無しさん (ワッチョイ 87b5-5sVJ) [sage] 2019/02/17(日) 20:39:08.27:Rm6p2g7t0 sheet1.Selectをしなくても、セルへの代入だけなら出来た.。 シート2のボタンを押しても、シート1のセルに書き込まれる でも、Cells(10,10).Selectみたいなセルの選択をするときは、sheet1.selectをしておかないとエラーになる : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 20:43:50.21:l7X7saNL0 書き込みたいシート名を指定する Worksheets(“シート名”).cells(1,1) = : デフォルトの名無しさん (ワッチョイ a7da-cT+3) [sage] 2019/02/17(日) 20:44:14.77:EkiBf8gr0 こうやって書けば。 Worksheets("Sheet2").Cells(10, 10).Value = "test" : デフォルトの名無しさん (ワッチョイ 87b5-5sVJ) [sage] 2019/02/17(日) 20:46:06.79:Rm6p2g7t0 いやだから、書き込みだけなら、問題なく出来るって書いたじゃん 裏でも出来る でも、セルの選択とかが入ると、シートをSelectして動かないとダメ : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 20:47:37.46:l7X7saNL0 そりゃそうでしょ : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 20:53:21.26:l7X7saNL0 つーかエラーメッセージ全部貼って見せて : デフォルトの名無しさん (ワッチョイ 4769-QWHq) [sage] 2019/02/17(日) 21:43:11.83:de8FYcuQ0 vbaの関数ってデフォルトが参照渡しなんすね やらかすとこだった : デフォルトの名無しさん (ワッチョイ 478e-TQkV) [sage] 2019/02/17(日) 21:45:56.53:kxT8s3Mp0 お前らオブジェクトのこと全然わかってないんだな 馬鹿ばっか : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/17(日) 21:57:57.43:l7X7saNL0 答えplz : デフォルトの名無しさん (アークセー Sx7b-a/B5) [sage] 2019/02/17(日) 23:04:18.50:t0Nzx7bGx こんなスレ見てたら頭おかしなルで : デフォルトの名無しさん (ワッチョイ 478e-TQkV) [sage] 2019/02/17(日) 23:11:53.07:kxT8s3Mp0 継承されたわけでもないオブジェクトから別のオブジェクトのメソッドをどうやって呼び出すかわからんのか? 馬鹿は死ねよ。 : デフォルトの名無しさん (アウアウウー Sa4b-mBMX) [sage] 2019/02/17(日) 23:38:23.26:vi4O111wa 言い過ぎでは? 繊細な人だったら傷付くよ : デフォルトの名無しさん (アークセー Sx7b-a/B5) [sage] 2019/02/17(日) 23:57:36.39:t0Nzx7bGx シート1内外から呼べるPublicな共通関数を作って、クリックイベントハンドラのコードと他モジュールのコードの双方から呼ぶようにすれば良いだけでは イベントハンドラを直接コードユーザにコールさせようとするのはおかしい : デフォルトの名無しさん (ワッチョイ bf8c-O/Qv) [sage] 2019/02/18(月) 00:01:45.68:WfgOED4y0 ByRefもByValも付けずに宣言するとそれはByRefになるって事をかな? であれば既にやらかしてるのを気づかずにいる可能性があるから過去のモジュールを点検した方がいい : デフォルトの名無しさん (アウアウウー Sa4b-mBMX) [sage] 2019/02/18(月) 00:02:49.20:5bMGA+jIa いやよく考えるとイベントハンドラを呼ぶのはおかしいがシート2クラスのメソッドを呼ぶだけなら別におかしくはなかった それだけでは共通化する理由にはならない : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/18(月) 00:59:55.76:hC76sm/R0 へーシートもオブジェクトなのか 全然意識してなかったわ 勉強になったよありがと でもお前口悪いから友達いなさそうw : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/18(月) 01:23:07.51:hC76sm/R0 シートモジュールに構造体宣言してハマった記憶がある そういうことだったのか : デフォルトの名無しさん (ワッチョイ a761-9BuZ) [masssage] 2019/02/18(月) 01:23:55.49:5t9ctY5m0 頭が悪い 顔が悪い 目が悪い 口が悪い 性格も悪い 手癖も悪い 足腰も最近悪い 酒癖も悪い 女癖も悪い 寝つきも悪い そんな俺でもその返事の仕方は失礼なんじゃないかな? とは思うけど。 もしや高度なツンデレさんなのかな? と、解釈して 次の方 ( ゚д゚)ノどうぞ : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/18(月) 06:33:10.39:hC76sm/R0 きっと彼の親はVBAに殺されてしまったんだよ : デフォルトの名無しさん (アークセー Sx7b-a/B5) [sage] 2019/02/18(月) 08:08:58.79:MgpZvmd8x シートもオブジェクトなのか、ってのはちょっと驚いたな シートどころか自作フォームも含めてGUIで見て触れるもののほぼすべてがオブジェクトだぞ : デフォルトの名無しさん (ワッチョイ 8788-5sVJ) [sage] 2019/02/18(月) 08:18:13.27:8se8rGxR0 なんか、バカばっかりだなあ に他のシートにもアクセスできるって書いてあるだろ。何がオブジェクトだよ ただ、セルのセレクトは出来ないって : デフォルトの名無しさん (ワッチョイ ff6f-DcjB) [] 2019/02/18(月) 08:58:38.38:AsxIQPE70 前にやってたユーザサポート業務を思い出した : デフォルトの名無しさん (スプッッ Sdff-isAZ) [sage] 2019/02/18(月) 12:38:44.05:UyrImbcld バカはお前。 そのセルのセレクトができないと言ってる元の命令がオブジェクトがどういう階層になってるか分かってない典型的な例。 そういう人のコードだから、セレクトなんて必要無いだろうなと先読みしてるんだろう。 何しろセレクトすることなんて極めて殆ど書くことが無い(必要となることが無い)処理だからな。 : デフォルトの名無しさん (ワッチョイ e7ce-1ffV) [sage] 2019/02/18(月) 13:13:11.83:qW3BE+Gz0 ブックもシートもセルもボタンもシェイプもみんなオブジェクトだよ WindowsはOSそのものがオブジェクトの塊 そういうふうに設計されてる : デフォルトの名無しさん (ブーイモ MMcb-O/Qv) [sage] 2019/02/18(月) 13:49:41.69:uzxEynMwM Selectionはイミィディエイトからはよく使う : デフォルトの名無しさん (ワッチョイ ff7c-wP4P) [] 2019/02/18(月) 16:12:57.29:JTiYKdtz0 化石観たいな臭いレスでも良いけど もうちょっと面白いレスが観たいな VBAネタもう飽きた : デフォルトの名無しさん (ワッチョイ a7e3-dCfb) [sage] 2019/02/18(月) 16:21:45.06:luqjRhnP0 ttp://https://japan.cnet.com/article/20087747/ 「Microsoftにとって、(Officeのような)ウェブベースのアプリケーションサービス を提供することは願ってもないことだろう。これにより、エンドユーザーや違法コピー の問題をもっとしっかりコントロールできるようになる。しかも、大量にメディアを 用意したり、それを流通させるコストも不要になる」 --Garcia on Slashdot : デフォルトの名無しさん (ワッチョイ a761-dCfb) [sage] 2019/02/18(月) 16:23:02.33:L3SsO4kg0 誤爆してしまった。 スマソ。 : デフォルトの名無しさん (ワッチョイ e7e6-Ayov) [sage] 2019/02/18(月) 17:39:58.04:xGyDNRFK0 VBAスレにまで来てVBAネタ飽きたって、こんなとこくる暇があったら病院行った方が良いんちゃう? : デフォルトの名無しさん (ワッチョイ 4769-QWHq) [sage] 2019/02/18(月) 21:13:51.18:25ajLZ330 vbaおそすぎい… : デフォルトの名無しさん (アークセー Sx7b-a/B5) [sage] 2019/02/18(月) 21:25:29.27:Y1NxofRZx Selectメソッドは記録マクロの記述のためだけに存在する命令と言ってもいいくらいのものだからな 実際に実務でSelectメソッドを書いたことは殆どない 特定のセル範囲(特に複数セル)が選択された状態を作り出すことに実務上の意味があるならば書かざるを得ないんだろうけど : デフォルトの名無しさん (ワッチョイ a7e6-yQ/S) [sage] 2019/02/18(月) 21:53:14.97:eiV6jRN10 どうしてセレクチオンしないの〜! : デフォルトの名無しさん (ワッチョイ 2735-cT+3) [sage] 2019/02/18(月) 22:15:32.75:aFs+DxuY0 コードの最後に cells(1,1).select って書いておくのが僕 : デフォルトの名無しさん (ワッチョイ a7da-cT+3) [sage] 2019/02/18(月) 22:31:21.38:R8eupock0 カーソル位置の初期化によく使うけどな。Select : デフォルトの名無しさん (オッペケ Sr7b-GpPJ) [sage] 2019/02/18(月) 22:37:53.94:hG18nYywr application.gotoを使う : デフォルトの名無しさん (アークセー Sx7b-a/B5) [sage] 2019/02/18(月) 22:51:42.46:Y1NxofRZx スクロールの有無を選べるApplication.Gotoの方が小回りが効くわな : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/18(月) 23:52:49.47:hC76sm/R0 SelectよりActivateの方がしっくりくる : デフォルトの名無しさん (ワッチョイ 7fdd-/KMh) [sage] 2019/02/19(火) 00:02:24.54:mTnWFuG30 違いってなんだっけ? : デフォルトの名無しさん (ワッチョイ 2735-cT+3) [sage] 2019/02/19(火) 00:21:46.10:XTzrMDQC0 selectは複数できる acrivateは1つだけ selectしたcellsはselectionで取得でき、 activateしたセルはActiveCell また、 ActiveCellはsheetではなくapplicationのメンバ Application.ActiveCell.Select ↓はできない sheets(1).activeCell.Select 今色々試しただけだから、間違ってたらゴメン : デフォルトの名無しさん (ワッチョイ 5fea-/KMh) [sage] 2019/02/19(火) 08:36:38.55:9CovpibD0 Oh,thx. : デフォルトの名無しさん (ブーイモ MM6b-blJ9) [sage] 2019/02/19(火) 11:46:22.25:9gUKp59aM WebBrowserのフォームに文字列変数に入れたHTMLを反映させるのってどうすれば良いですか? : デフォルトの名無しさん (スプッッ Sdff-isAZ) [sage] 2019/02/19(火) 12:39:59.48:oemf1bOsd 説明が分かりにくい。 WebBrowserのフォーム →フォームにWebBrowserコントロールを貼り付けたもの? 文字列変数に入れたHTML →指定したURL? フォ―ムにWebBrowserコントロール貼り付けて、指定したURLを表示させたいってこと? : デフォルトの名無しさん (スプッッ Sdff-isAZ) [sage] 2019/02/19(火) 12:42:06.27:oemf1bOsd それともHTMLのソースコードを元にブラウザ表示させたいってこと? : デフォルトの名無しさん (ワッチョイ 2735-cT+3) [sage] 2019/02/19(火) 13:02:37.15:XTzrMDQC0 input type="text"を変更したいんでしょ メールアドレスに「123」を入れる例 めっちゃめんどくさいけどガンバレ Private Sub UserForm_Activate() WebBrowser1.Navigate (" ttp://https://opentype.jp/oteditmoney.htm") End Sub Private Sub UserForm_click() Set hec = WebBrowser1.Document Set mailaddress = hec.GetElementsByName("MailAdress2").Item(0) mailaddress.Value = 123 End Sub : デフォルトの名無しさん (JP 0H4f-mnSR) [] 2019/02/19(火) 13:06:28.07:DYfM7cdrH 質問じゃないけどcsv取り込みでQueryTable使ったら感動した ググるとほとんどLine Inputでやってるんだもんなぁ : デフォルトの名無しさん (アウアウウー Sa4b-Ayov) [] 2019/02/19(火) 13:10:41.92:mzDqOD0La ExcelでJavaScriptが使えるみたいだけど、どんなことに使えるのでしょうか? : デフォルトの名無しさん (ワッチョイ 2735-cT+3) [sage] 2019/02/19(火) 13:21:57.84:XTzrMDQC0 便利なんか? 住所の番地ってどうにかできるんかね 1-1が日付扱いになってしまう jsがどうこうではなく、vbaが化石すぎる jsは慣れれば超楽に書ける。これから覚える人は大分楽できるんじゃないかな ただ、jsはところどころじゃあくなので気をつける必要がある 具体的にはundefined : デフォルトの名無しさん (アウアウウー Sa4b-Ayov) [] 2019/02/19(火) 13:30:09.72:mzDqOD0La おぉ!レスありがとう😊 そっかぁvbaは化石か… 今職場で必要だから、業務を通して勉強してるんだよね。 JavaScriptは少し勉強してたけど、会社が受け入れてくれるかな。 : デフォルトの名無しさん (ワッチョイ 8702-5sVJ) [sage] 2019/02/19(火) 13:35:17.78:XJA9DtkM0 広範囲のソートとかどうすんの? : デフォルトの名無しさん (ワッチョイ 2735-cT+3) [sage] 2019/02/19(火) 13:44:22.98:XTzrMDQC0 幾つか忘れていた jsのメリット ・jsはwebでも標準的な言語 ・イラレのスクリプトもjsで動かす事もできる。ほとんど使わないけど ・googleSpreadsheetのマクロはjs ただ、化石言語にもいいところはある。今までのノウハウがweb上に山程ある そして仕様変更も20年なかったから、全コードがそのまま使える (他の言語はバージョン違いでエラーが発生したり、全く動かなかったりする) 結局やることはエクセルのスクリプトなので、vbaでも十分ちゃ十分、 jsのノウハウが積み上がるまでは、vbaの方が楽出来ると思う : デフォルトの名無しさん (アウアウウー Sa4b-Ayov) [] 2019/02/19(火) 13:55:09.79:mzDqOD0La なるほどなるほど。 詳しく説明してくれてありがとう! たしかにvbaは歴史があるから、調べてるのは楽だよね。 JavaScriptはしばらく家で勉強した方が良さそうだねw 時期をみて上司に提案してみるよ! : デフォルトの名無しさん (アウアウウー Sa4b-nFDO) [sage] 2019/02/19(火) 14:12:13.94:yAUMSA3na Java script は VBA → VB.Net → ASP.net って勉強して行く過程で勉強することになるから そんなに慌てなくてもいいよ : デフォルトの名無しさん (ドコグロ MM1f-ngFe) [sage] 2019/02/19(火) 14:15:00.77:D8b3v+FoM ドヤ顔のところ申し訳ないけど、ASP.NET(最新のものではなくVBerが知っている方のASP.NET)も化石だよ : デフォルトの名無しさん (ドコグロ MM1f-ngFe) [sage] 2019/02/19(火) 14:16:57.12:D8b3v+FoM ちなみに最新のASP.NETと呼ばれるものはVBer達がよく知っているASP.NETとは全く互換性がない それどころか.NET Frameworkすら切り捨てた : デフォルトの名無しさん (ワッチョイ 2735-cT+3) [sage] 2019/02/19(火) 14:24:40.78:XTzrMDQC0 知らなかった、昔のASP.NETの印象しかない。名前が完全に足引っ張ってる : デフォルトの名無しさん (ブーイモ MM6b-blJ9) [sage] 2019/02/19(火) 15:20:23.15:oSkNfL9QM 説明不足すみませんでした ユーザーフォームにwebBrowserのコントロールを張り付けて、そこにURL指定ではなくて直接htmlの文章を書き込みたいです。 : デフォルトの名無しさん (ワッチョイ 2735-cT+3) [sage] 2019/02/19(火) 15:44:15.07:XTzrMDQC0 かなりめんどくさいことをしている気がする やりたい事はこれじゃないんじゃないか Private Sub UserForm_activate() '多分一回呼ばないとダメ WebBrowser1.Navigate (" ttp://https://example.com") End Sub Private Sub UserForm_Click() html = "<div>foo</div>" WebBrowser1.Document.body.InnerHtml = html End Sub : デフォルトの名無しさん (ワッチョイ 8702-5sVJ) [sage] 2019/02/19(火) 16:06:51.67:XJA9DtkM0 四角の領域を表す構造体にRECTというのがありますが、領域が10個あってしかも定数です その中にあるポイントがあるかどうかを判断するのに、 PtInRectを使いますが、10個のRECT領域をどうやって 定義するのか考えています Dim rect1 as RECT, rect2 as RECT ,,,,, rect10 as RECT とやって、これらに定数を代入するときにいちいち rect1.Top = 10 rect1.Left =10 --- rect10.Bottom = 1000 rect10.Right = 1970 とかやってたら大変です。 Cとかなら rect1 = CRect( 10,10,100,100) って出来ますが、VBAでは出来ませんか。 またやりたいのは、PtInRectなので、簡単に if PtInRect( CRect( 10,10,100,100), x,y) <> 0 then みたいにしたいのですが、どうしたら一番スマートに出来るでしょう? : デフォルトの名無しさん (JP 0H4f-mnSR) [] 2019/02/19(火) 16:25:56.81:DYfM7cdrH 四角形を描画するメソッドは知ってる? : デフォルトの名無しさん (JP 0H4f-mnSR) [] 2019/02/19(火) 16:32:07.86:DYfM7cdrH ごめん勘違い GetCursorPos() : デフォルトの名無しさん (JP 0H4f-mnSR) [] 2019/02/19(火) 16:34:56.56:DYfM7cdrH またまた勘違い 座標の指定はむりじゃね それぞれの四角形の位置関係に規則性はないんでしょ : デフォルトの名無しさん (JP 0H4f-mnSR) [] 2019/02/19(火) 16:46:08.58:DYfM7cdrH Topとか名前を付けないで配列の要素番号に対応づけるとか : デフォルトの名無しさん (ブーイモ MMcf-blJ9) [sage] 2019/02/19(火) 19:15:58.92:C6whiypoM それです!ドストライクです!! エスパーさん手間を掛けて本当にすみませんでした。 二日考えてダメだったんですけど一回何か表示させる必要があったんですね。 あと次回は自力で出来るように頑張ります〜!! ありがとうございました! : デフォルトの名無しさん (ワッチョイ 071f-BmB6) [sage] 2019/02/19(火) 19:40:34.45:VgLhyIar0 カンマ区切りのCSVファイルを2次元配列に入れたい。 Dim arr() arr=getCSVData(strFile) private Function getCSVData(byval ...)as string() Dim tarArr() //処理 getCSVData=tarArr end Function こんな感じで配列にして1次元が行、2次元が列に格納したいんですが ReDim、ReDim Preserveのタイミング等々が分かりません。 先に一度開いて行数と列数の最大を取得してからReDimでtarArrを2次元配列にし、もう一度開いて一行ずつ読み取ってカンマ区切りをsplitして配列に入れてからUBound分ループしてtarArrに入れる方法ですかね? : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/19(火) 20:09:29.49:3o3WGLUD0 多次元配列は最後の要素しか拡張できないから、左の要素はUbound(Split(1行目,”,”))で最初に確定させるしかない 右の要素はredim preserveで拡張できるから普通にループで増やしていけば良い : デフォルトの名無しさん (アークセー Sx7b-a/B5) [sage] 2019/02/19(火) 20:17:18.51:f2qQz3/xx クラスにしたらいいんじゃないの vbaで引数付きコンストラクタの実現は難しいけど、 四つの座標情報を引数に取るプロパティ関数を用意して、Rect構造体のプロパティを持たせるようにすればそれらしいことができるのでは : デフォルトの名無しさん (ワッチョイ 8702-5sVJ) [sage] 2019/02/19(火) 20:41:15.17:XJA9DtkM0 VBAでもクラスって出来たんですね。 ちょっとググってみました ありがとう。 これは知らなかった : デフォルトの名無しさん (ワッチョイ 5f2f-dPPD) [sage] 2019/02/19(火) 21:21:04.93:eXSGnhOj0 構造体でできなくはない VBAの構造体、制限多いけどな Public Type Rect Top As Integer: Left As Integer: Bottom As Integer: Right As Integer End Type Public Function CRect(Top As Integer, Left As Integer, Bottom As Integer, Right As Integer) As Rect Dim r As Rect r.Top = Top: r.Left = Left: r.Bottom = Bottom: r.Right = Right CRect = r End Function Public Function PtInRect(Rect As Rect, x As Integer, y As Integer) As Boolean If Rect.Left < x And Rect.Right > x And Rect.Top < y And Rect.Bottom > y Then PtInRect = True End If End Function Public Sub test() Dim r(10) As Rect r(1) = CRect(10, 10, 100, 100) '... If PtInRect(r(1), 15, 180) Then MsgBox "In Rect1" End If If PtInRect(CRect(10, 10, 100, 100), 15, 80) Then MsgBox "In Rect2" End If End Sub 改行多すぎらしいので:で詰めて書いてる : デフォルトの名無しさん (ワッチョイ 5f2f-dPPD) [sage] 2019/02/19(火) 21:25:35.60:eXSGnhOj0 エクセルでCSV開いてシートをそのまま2次元配列に突っ込めば良いんじゃないか : デフォルトの名無しさん (ワッチョイ 5f4f-nFDO) [sage] 2019/02/19(火) 21:47:03.10:LH3y88CS0 え? そうなの? それは知らなかった。 ちなみに最新はASP.netのcore2.1だと思うんだけど VisualStudioでASP.Net Coreプロジェクトを作る際、 .Net Coreと.Net Freamworkのどちらのプラットフォームを選択するか聞いてくるけどあれは何なの? : デフォルトの名無しさん (アウアウエー Sa1f-ngFe) [sage] 2019/02/19(火) 22:14:11.03:+ssFN3TXa ASP.NET Core 3.0以降ではFull .NETが切り捨てられることが公式に明言されてる 3.0はまだPreviewだけどね : デフォルトの名無しさん (ワッチョイ 877d-yQ/S) [sage] 2019/02/19(火) 22:33:29.04:LjPGQpms0 Dimってどこに書いてますか? 全部最初に書きますか? For i= 0 to 100 for j = 0 to 100 iとjを使った処理 next next この時、Dim j as Integer ってどこに書きますか? 「For i= 0 to 100」の上か下かという質問です。 : デフォルトの名無しさん (ワッチョイ 2735-cT+3) [sage] 2019/02/19(火) 22:37:52.77:XTzrMDQC0 定義は一番最初にまとめて全て書くと管理しやすい 個人的にはそもそも書かないけどな〜 : デフォルトの名無しさん (ワッチョイ 071f-BmB6) [sage] 2019/02/19(火) 22:45:04.21:VgLhyIar0 自分でも調べてたけど、「最後の要素しか増やせない」って同じこと書いてありました。これは 例えば、行数読んだ結果がLcnt=10だとして まず ReDim(Lcnt,0)で作り 配列(0 to 10,0)ができ Redim Preserve(Lcnt,Ubound(Split(1行目)) 区切った値が5なら 配列(0 to 10,0to5)が出来てしまい、いっぺんに右の要素数が変更されるってことで合ってます? と言うことは、1行目が5列で次に読んだ2行目が3列なら右の要素数は3に減るって事ですかね? ifか何かで要素数は増える時だけRedim Preserveのが良いですかね? : デフォルトの名無しさん (スプッッ Sdff-BmB6) [sage] 2019/02/19(火) 22:50:47.62:VJWnLClRd VBは上にまとめ C#は使う時 他の言語はしらん。あくまでイメージ。 スコープは短くが理想だから長くなって下部に変数が初登場ならFunctionとかCallで余分そうなものは排除。 だからそのループも逃がす : デフォルトの名無しさん (ワッチョイ bf8c-O/Qv) [sage] 2019/02/20(水) 00:08:08.78:Hgznwu9O0 あなたの用途に合ってるのは2次元配列じゃなくて配列の配列。 ReDim arr(0 To n) arr(i) = 別の配列 ` i : 0〜n みたいなことができる 「別の配列」のところに、csvの一行分を処理して配列を返す関数を当てはめればいい。 もちろんクラス化してもいいけどさ : デフォルトの名無しさん (ワッチョイ 7f2c-Ioh3) [sage] 2019/02/20(水) 03:34:25.29:B2QSVSiS0 Ruby では普通に、2次元配列に入る require "csv" p CSV.read( "test.csv" ) 結果 [["id", "first name", "last name", "age"], ["1", "taro", "tanaka", "20"], ["2", "yumi", "adachi", "21"]] : デフォルトの名無しさん (JP 0H4f-mnSR) [] 2019/02/20(水) 07:38:24.67:5mnmpgTAH クラスって要素名を予め宣言しないといけないからcsvの要素が変わると対応できない? 教えてエロい人 : デフォルトの名無しさん (アークセー Sx7b-a/B5) [sage] 2019/02/20(水) 07:54:07.56:KjQRkkj7x 要素名で名前解決する処理がないなら、レコード値を配列プロパティで受け渡すだけで良いと思う 名前解決が必要なら要素宣言しないといけないね : デフォルトの名無しさん (ササクッテロル Sp7b-nJZM) [] 2019/02/20(水) 11:17:04.40:Aqbfj0bAp 教えてください。 エクセルのマクロです PDFファイル(100ページくらいある)を、エクセルに、全ページをたて一列に貼り付けたいのですが、 どう書けばいいでしょうか : デフォルトの名無しさん (ドコグロ MM1f-ngFe) [sage] 2019/02/20(水) 11:58:45.20:EgtCXVwuM RPAを買ってコピペを自動化するのが手っ取り早いよ : デフォルトの名無しさん (ワッチョイ e7ce-1ffV) [sage] 2019/02/20(水) 12:07:33.49:crzgHpZv0 なぜPDFを貼り付けるのか そのまま印刷すればええやん そのPDFは1つのファイルの中に100ページあるの? 1ページだけのPDFファイルが100個あるの? バラバラのPDFファイルを1つに結合したいだけならフリーウェアでできるよ : デフォルトの名無しさん (ササクッテロル Sp7b-nJZM) [] 2019/02/20(水) 12:28:15.94:Aqbfj0bAp 印刷のためじゃなく、PDFをシートにはり、横にエクセルでコメント入れたい。 : デフォルトの名無しさん (JP 0H4f-mnSR) [] 2019/02/20(水) 12:36:44.12:5mnmpgTAH コメントならPDFファイルでも入れられるよ : デフォルトの名無しさん (ワッチョイ 2735-cT+3) [sage] 2019/02/20(水) 12:37:09.49:HgkG/6H60 PDFを画像に分割→エクセルに貼り付け って流れになる PDFから直接どうこうは止めたほうが良い、PDFを触るのはかなりめんどくさい PDFを画像に分割するソフトがあると思うから、まずはそれを探して試してみて どういう形式で画像が出て来るかが分かれば、後はvba簡単に書けると思う そういやそっちの方が早いね : デフォルトの名無しさん (ササクッテロル Sp7b-nJZM) [] 2019/02/20(水) 12:38:58.44:Aqbfj0bAp 大量のコメントや式です : デフォルトの名無しさん (ササクッテロル Sp7b-nJZM) [] 2019/02/20(水) 12:39:49.65:Aqbfj0bAp 大量のコメントや式です : デフォルトの名無しさん (スッップ Sd7f-TQkV) [sage] 2019/02/20(水) 12:41:03.23:zcHFtFOnd 「教えてください」で始まる質問をするのは馬鹿しかいない法則 : デフォルトの名無しさん (ササクッテロル Sp7b-nJZM) [] 2019/02/20(水) 12:53:11.56:Aqbfj0bAp 分割するとは? 100ページのドキュメントだから100個のファイルを作成するということでしょうか。 : デフォルトの名無しさん (ワッチョイ 2735-cT+3) [sage] 2019/02/20(水) 12:55:03.75:HgkG/6H60 そういう事 : デフォルトの名無しさん (ササクッテロル Sp7b-nJZM) [] 2019/02/20(水) 13:15:01.09:Aqbfj0bAp 分割しないで、ページを読み込み、貼り付けはできないのでしょうか? : デフォルトの名無しさん (JP 0H4f-mnSR) [] 2019/02/20(水) 13:17:35.13:5mnmpgTAH 100in1で出力すればいけんじゃない? : デフォルトの名無しさん (スッップ Sd7f-TQkV) [sage] 2019/02/20(水) 13:27:36.70:zcHFtFOnd エクセル方眼紙の厚かましい馬鹿は死ね : デフォルトの名無しさん (JP 0H4f-mnSR) [] 2019/02/20(水) 13:27:47.31:5mnmpgTAH PDFを画像にするっていうのはプリンタで印刷するのと同じイメージだから基本1ページ1ファイルね : デフォルトの名無しさん (ワッチョイ 2735-cT+3) [sage] 2019/02/20(水) 13:48:22.42:HgkG/6H60 できるけどめんどくさいんだって。 自分用ですらの手順踏む この件は誰もやらんって断定するから諦めたほうが良い : デフォルトの名無しさん (JP 0H4f-mnSR) [] 2019/02/20(水) 13:51:25.06:5mnmpgTAH pdfをtxtにできるサイトがあるね : デフォルトの名無しさん (エムゾネ FF7f-TQkV) [sage] 2019/02/20(水) 14:19:25.05:3CKo6tJGF そもそもスレタイ読めない馬鹿は死ね : デフォルトの名無しさん (ワッチョイ e7ce-1ffV) [sage] 2019/02/20(水) 14:49:29.70:crzgHpZv0 どうしてもVBAとExcel上でやりたかったら 100ページのPDFを100枚の画像に変換するのはフリーウェアで一発でできる 画像をワークシートに並べるだけならVBAで簡単に書ける 上司の命令とかで他の選択肢がないなら、俺ならこうする : デフォルトの名無しさん (アウアウクー MM7b-0464) [sage] 2019/02/20(水) 16:49:36.00:RE4oCyjZM >エクセルのマクロです なにがどうエクセルのマクロなのか全くわからなくて面白かった : デフォルトの名無しさん (ワッチョイ 2735-cT+3) [sage] 2019/02/20(水) 17:37:12.40:HgkG/6H60 >>364 エクセルのマクロだけでいけるとおもったんやろ 実際出来なくはないと思うけどすげーしんどいって事にまで気が回らなかったことは仕方ない : デフォルトの名無しさん (ワッチョイ 4794-7Bqt) [sage] 2019/02/20(水) 17:59:23.96:lkHSh4f40 「○○したいんですけど教えて下さい」 「なんでそんなことしたいの?バカなの?」 何でこんな回答いちいちすんだろ 答えてくてウズウズしてる自称プロが自分のわからない質問来てカリカリしちゃってるのか? : デフォルトの名無しさん (ワッチョイ 071f-BmB6) [sage] 2019/02/20(水) 18:50:33.54:fho/sw2r0 なんでそんなめんどくさいことするの? 〇〇でよくね? とかよく見るけど、質問者が聞いてる事だけ教えればいいのにと思う。 : デフォルトの名無しさん (ワッチョイ c701-mnSR) [] 2019/02/20(水) 19:09:49.05:W87kh7t10 できない。 以上。 : デフォルトの名無しさん (ワッチョイ 2735-cT+3) [sage] 2019/02/20(水) 19:09:49.63:HgkG/6H60 大正解 vbaと実務の範囲を分かってない未熟者 >367 それを言うと 「〇〇はやりたくないんですw」 という回答が帰ってくるのがもう過去何度も : デフォルトの名無しさん (アウアウウー Sa4b-mBMX) [sage] 2019/02/20(水) 19:19:56.14:xmZEnq49a QAに集中したいならteratailかstackoverflow.jpがオススメですよ : デフォルトの名無しさん (ササクッテロル Sp7b-nJZM) [] 2019/02/20(水) 19:30:07.27:Aqbfj0bAp 1ページ目が貼り付けられるけど、ページを指定できないのかな : デフォルトの名無しさん (ワッチョイ a7da-cT+3) [sage] 2019/02/20(水) 21:05:48.46:Wi/z/KN10 htmlに書かれているJavaScriptを実行したい時とか。 : デフォルトの名無しさん (ワッチョイ 475f-Zj1S) [sage] 2019/02/20(水) 22:38:30.49:jH2rY7Fc0 めんどくさいっていうか、AcrobatOLE使えないと無理じゃない? Excelだけで完結できる手法あるの? : デフォルトの名無しさん (オッペケ Sr7b-A2tD) [sage] 2019/02/20(水) 22:49:49.45:pZJkKCoer 質問者が気付いてない、知らないだけの場合もあるから : デフォルトの名無しさん (ワッチョイ a7da-cT+3) [sage] 2019/02/20(水) 22:57:03.31:Wi/z/KN10 上司から言われてるだけというケースもあるだろうな。 : デフォルトの名無しさん (アークセー Sx7b-a/B5) [sage] 2019/02/20(水) 23:14:04.77:zOoel5SRx 手順固定で指示する糞上司っているよね その手順がボトルネックになって糞の塊のようなツールが出来上がったりする : デフォルトの名無しさん (ワッチョイ 6a7c-5UjA) [sage] 2019/02/21(木) 01:06:52.19:wp9rEEne0 ハンドアセンブルを覚える。 バイナリで書き出す。 : デフォルトの名無しさん (ワッチョイ 7d01-Y1hu) [] 2019/02/21(木) 05:02:12.65:fo0B5AuF0 組織はそれが普通。趣味で仕事やりますというわけには行かない : デフォルトの名無しさん (ブーイモ MMc9-0USI) [sage] 2019/02/21(木) 07:46:17.08:X1BgxDGFM 昭和の労働集約的な企業の紹介乙 : デフォルトの名無しさん (ワッチョイ 6a98-Y1hu) [] 2019/02/21(木) 08:00:03.08:WrVB68JS0 趣味で作り上げたとしても説明してレビュー受けないといけない。その労力って結構きついしいっそ言われたまま作り上げた方が精神的にラクね : デフォルトの名無しさん (アウアウウー Sa21-eq4B) [sage] 2019/02/21(木) 08:15:00.93:Uwc+mrjba 固定するのは百歩譲って良いんだけど説明も了解もなく決める人には困るね より良い方法を提案する機会がないままルールとして決まってしまう : デフォルトの名無しさん (JP 0H2e-AaBj) [] 2019/02/21(木) 08:24:52.09:hsBre2j/H マニュアル化できるレベルの仕事しかできないって自虐だろ : デフォルトの名無しさん (スップ Sd0a-er5G) [sage] 2019/02/21(木) 12:40:21.42:tE5CGhgad 1.質問に回答する。 2.質問者から、「その場合だと〜が上手くいきません。」と返事。 3.その場合は〜すれば良いと回答する。 4.質問者から「それだと〜」... 5.2-4を何度か繰り返す。 6.質問者に「そもそも君はその処理で何をやりたいんだ?」と聞く。 7.質問者の返事を聞いて、結局質問者の設計が糞だったと知る。 8.1-7をを何度となく経験してると、質問を見た時に設計の糞さ加減がかなりの確度で予想できるようになる。 9.質問者の聞いてることだけ回答すると糞設計のせいでドツボに嵌まるので聞いてることだけ回答するのは辞めようという結論になる。 10.質問者は自分の糞設計に気付かないので、質問にだけ回答すれば良いのにと思う。 : デフォルトの名無しさん (ワッチョイ c594-uPuZ) [sage] 2019/02/21(木) 16:01:26.14:EV12A9vO0 こうやって質問者をひとくくりで決めつけちゃうような視野が狭い人が一番の癌なんだよな バカほどなんでも決めつけて単純化させようとする 勝手に単純化させた結論を赤の他人にいきなり押しつけるから当然理解されない 理解されないことを相手がバカだからと決めつけていきなり罵り出す 頭がおかしい人なのかな?と放置されると論破して黙らせたと思い込んで悦に浸り出す そしてプロ回答者としての自信を増して増長して居座る : デフォルトの名無しさん (ドコグロ MMb1-bAbS) [sage] 2019/02/21(木) 16:10:32.99:7HScUEGsM 大抵の事務仕事は本来単純なことをわざわざ難しくして仕事を作っているだけなのは事実だね VBAや最近だとRPAのような小手先の自動化ツールのは、本質的なプロセスの見直しに対するモチベーションを削いでいる面もある : デフォルトの名無しさん (ワッチョイ 6935-dS/9) [sage] 2019/02/21(木) 16:23:50.23:YsIQ3BIo0 営業はそれが売上に繋がってると信じてやまないので、 どうにもなんないのよ〜 : デフォルトの名無しさん (スップ Sd0a-er5G) [sage] 2019/02/21(木) 18:36:57.10:tE5CGhgad お前が碌に回答したことが無い初心者なだけだろ。 いろんな所で回答してる奴らは皆同意する。 : デフォルトの名無しさん (ドコグロ MMb1-bAbS) [sage] 2019/02/21(木) 18:47:24.87:7HScUEGsM 同意するわ 明らかに知識の乏しい初心者が妙に具体的に手段を特定して助けを求めてきた場合、 「そんなことはどうでもいいから目的を教えろ」と対応するのが最も確実で効果的で手っ取り早い : デフォルトの名無しさん (ワッチョイ 6935-rusg) [sage] 2019/02/21(木) 18:56:23.16:YsIQ3BIo0 >8.1-7をを何度となく経験してると、質問を見た時に設計の糞さ加減がかなりの確度で予想できるようになる。 この辺りになると回答でイライラする事が無くなるゾ : デフォルトの名無しさん (ドコグロ MM12-ZgJD) [sage] 2019/02/21(木) 18:57:24.28:ZuxKbWfpM お前が決めつけててワロタ : デフォルトの名無しさん (ワッチョイ 6d1f-Ty0B) [sage] 2019/02/21(木) 19:18:39.73:AiPG59Hd0 プログラムって書き方って人それぞれ違うと思うけどみんな書き方どんな? EXCELのセルデータをComboBoxに格納 メイン文 caii addcbo(FilePath,1,Me.cbo1) caii addcbo(FilePath,5,Me.cbo2) caii addcbo(FilePath,8,Me.cbo3) Function addcbo(....) ※DAOでEXCEL開く 第2引数の列を下にループ 第3引数に空になるまで格納 End Function てな感じのコードってどうなの? 俺は先に2次元配列でシート丸ごと持ってきてから入れてく感じにしたんだけど、ここにいる人達はどう書く? : デフォルトの名無しさん (ワッチョイ b501-eSdf) [] 2019/02/21(木) 19:30:43.16:UHF1Q6o+0 データ取得は別プロシージャにして配列につっこむ : デフォルトの名無しさん (ワッチョイ 6935-rusg) [sage] 2019/02/21(木) 19:43:21.62:YsIQ3BIo0 caiiってcallの事か が綺麗と思うけど、大抵ぐらいで終わる : デフォルトの名無しさん (ワッチョイ 89c5-T+SP) [] 2019/02/21(木) 19:53:49.02:dFUlMofS0 おまえプロさんか? まだプロさん予備軍やったら気いつけや そこからプロさんに堕ちるんはあっちゅう間やで : デフォルトの名無しさん (ワッチョイ c594-uPuZ) [sage] 2019/02/21(木) 19:57:47.93:EV12A9vO0 さすがプロ回答者の鏡 嫌なら別に回答者なんてやらなくてもいいんだよ? 質問者をひとくくりに見下すようなひねくれ者になってまでプロ回答者をやり続けてる目的ってなに? こんなとこで他人を見下してなきゃ自尊心保てないとかそんな感じ? : デフォルトの名無しさん (ワッチョイ 6935-rusg) [sage] 2019/02/21(木) 19:58:58.69:YsIQ3BIo0 回答も質問もしないならさっさと消えて : デフォルトの名無しさん (ワッチョイ 6a2f-oRCO) [sage] 2019/02/21(木) 20:03:08.56:mRRRBv2X0 こうやって回答者をひとくくりで決めつけちゃうような視野が狭い人が一番の癌なんだよな バカほどなんでも決めつけて単純化させようとする 勝手に単純化させた結論を赤の他人にいきなり押しつけるから当然理解されない 理解されないことを相手がバカだからと決めつけていきなり罵り出す 頭がおかしい人なのかな?と放置されると論破して黙らせたと思い込んで悦に浸り出す : デフォルトの名無しさん (アークセー Sxbd-ki5U) [sage] 2019/02/21(木) 20:08:15.12:pV/9VR1fx 質問に対する回答よりも糞みたいな煽り合いに熱中する奴ってなんなの : デフォルトの名無しさん (ワッチョイ b501-eSdf) [] 2019/02/21(木) 20:14:11.51:UHF1Q6o+0 質問者は基本的に馬鹿 「インターネットは開くんですけどxxシステムが開きません」と言われてTraceやらブラウザ設定やらやった挙句、LANケーブルが挿さってないだけでインターネットはキャッシュでした、っていうようなオチが山ほどある 奴らの言葉を鵜呑みにしてはいけない : デフォルトの名無しさん (ワッチョイ a569-K3Le) [sage] 2019/02/21(木) 20:40:34.06:8KPV6qY80 ループから抜けるときにブレイクとかコンティニューないのこれ? : デフォルトの名無しさん (ワッチョイ 6935-rusg) [sage] 2019/02/21(木) 20:44:24.69:YsIQ3BIo0 exitがある Sub foo() For i = 1 To 1000 Debug.Print i If i > 100 Then Exit For End If Next End Sub : デフォルトの名無しさん (ワッチョイ 89c5-T+SP) [] 2019/02/21(木) 20:49:56.47:dFUlMofS0 ←こいつホンマもんのプロさんやんwww Traceてwwwwwwww : デフォルトの名無しさん (ワッチョイ b501-eSdf) [] 2019/02/22(金) 00:25:53.24:9R98EKTp0 ? : デフォルトの名無しさん (ワッチョイ 6a7c-RjxB) [] 2019/02/22(金) 00:44:27.12:EpE2F9dV0 混沌とした質問ではなくてある程度整形された質問ならお互いに健全かもしれないね。 「例えば質問のためのテンプレ埋めてもらう」とかだけでもやり取りの回数減るんじゃないかな。 テンプレの内容はよくわからないけど、例えば「配列が解るか、オブジェクトが解るか、APIが解るか」とか書いてもらえれば質問者のレベルか解りやすいから罵ることもないだろうし 全体の流れの一部として困ってるのか、単純に言語仕様で困ってるのかだけでも質問者に必要なのがコンサルなのか解答なのか切り分けしやすいと思う。 : デフォルトの名無しさん (アウアウエー Sa52-bAbS) [sage] 2019/02/22(金) 00:57:28.09:nGlWTBX9a 【目的】 【何がわからないのか】 【どうなることを期待しているのか】 【何故それが必要だと考えたのか】 でいいよ 質問者のレベルなんてレスの内容見りゃわかるだろ : デフォルトの名無しさん (ワッチョイ 5e68-rusg) [sage] 2019/02/22(金) 01:31:51.52:1cZDvNG50 >【目的】 >【何故それが必要だと考えたのか】 これは無くてもいいかも 多分あんまり良い情報は返ってこない気がする >【何がわからないのか】 これも無くて良いかもしれないけど、 まぁ一応質問スレなので 後は最初の状態が欲しい 初めと終わりがあれば何とでもなる それと反復頻度。一回だけなら一回だけ用の雑コードで済ますし、毎日ならもうちょい丁寧に書く ってわけで以下になっていると楽 【作業前の状態】 【終了時の状態】 【何がわからないのか】 【作業の頻度(一回だけ or 何度も)】 : デフォルトの名無しさん (ワッチョイ f1ce-ZT00) [sage] 2019/02/22(金) 05:05:38.47:+/kCrfoP0 データ量も欲しいなあ 1万件なら雑コード、100万件なら処理速度も意識してコード書く : デフォルトの名無しさん (JP 0H2e-eSdf) [] 2019/02/22(金) 09:18:19.59:OJD9m6ZlH あんまり敷居を高くすると質問者が減るよ : デフォルトの名無しさん (アークセー Sxbd-ki5U) [sage] 2019/02/22(金) 09:36:13.35:tzlpYPDLx 質問者が減れば珍回答で恥をかくリスクも減って回答者のプライドが保たれるので問題ない : デフォルトの名無しさん (JP 0H2e-eSdf) [] 2019/02/22(金) 09:46:06.70:OJD9m6ZlH そう考えてるのはお前だけだよ : デフォルトの名無しさん (ワッチョイ 6a90-rusg) [] 2019/02/22(金) 09:53:52.37:HFM6F1Kc0 まぁプロ回答者どもが罵り合いやってますが、質問者の方はそんなの気にせず どんどん質問してくださいな w : デフォルトの名無しさん (ワッチョイ 5e68-rusg) [sage] 2019/02/22(金) 10:30:26.16:1cZDvNG50 どうすればいいか提案してくれ : デフォルトの名無しさん (ワッチョイ c594-uPuZ) [sage] 2019/02/22(金) 16:26:24.07:brEIpzdG0 このスレの本質はプロ回答者選手権だからな プロ回答者の敵はプロ回答者 質問者など餌に過ぎない その餌を誰が一番上から踏み潰すかを競い合う ちなみにプロ回答者にもなると質問に答えたりしない : デフォルトの名無しさん (ワッチョイ 5e68-rusg) [sage] 2019/02/22(金) 16:41:48.96:1cZDvNG50 なるほど! まさにさんのような方ですね : デフォルトの名無しさん (ワッチョイ 9e8c-0USI) [sage] 2019/02/22(金) 16:46:43.90:8DxZ0bMn0 なるほど プロ回答者ってのは「質問スレにおける回答活動」のプロって意味か : デフォルトの名無しさん (アウアウウー Sa21-/vCN) [sage] 2019/02/22(金) 20:37:47.33:O594Y42ea まぁ別に目的の記述は無くてもいいけど 何を目的にしているかの記述があれば 代替案考えてくれる人もいるだろうし 欲しい解答が得られやすい場合もあるわな 逆に余計なこと言って欲しくないのなら 書かないのも有りだと思うけど 解答者がゲスパーして答えるのも また有りだと思うし : デフォルトの名無しさん (アウアウウー Sa21-/vCN) [sage] 2019/02/22(金) 20:44:37.13:O594Y42ea ループから抜けるのはの人が言う通り Exitを使えばいいけど、次のループに行くような .Netで言うContinueはないので 分岐でループしているロジックの最後に持って行くしかないんじゃないかな? : デフォルトの名無しさん (ワッチョイ 39da-dS/9) [sage] 2019/02/22(金) 21:01:06.12:Pvmgb/R80 ここの質問を見ると、よほど変なもん作らされてるんだろうなって思う。 何に使うのかわからないようなのが多くて、 実務で使いそうなのがあまり出てこない。 : デフォルトの名無しさん (ラクッペ MM6d-K3Le) [sage] 2019/02/22(金) 21:23:19.91:yyymEZ9cM 実務では文字列解析とデータベースからの検索程度で難しくは無いんだけど 適当に組んだせいか妙に遅いのが悩み 高速化するテクニックとかないかな : デフォルトの名無しさん (ワッチョイ f1ce-ZT00) [sage] 2019/02/22(金) 21:42:30.22:+/kCrfoP0 VBAを捨てる : デフォルトの名無しさん (ワッチョイ a6da-dS/9) [sage] 2019/02/22(金) 22:11:55.73:moZ6n3ck0 早いpcに買い替える : デフォルトの名無しさん (ワッチョイ 39da-dS/9) [sage] 2019/02/22(金) 22:45:12.67:Pvmgb/R80 二重Forループ ↓ VLOOKUP ↓ 高速VLOOKUP ↓ SQL これより速いのって、やっぱアセンブラ? : デフォルトの名無しさん (ワッチョイ 39da-dS/9) [sage] 2019/02/22(金) 22:46:15.97:Pvmgb/R80 アドバンスフィルタが抜けてた。 : デフォルトの名無しさん (ドコグロ MM0a-bAbS) [sage] 2019/02/22(金) 23:22:12.68:Ig/cWVtXM インデックスを張ってSQLでJOIN オンデマンドなトランザクションじゃなくて単発の巨大なバッチならHiveとか使うのもいい : デフォルトの名無しさん (ワッチョイ 8aa3-5+1H) [sage] 2019/02/23(土) 01:23:52.97:CTQXI+x50 エラーがわかりにくいのがいちばんのストレス そのほかにも可変長引数とかジェネリクスとかwithの糞文法とか短絡評価未搭載とかインターフェイスが歪んだ設計になるとか色々遅れすぎ 所詮底辺が一発ツールで使う言語 : デフォルトの名無しさん (アークセー Sxbd-ki5U) [sage] 2019/02/23(土) 01:28:03.84:M/apCBqcx 短絡評価がないせいでネストを深くせざるをえないときがあるんだよね : デフォルトの名無しさん (ワッチョイ 11b0-0RHA) [sage] 2019/02/23(土) 04:42:29.90:GIBqdFBY0 短絡的なVBerは多いのにな : デフォルトの名無しさん (ワッチョイ ea4f-/vCN) [sage] 2019/02/23(土) 07:16:01.49:F2VDrfwR0 その辺は仕方ない C#やRubyやってる人がJavaは糞だって言ってるのと大差ない : デフォルトの名無しさん (ワッチョイ 3968-rusg) [sage] 2019/02/23(土) 09:04:33.17:Cm202fZQ0 エラーチェックは本当にな これでforが無いって言われる。本当にないのはもちろnendif さすがにもう迷う事は無いけど、 初心者の頃は散々苦しめられた Sub foo() For i = 1 To 10 If True Then Next End Sub : デフォルトの名無しさん (ワッチョイ 9e8c-0USI) [sage] 2019/02/23(土) 09:20:01.07:CvvsLWYy0 エラーってコードのエラーのことか 実行時のことかと思った : デフォルトの名無しさん (ワッチョイ 3968-rusg) [sage] 2019/02/23(土) 09:21:13.09:Cm202fZQ0 あぁ、実行時エラーの可能性もあるか あれはactiveにしてないsheetのcellをselectした時はハマったけどそれ以外は特に・・・ : デフォルトの名無しさん (ワッチョイ 9e8c-0USI) [sage] 2019/02/23(土) 09:21:56.77:CvvsLWYy0 唯一(?)の短絡評価である Select Case のリストはクソだと思いながらたまに使う : デフォルトの名無しさん (ワッチョイ b501-eSdf) [] 2019/02/23(土) 10:29:43.91:AFk0uxx90 短絡評価ってなんですか? : デフォルトの名無しさん (アウアウエー Sa52-bAbS) [sage] 2019/02/23(土) 10:35:04.36:sW0ZRaO0a お前がGoogleの採用選考を受けても学歴で足切りされて職務経歴の中身すら見てもらえないだろ? 結果が決まってるのに余計な評価をするのはリソースの無駄だからだ そのように、評価が確定した時点で残りの評価を省いて結果を出す戦略を短絡評価という : デフォルトの名無しさん (ワッチョイ 9e8c-0USI) [sage] 2019/02/23(土) 10:49:47.77:CvvsLWYy0 GoogleはOr評価かもしれないよ : デフォルトの名無しさん (ワッチョイ b501-eSdf) [] 2019/02/23(土) 11:44:31.84:AFk0uxx90 お前バカだな Googleは学歴より経歴重視だよ : デフォルトの名無しさん (ドコグロ MM12-bAbS) [sage] 2019/02/23(土) 12:14:20.39:yEreZVJRM 低学歴にも凄い経歴の奴はいるが、高学歴の中にはもっと沢山いるんやで 採用のための人的リソース最適化問題に対する戦略として、学歴フィルタが有効であることは十分に証明されている : デフォルトの名無しさん (ワッチョイ b501-eSdf) [] 2019/02/23(土) 13:07:59.71:AFk0uxx90 履歴書と職務経歴書って同封して送られてくるんだから同時に見ればいいじゃん それとも30秒くらいの時間を惜しんで職務経歴書読まずにお祈りするの? 大した戦略だねw : デフォルトの名無しさん (ドコグロ MM12-bAbS) [sage] 2019/02/23(土) 15:21:22.50:yEreZVJRM 学歴なら人が見る必要すらないでしょ 書類選考のコストは一桁違うかと : デフォルトの名無しさん (ワッチョイ ea01-ZgJD) [sage] 2019/02/23(土) 16:24:43.18:UPmGtBeI0 たかが30秒と言う奴は10,000件あったら何時間かかるかを考えてからレスしろ : デフォルトの名無しさん (ワッチョイ b501-eSdf) [] 2019/02/23(土) 18:43:00.90:AFk0uxx90 Googleはそもそも学位が必要ない時点でお前らズレてんだよ : デフォルトの名無しさん (ワッチョイ c55f-65GJ) [sage] 2019/02/23(土) 19:03:21.30:FI/m1MnA0 うんむ : デフォルトの名無しさん (ワッチョイ 39da-dS/9) [sage] 2019/02/23(土) 19:33:38.12:to9UN42C0 ただの例にここまで突っ込むか? : デフォルトの名無しさん (ワッチョイ 9e8c-0USI) [sage] 2019/02/23(土) 20:37:03.99:CvvsLWYy0 短絡評価の例としてはわかりやすかった : デフォルトの名無しさん (ワッチョイ 8aa3-5+1H) [sage] 2019/02/23(土) 22:13:21.58:CTQXI+x50 配列をインラインで生成する方法でもあればいいのに : デフォルトの名無しさん (ワッチョイ b501-W5xD) [sage] 2019/02/23(土) 23:20:45.04:E54ZDPfM0 ブレイクは Continueは、Nextの前に例えば CONTINUE:とラベル付けて、Goto CONTINUE で代替可。 これで何も過不足ないし、意図を読めないやつは(周りに)いないので、しょっちゅう使ってる。 : デフォルトの名無しさん (ワッチョイ b501-eSdf) [] 2019/02/24(日) 04:42:51.56:ZjoVn9Sx0 goto使うと負けた気分になるけどネスト深くなるくらいなら使う : デフォルトの名無しさん (ワッチョイ 9e8c-0USI) [sage] 2019/02/24(日) 10:14:59.06:PMakJCH00 そういう関数を作れば解決する話では? : デフォルトの名無しさん (ワッチョイ f1ce-ZT00) [sage] 2019/02/24(日) 11:16:37.13:x1+EfWpB0 昔から言われてるけどGoToとかExitみたいな無条件ジャンプはできるだけ使うべきじゃない ループから抜ける条件が複数ある時は、条件判定部分を関数にして外に出せばたいがい解決する : デフォルトの名無しさん (ワッチョイ 5d04-viXF) [sage] 2019/02/24(日) 11:20:53.15:UtSvB3y70 3重構造のFor文とかって、いちいち全部のFor文に条件を書くんか? : デフォルトの名無しさん (ドコグロ MM15-bAbS) [sage] 2019/02/24(日) 11:27:07.38:cR8EPyISM 下向き限定なら許す バカみたいな脱出フラグ使われるよりよっぽどマシ 上向きgotoは死ね : デフォルトの名無しさん (ワッチョイ 5d04-viXF) [sage] 2019/02/24(日) 11:31:30.55:UtSvB3y70 VBAにはなんでContinueがないんだろうな これ、ほんとめちゃ不便だわ。 これのためにもgotoは使ってるわ。てか、必須になっている : デフォルトの名無しさん (ワッチョイ 5d04-viXF) [sage] 2019/02/24(日) 11:34:47.34:UtSvB3y70 Forの3重構造の場合、例えば、i, j, kで回したとき、一番中の処理で、 i=10000 j=10000 k=10000 とか設定したら、全部抜けるという技は使ったことはあるが、Next k の次に処理があってNext jとかってなってるときは やはりgoto を使うので、結局こういう技は使わなくなった : デフォルトの名無しさん (ワッチョイ 3968-rusg) [sage] 2019/02/24(日) 12:03:06.64:laz54YR/0 for、特に二重ループから抜ける時はgotoで良い if flg then exit for こんなもん何個もあったら余計見づらいし間違う 気持ちはわかるけど、どうしてもになって余計に見づらい 20年前の言語で全く進化してないからな python2.x→3.xの悪夢を見た者としてはこれはこれで良い : デフォルトの名無しさん (アークセー Sxbd-SaAU) [sage] 2019/02/24(日) 14:56:48.98:eghZe4V2x Case (i) ⊇ Case (j) ⊇ Case (k)....っていう感じの線形の包含関係が無条件に成り立たない限り、3次元以上のループ管理はややこしくなるだけだよな : デフォルトの名無しさん (スップ Sd0a-er5G) [sage] 2019/02/24(日) 15:43:11.74:Jr9LmcmNd それに苦しめられたのはお前が悪い。 きちんとインデントする自分なりのルールがあればそんなことには最初からならない。 : デフォルトの名無しさん (スップ Sd0a-er5G) [sage] 2019/02/24(日) 15:50:41.15:Jr9LmcmNd 三重のル―プで条件によって全部から抜けるって処理自体あんまり無いだろ。 設計が悪いんじゃないの? : デフォルトの名無しさん (ワッチョイ 3968-rusg) [sage] 2019/02/24(日) 16:01:32.16:laz54YR/0 >それに苦しめられたのはお前が悪い。 どう見てもvbaのエラーチェックがしょぼすぎる 少なくともみたいなエラーチェックはあり得ない。あっても修正される 殆ど無いが、エクセルはそもそもがセルが行列の二次元+シートの三次元 開いてるブックを含めれば四次元だけど、さすがにこれは無い 全シートもあんまりないけどな 全セル(usedrange)に処理をかけて特定条件で抜けるというのは何度かあるな ただまぁ別に抜けんでもそんあに変わらないというのもあるけど : デフォルトの名無しさん (ワッチョイ c594-uPuZ) [sage] 2019/02/24(日) 16:43:43.47:EsuDtWv80 エラーがわかりにくいという話に エラーを出すおまえが悪いとマウント取りに行くプロ回答者 マウントがとりたくてやってるのか本当にただのバカなのかどっちなんだろ : デフォルトの名無しさん (ワッチョイ 9e8c-0USI) [sage] 2019/02/24(日) 17:14:34.21:PMakJCH00 まあでも多重ループから一気に抜ける方法がExit Function/Sub しかないんだから ループを含む部分をサブルーチンとして切り出す以外あるまいよ : デフォルトの名無しさん (アウアウウー Sa21-eq4B) [sage] 2019/02/24(日) 17:42:50.42:RNHs4bDba ループを回す以上はループを回す理由があるはず その理由をわかりやすい関数名にしてループを切り出す 途中で抜けたければExitする : 731 (ワッチョイ 11e6-Vd0N) [sage] 2019/02/24(日) 17:45:18.70:DRTFUInr0 いや、doとfor組み合わせれば二重ループ、三重ループからも抜けれるよ。 実用性は置いといて。 : デフォルトの名無しさん (ワッチョイ 39e6-rusg) [sage] 2019/02/24(日) 17:54:50.07:+Nxplz4k0 N88さわってたからループからgotoするのは違和感あるわ : デフォルトの名無しさん (ワッチョイ b501-W5xD) [sage] 2019/02/24(日) 18:03:52.89:vPp3qwU80 ただのバカだと思うよ。 あの場合は明らかにエラーメッセージがおかしい。 でも、エラーチェックしてると2つ以上の原因(またはどちらかが間違い)が考えられる場合がよくある。 その時どうメッセージ出すかは、作る人(仕様)次第。 ちなみに、 If xxx Then Exit For If xxx Then _ Exit For If xxx Then Exit For End If それぞれ意見はあるだろうが、無駄に行増やしたくないが、マルチステートメントもな… なので、自作では2番目をよく使う。(もちろん仕様で決まってるならそれ優先。賛否について議論はしない) : デフォルトの名無しさん (ワッチョイ ada2-uPuZ) [sage] 2019/02/24(日) 18:39:00.05:L3+XvQB40 いつまで経ってもほったらかしにされてるVBAが悪い Pythonがどうたら言う話はどうなった : デフォルトの名無しさん (ワッチョイ 9e8c-0USI) [sage] 2019/02/24(日) 19:22:57.41:PMakJCH00 資産が多すぎて移行不可 : デフォルトの名無しさん (スップ Sd0a-er5G) [sage] 2019/02/24(日) 22:11:47.76:Jr9LmcmNd 最後の奴を使う。 インデントで明らか。 というか、そんなエラーを出すこと自体無い。 が、もちろんスタイルの問題だから一番最初の奴を使おうが2番目のを使おうが問題無い。 エラー出してもすぐに分かるならな。 ちなみにその最後の奴ならIfとEndIfを書いてからExit Forを書く。For Nextの場合も中身は後だ。 染み付いてるんでね。 別にそういう書き方をすべきと言ってるんじゃない。 エラーにすぐ気付くなら何も問題は無い。 : デフォルトの名無しさん (ワッチョイ 0aa2-uGSY) [sage] 2019/02/25(月) 05:22:32.65:+5CiRMIi0 PythonAという新しい言語が誕生します : デフォルトの名無しさん (ブーイモ MMc9-5UjA) [sage] 2019/02/25(月) 09:04:42.27:8UCufaEGM VBAって遅い? セルにもの入れると遅くなるって以外で全般的に。 : デフォルトの名無しさん (ワッチョイ 3968-rusg) [sage] 2019/02/25(月) 09:16:19.92:RXoXH9qp0 遅い どうしてもエクセルが枷になる 大規模な計算をしたいならvbaは避けたほうが無難 : デフォルトの名無しさん (ブーイモ MM8e-0USI) [sage] 2019/02/25(月) 10:41:49.47:8lMUk5exM 純粋な数値計算部分は遅くはないんだけどね シートアクセスが遅いのはまあ : 731 (ワッチョイ 11e6-Vd0N) [sage] 2019/02/25(月) 12:13:02.41:lRskRR3f0 ようするにVBの部分の話か? 変数の大ニュースとかループとか、配列のメモリ確保とか : デフォルトの名無しさん (スップ Sd0a-er5G) [sage] 2019/02/25(月) 12:31:17.59:iOBpdHSUd 確かに遅いんだけど、遅いと言ってる奴の大半はそいつのコードに問題があるような気がする。 コード変えたら100倍速くなったとかざらだし、VBAが遅いせいでと感じることは殆ど無い。 遅い場合でも処理を考えたら仕方ないと思える場合が殆ど。 : デフォルトの名無しさん (スップ Sd0a-er5G) [sage] 2019/02/25(月) 12:42:50.70:iOBpdHSUd 純粋な数値計算部分が遅いと思うよ。 だからAPI使ってマルチスレッドのコード書いても処理が追い付かなくなる危険性があるわけで。 ただ、そんなの遅いと感じるようなものじゃないし、遅さが気になったら自分のコ―ドを疑った方が良い。 : デフォルトの名無しさん (オイコラミネオ MMb5-W5xD) [sage] 2019/02/25(月) 13:56:48.78:avG/zv9MM 裏で動かせるなら、処理遅くても他の作業してればエエねん。 終わったら、アイコン点滅して教えてくれればエエねん。 : デフォルトの名無しさん (ワッチョイ 0aa2-uGSY) [sage] 2019/02/25(月) 17:45:36.59:+5CiRMIi0 javascriptとvbaをネストする方法ってありませんか? Dim ie As InternetExplorer Set ie = CreateObject("InternetExplorer.Application") ie.navigate (" ttp://https://kakaku.com/specsearch/0010/") 中略 ie.navigate "javascript:var i; for(i=1;i<18;i++){page(i);}" これで1から18までpage関数をまわすことができると思いますが 1ページごとに情報を抜き出すための処理をvbaで書きたいです。 対象のwebページはjapvascriptのpage関数を使ってしかページ移動ができません。 ちなみに対象ページは↓です ttp://https://kakaku.com/specsearch/0010/ : デフォルトの名無しさん (ワッチョイ f1ce-ZT00) [sage] 2019/02/25(月) 19:16:52.45:fA1JAyF+0 kakaku.comなら「この検索結果を友達に知らせる」から直リンの情報が得られて、そこにページ番号も書かれてるからVBAだけで全データを取得できる : デフォルトの名無しさん (アークセー Sxbd-SaAU) [sage] 2019/02/25(月) 19:23:27.43:v0J7eUlyx javascriptでページ情報を適当な外部ファイルにダンプして後でvbaでまとめて読み込めば良いだけでは? : デフォルトの名無しさん (ワッチョイ 3968-rusg) [sage] 2019/02/25(月) 19:42:45.75:RXoXH9qp0 変なページはキーボードマクロでやったほうが手っ取り早い場合も : デフォルトの名無しさん (ワッチョイ 0aa2-uGSY) [sage] 2019/02/25(月) 19:47:45.89:+5CiRMIi0 こんな方法があったんですね! ありがとうございます getの形で見ることができるんですね これならfor文でまわせそうです javascriptの知識がvbaの知識より薄くてできません・・・ その方法もありですね 勉強になります ありがとうございます : デフォルトの名無しさん (アウアウウー Sa21-eq4B) [sage] 2019/02/25(月) 19:50:39.60:lqq1zerAa for i = 0 to 10 ie.navigate "javascript: page(" & i & ")" vba_code_here() next : デフォルトの名無しさん (ワッチョイ 0aa2-uGSY) [sage] 2019/02/25(月) 20:05:06.80:+5CiRMIi0 これでもいけますね! ありがとうございます 自分でも試してたつもりだったんですが&の端がシングルクオーテーションだったからだめだったんだと思います。 これでもネストできそうです。ありがとうございます。 : デフォルトの名無しさん (ワッチョイ 6a7c-RjxB) [] 2019/02/25(月) 22:06:28.97:U7AKD+aj0 フォームに張り付けたMediaPlayerプレイヤーのコントロールのプロパティが勝手に変わる謎のエラーが頻発。 どうもフォームのサイズを変更するAPIがイタズラしているらしい。 こまかく切っていってようやくまさかの原因が解ったが対処方法わからずに対処療法してしまったがそれでも半日あまりを費やした。 よくわからないサンプルコード使うと謎のエラーが出てハマることを覚えた。 プログラマーってすごいな、これ毎日やってたらほんと禿げるわ。 : デフォルトの名無しさん (ワッチョイ 3968-rusg) [sage] 2019/02/25(月) 22:14:43.73:RXoXH9qp0 >よくわからないサンプルコード使うと謎のエラーが出てハマることを覚えた。 これやると一番時間を無駄にする ・サンプルコードをざっと眺めて全体の流れを把握 ・APIの仕様をしっかり読む ・一からテストコードを書く ・APIもう一回読み直しながら、もう少し詳細に作り直し ・本番環境で書く こんな感じ。仕様を把握してから書いたほうが絶対に早い : デフォルトの名無しさん (ワッチョイ 8aa3-5+1H) [sage] 2019/02/25(月) 22:46:07.98:TP8zPbuZ0 オーバーロードってあったっけ?それに、ジェネリクスがないから全部の定義されてる型について生成しなきゃいけないから地獄なんだよ!リテラルで配列を生成できたらいちいちDimしなくてもいい : デフォルトの名無しさん (ワッチョイ 8aa3-5+1H) [sage] 2019/02/25(月) 22:51:30.74:TP8zPbuZ0 ちなみに、望むシグニチャーはこんな感じ ' T = Generic Public Function ArrayOf(/* vararg */ element As T) As Array<T> どうせVBAは浮世離れしすぎてて書けないけどな! : デフォルトの名無しさん (ワッチョイ 6a2f-+yoR) [sage] 2019/02/25(月) 23:00:26.05:F8HPsJ9/0 ジェネリックはないがヴァリアント型つかえば良いのだよ 無いものねだりしてもしょうがない 問題解決のためにあるものを使うだけ : デフォルトの名無しさん (ワッチョイ 7d83-viXF) [sage] 2019/02/26(火) 06:28:56.69:QryMFy3y0 これ。面白いな。試していないが、頭から見て行ってまずForが出て来るのにForがないって言われるの?w VBAも構文を修正するのはいろいろと問題があるだろうけど、こういうペリフェラルな部分では改良できるところは いくらでも残ってるよねえ : デフォルトの名無しさん (ワッチョイ 7d83-viXF) [sage] 2019/02/26(火) 06:39:06.54:QryMFy3y0 構文チェックくらいなら、どっかサードパーティが作ってアドオンとか出来ないのかな xlsファイルの中からプログラム文ってテキスト抽出って出来ないんだっけ : デフォルトの名無しさん (ドコグロ MM15-ZgJD) [sage] 2019/02/26(火) 06:56:12.34:Dl2cSn2NM If〜Thenでブロック作るからNext出て来たらForがないと見なされる C言語とかはEnd IfとNextの両方が } なので発生しないけどイメージとしては for(i = 0; i <= 10; i++) if(true){ next } みたいな感じになってる : デフォルトの名無しさん (ドコグロ MM15-ZgJD) [sage] 2019/02/26(火) 07:22:50.54:Dl2cSn2NM やれるやれないという意味ならやれる そもそも*.basとか*.clsとかにエクスポートしたらテキストファイルだし セキュリティの設定はいるけどCOM経由ならそんなに難しくない ただみたいなケースでわかりやすいメッセージを出すのは思ったより難しい : デフォルトの名無しさん (ブーイモ MMc9-0USI) [sage] 2019/02/26(火) 07:28:56.02:wxY2HVgtM の言うとおりだ 生成もジェネリックに出来ないが使う方の関数だってジェネリックは出来ない。 つまりVariant を避けてると型別定義地獄になるって事だ : デフォルトの名無しさん (ワッチョイ 662c-pE6h) [sage] 2019/02/26(火) 12:32:40.78:5MxkS3P70 wget は簡易クローラーだから、これで複数ページをダウンロードすれば? その後、vba で処理すれば? まあ、適度に時間をおきながら、アクセスしなよ。 頻繁にアクセスすると、営業妨害で逮捕されるかも : デフォルトの名無しさん (アウアウウー Sa21-ofTD) [sage] 2019/02/26(火) 17:27:28.56:8+gQOZAja win10(64bit)にoffice2013(32)入れたら動作おかしくなったので 新しいoffice買ってきた : デフォルトの名無しさん (アークセー Sxbd-SaAU) [sage] 2019/02/26(火) 21:19:16.14:bIfQynSTx bitsadmin.exeやPowerShellを使う手もあるな : デフォルトの名無しさん (ワッチョイ 8aa3-5+1H) [sage] 2019/02/26(火) 21:29:55.31:7VOH1icT0 Variantか…型安全をぶち壊してる気がするけど… : デフォルトの名無しさん (ワッチョイ 9e8c-0USI) [sage] 2019/02/26(火) 21:52:08.87:3hFiWozk0 いいんだよ 型安全な汎用プログラムを書けない時点で、個別のプログラムを型安全にする気は失せるというものだ : デフォルトの名無しさん (アウアウウー Sa21-eq4B) [sage] 2019/02/26(火) 21:57:39.80:tGZ/aMnha 有料のRPAツールを使ってもダメなんでしょうか? : デフォルトの名無しさん (ワッチョイ 6a2f-+yoR) [sage] 2019/02/26(火) 23:46:14.88:VNg9bOSA0 暗黙の型変換が拡大縮小の両方に効く時点で型安全なんてあり得ないわけで : デフォルトの名無しさん (ワッチョイ 3968-rusg) [sage] 2019/02/27(水) 03:06:02.10:s/3R2a1B0 vbaで型安全ってなんのギャグだよ Sub foo() Dim bar As Long bar = 1 & "0" msgbox bar End Sub : デフォルトの名無しさん (アークセー Sxbd-SaAU) [sage] 2019/02/27(水) 06:45:27.86:OKB4dgT5x これって 1 & "0" のところが 1 + 0 と評価されて出力が 1 になるのか? : デフォルトの名無しさん (JP 0H2e-eSdf) [] 2019/02/27(水) 09:24:25.27:94mgNWr4H 数値を“”で括って連結させるって普通はやらないよな もはやクレーマーの域 : デフォルトの名無しさん (ワッチョイ 592b-nbQA) [sage] 2019/02/27(水) 09:27:38.25:ev0DPtJU0 ならない。 --------------------------- Microsoft Excel --------------------------- 10 --------------------------- OK --------------------------- : デフォルトの名無しさん (ワッチョイ a58e-19KH) [sage] 2019/02/27(水) 10:08:05.65:TCTVEEoa0 アホはお前 : デフォルトの名無しさん (JP 0H2e-eSdf) [] 2019/02/27(水) 10:14:24.05:94mgNWr4H 自己紹介かな? : デフォルトの名無しさん (ワッチョイ a58e-19KH) [sage] 2019/02/27(水) 10:21:18.29:TCTVEEoa0 本当、馬鹿は食いつきがいいな。エラーも起こさずに動くのが問題なんだよ。 馬鹿には難しいか? : デフォルトの名無しさん (アウアウクー MM7d-0RHA) [sage] 2019/02/27(水) 10:48:04.11:hD6s3+cfM &演算子が勝手に文字列に変換するのは利便性考えたらわかるし Long型の変数に文字列代入する時に暗黙のキャストするのもわからなくはない けど警告ぐらいは出してほしいね : デフォルトの名無しさん (JP 0H2e-eSdf) [] 2019/02/27(水) 10:48:12.18:94mgNWr4H それはエラーであってほしいというお前の願望だろ : デフォルトの名無しさん (ワッチョイ 7d88-viXF) [sage] 2019/02/27(水) 11:32:27.96:WN1Wln/+0 VBAにも当然、厳密な構文ルールは存在するだろう 数字 & 文字列は文字列にするってのがルールじゃね。 一度覚えたらそれでいい : デフォルトの名無しさん (ブーイモ MM0a-0USI) [sage] 2019/02/27(水) 11:45:10.68:K1qNq431M & が + に解釈されたらたまったもんじゃない : デフォルトの名無しさん (スップ Sd0a-er5G) [sage] 2019/02/27(水) 12:38:47.93:JcvtiT+vd Variantは意識して使う。 型安全も意識する。 当然、暗黙の型変換でどうなるのかも意識して組んでいれば、そうそう問題になることもあるまい。 : デフォルトの名無しさん (スップ Sd0a-er5G) [sage] 2019/02/27(水) 12:41:38.23:JcvtiT+vd どんな言語でもツボは有るわけでね。 押さえてコードを書けない奴がアホなだけだろ。 初めて触った初心者じゃあるまいし警告なんて全く必要無い。 : デフォルトの名無しさん (スッップ Sd0a-19KH) [sage] 2019/02/27(水) 13:03:51.61:aJqXXkY2d 代入先が数値だろ : デフォルトの名無しさん (ワイモマー MM0a-uGSY) [sage] 2019/02/27(水) 13:08:23.01:OA+HeXxoM 同じマクロを使っている複数の文書があって、マクロの一部を修正したいんですが、 別ファイルのモジュール内の変更を行うマクロは VBA を使って書けますか? または、別ファイルのモジュールを削除(開放)してインポートする形でも構いません。 実際はワードでやりたいことですがワードVBAスレがなさそうなのでこちらで質問しました。 Normal を書き換えて対応するというのはできない前提です。 : デフォルトの名無しさん (スッップ Sd0a-19KH) [sage] 2019/02/27(水) 13:17:59.19:aJqXXkY2d スレ一覧よく見てみろ。そういういい加減で他人にすぐ聞くからできないことだらけなんだよ。 : デフォルトの名無しさん (ブーイモ MM0a-0USI) [sage] 2019/02/27(水) 13:19:02.81:K1qNq431M ByRef x As Variant : デフォルトの名無しさん (JP 0H2e-eSdf) [] 2019/02/27(水) 13:19:50.19:94mgNWr4H 書けるよ : デフォルトの名無しさん (ブーイモ MMc9-5UjA) [sage] 2019/02/27(水) 14:41:22.10:+oDGw9vfM Option Explicit付けてもエラーにならないのかな? : デフォルトの名無しさん (ワッチョイ 7d88-viXF) [sage] 2019/02/27(水) 15:47:12.82:WN1Wln/+0 お前は何を言ってるんだ? & は文字の連結子だろ。 だから、文字としての1と0を連結したんだよ 代入先は数値だな。 文字処理をしてそれがVariantだからそれから数値変換したんだな 文字処理が優先なんだろ : デフォルトの名無しさん (ワッチョイ 7d88-viXF) [sage] 2019/02/27(水) 15:48:15.94:WN1Wln/+0 >それがVariantだから すまん。これはなし まあ変な構文ではある : デフォルトの名無しさん (ブーイモ MM0a-0USI) [sage] 2019/02/27(水) 16:29:49.69:K1qNq431M だから連結じゃなく加算と解釈されたらたまったもんじゃない と言っている : デフォルトの名無しさん (ドコグロ MM12-ZgJD) [sage] 2019/02/27(水) 17:58:08.46:HrTieKXOM & 演算子は文字列同士の連結だから 2 & 1 ⇒ "21" "2" & 1 ⇒ "21" 2 & "1" ⇒ "21" "2" & "1" ⇒ "21" になる 逆に - 演算子は数値同士の引き算だから 2 - 1 ⇒ 1 "2" - 1 ⇒ 1 2 - "1" ⇒ 1 "2" & "1" ⇒ 1 になる 問題は + 演算子で普通は数値の足し算なんだけど両辺が文字列の時は文字列連結になるので 2 + 1 ⇒ 3 "2" + 1 ⇒ 3 2 + "1" ⇒ 3 "2" + "1" ⇒ "21" になる なのでVariant使っててA + Bとかやってると両方が文字列の時にはあ?ってなことになったりする : デフォルトの名無しさん (アウアウクー MM7d-0RHA) [sage] 2019/02/27(水) 18:25:55.24:hD6s3+cfM >"2" + "1" ⇒ "21" &、-と合わせて考えるとめちゃくちゃ気持ち悪いなこれ : デフォルトの名無しさん (アウアウウー Sa21-eq4B) [sage] 2019/02/27(水) 18:25:56.15:U+okKr8Fa 出力する時以外に文字列と他の型を演算させる需要ってあるか? すごい変なプログラム書いてそう : デフォルトの名無しさん (アウアウクー MM7d-0RHA) [sage] 2019/02/27(水) 18:31:15.76:hD6s3+cfM Cells(1,1) + Cells(1,2) とか気軽に書いて文字列セルなのに気づかず発狂するがいい : デフォルトの名無しさん (アウアウウー Sa21-eq4B) [sage] 2019/02/27(水) 18:45:49.28:U+okKr8Fa セルの値同士の計算をダイレクトにやろうとする発想にまず疑問を感じる : デフォルトの名無しさん (スップ Sd0a-er5G) [sage] 2019/02/27(水) 18:48:38.08:JcvtiT+vd だから、型を意識してコード書かない奴は駄目なんだ。 あと、Cells(1,1) + Cells(1,2)じゃなくて、Cells(1,1).Value + Cells(1,2).Valueとすべき。 : デフォルトの名無しさん (オイコラミネオ MMb5-W5xD) [sage] 2019/02/27(水) 18:53:54.71:sssEi30aM セル値が16進で、その値で計算させるとかかな。 昔はよく使ってたが、最近は使わなくなったな… : デフォルトの名無しさん (ワッチョイ 3968-rusg) [sage] 2019/02/27(水) 19:19:30.96:s/3R2a1B0 いや、そこじゃない cellsのデフォルトプロパティがvalueな事ぐらい皆分かっている valueの型がヤバイんだ : デフォルトの名無しさん (ワッチョイ ea01-ZgJD) [sage] 2019/02/27(水) 19:31:13.45:zqU1UpTE0 > だから、型を意識してコード書かない奴は駄目なんだ。 そんなのわかってるからいちいちマウント取りに来なくていいよ 世の中には変数宣言すらしないやつとかもいるし使い捨てコードとかもある : デフォルトの名無しさん (ワッチョイ b602-PZ49) [sage] 2019/02/27(水) 19:35:36.50:kQabADAE0 本当によくできたプログラムっていうのは変数がどんどん減っていくものだよ : デフォルトの名無しさん (ワッチョイ 11b0-0RHA) [sage] 2019/02/27(水) 19:49:19.80:J+jPuAvg0 やっぱVBAってクソだわ : デフォルトの名無しさん (ワッチョイ 6a90-rusg) [sage] 2019/02/27(水) 19:52:19.85:Vhp/GCq70 と罵りたいだけが為にここに来るんだろ? プ : デフォルトの名無しさん (ワッチョイ 11b0-0RHA) [sage] 2019/02/27(水) 20:02:27.43:J+jPuAvg0 やっぱVBAスレってクソだわ : デフォルトの名無しさん (ワッチョイ 89c5-T+SP) [] 2019/02/27(水) 20:17:03.40:INBREE+00 クソレスすんなプロさん : デフォルトの名無しさん (ワッチョイ 9e8c-0USI) [sage] 2019/02/27(水) 21:22:24.52:rA0fzWNE0 デバッグはやりづらくなるけどな : デフォルトの名無しさん (ワッチョイ 7d88-viXF) [sage] 2019/02/27(水) 21:48:46.20:WN1Wln/+0 まあやっぱり、1 & "0" とか "2" + 1 とかが出てきたら、エラーで落とすのが普通だろうなあ で、プログラマはそこで、Val関数で数値にするとか逆に文字列にするとか やっぱり型変換、確認をプログラムの中に入れながら作るのが本来の筋だと思うわ そもそもの構文を変えないのであればね : デフォルトの名無しさん (アウアウエー Sa52-bAbS) [sage] 2019/02/27(水) 22:04:09.28:6/kMoeDHa どうでもいいよ 所詮VBAだし : デフォルトの名無しさん (ブーイモ MM0a-xRI1) [sage] 2019/02/27(水) 23:43:00.80:APPBNRQYM そういうこと : デフォルトの名無しさん (ワッチョイ 1feb-IBRN) [] 2019/02/28(木) 00:41:55.86:ULaFt4eB0 質問です。お願いします。 public sub shuukei() '集計してシートに書き出してそそのシートのコピーを別ファイルとして保存 end sub ↑ こういうコードを作りましたが、少しでも速く処理されるようにもっと工夫したいと思っています。 そこで、少し書き直しては速度に変化があるか確認したいのですが、コードの実行速度を 測る方法がわかりません。教えていただけないでしょうか? public sub jikantest() '計測スタート call shuukei '計測終り msgbox かかった時間 end sub ↑ こんな感じでいちいち確認したいです。 : デフォルトの名無しさん (ワッチョイ ffdd-r++/) [sage] 2019/02/28(木) 00:46:39.13:3O1mZe4/0 dim st as single, ed as single st = timer (処理) ed = timer debug.print ed - st & "sec" いつもこんな感じでやってる。 : デフォルトの名無しさん (ワッチョイ 9f2f-8MIE) [sage] 2019/02/28(木) 00:47:31.02:CZa6uBrL0 Debug.Print Now でもしとけ : デフォルトの名無しさん (ワッチョイ 1feb-IBRN) [sage] 2019/02/28(木) 00:51:18.30:ULaFt4eB0 ありがとうございました! : デフォルトの名無しさん (ワッチョイ 9f7c-sBsz) [sage] 2019/02/28(木) 01:23:05.26:8R6HTxA70 変数の型はトレースの時だけでもシンタックスハイライトして欲しい。 それか左辺に合うように強制キャストで。 : デフォルトの名無しさん (ワッチョイ f7da-3oSp) [sage] 2019/02/28(木) 02:06:55.62:u4sOxAKE0 早くなってもわかりにくいのはやんない方がいいぞ : デフォルトの名無しさん (ワッチョイ 1feb-IBRN) [] 2019/02/28(木) 06:51:30.57:ULaFt4eB0 お恥ずかしい質問ですが、もうひとつお願いします。 私は、変数の中身でもなんでも、とにかく確認したいときはmsgboxを使うんです。 そのほうが楽だし。 でも、こういう場所で回答するような人のほとんどは、さんのように、 debug.なんとか ってのを使いますよね? よくわからないけど、debugって、msgboxとは違って、どこかのウィンドウに表示させるってことだけ は知っています。 そして、msgboxよりも、そっちの方がなんとなく本格派っぽいことも感じてます。 みなさん、どうしてmsgboxよりそっちを使うんですか?本当にそっちが便利なんですか? : デフォルトの名無しさん (ワッチョイ 9701-j5yB) [] 2019/02/28(木) 06:56:12.35:PI/gJuny0 msgboxだと毎回画面が出ちゃうから : デフォルトの名無しさん (ワッチョイ d74f-nvQ/) [sage] 2019/02/28(木) 07:04:09.83:TTqJ1VR80 Debugって俺も使ったことないんだが、過去何行くらいまで遡れるの? それとその結果ってファイルに出力できる? : デフォルトの名無しさん (ワッチョイ 9fa2-IBRN) [sage] 2019/02/28(木) 07:09:57.92:syDDbQ630 自分はstopとローカウルィンドウ派だな : デフォルトの名無しさん (ワッチョイ ffdd-r++/) [sage] 2019/02/28(木) 07:10:06.15:3O1mZe4/0 OK押すのメンドいし、押したら消えるし。 Printならイミディエイトウィンドウにどんどん溜まっていくから比較しやすいし。 VBE上でCtrl+Gで呼び出せる。 コード書くときは常に表示してるな。 他にもいろいろ便利に使えるからGGってみて。 : デフォルトの名無しさん (アウアウウー Sa9b-fNI3) [sage] 2019/02/28(木) 07:28:40.77:/X5EyKzha debug.printなら開発画面を見ない他の使用者が 気付かないで済む : デフォルトの名無しさん (ドコグロ MM6b-dMaL) [sage] 2019/02/28(木) 08:31:53.34:3CdGs56rM ちょっと本格的にやるなら… ttp://https://blogs.yahoo.co.jp/yangzh_jp/26557113.html 注意! 中にも書いてあるけど使用時にコードを改変するから使うならバックアップはちゃんと取ること : デフォルトの名無しさん (スップ Sd3f-IK5z) [sage] 2019/02/28(木) 12:28:10.25:wbPQJw42d そうとも限らない。 速度の為に変数増やすこともあるから : デフォルトの名無しさん (スップ Sd3f-IK5z) [sage] 2019/02/28(木) 12:32:41.06:wbPQJw42d そんなに大量には残らないね。 1000行くらいか? 大量に残したいときは普通テキストファイルに書き出すだろ。 : デフォルトの名無しさん (アウアウウー Sa9b-zhdC) [sage] 2019/02/28(木) 12:33:37.47:qWkUq+5ha まああくまで傾向だな システム開発に絶対はないから大まかに語るしかない しかしまあプログラマって柔軟性がないから何か意見を言ったら必ず特殊な状況を想定して反論しようとする人が出てきて面倒くさいな : デフォルトの名無しさん (JP 0H4f-j5yB) [] 2019/02/28(木) 13:23:20.67:qor22oN3H 柔軟性がある人は出世するからね : デフォルトの名無しさん (ブーイモ MMbf-0snV) [sage] 2019/02/28(木) 13:59:45.70:TjDXn6TQM 後々のテスト工程考えてるからじゃない? そこまで考慮しなくても…となる気持ちは分かる : デフォルトの名無しさん (アウアウクー MM0b-VAd9) [sage] 2019/02/28(木) 14:20:36.03:x4ZPjfd7M 考慮すべき場面とするべきでない、しても意味がない場面の判断ができないとも言える : デフォルトの名無しさん (JP 0H4f-j5yB) [] 2019/02/28(木) 14:36:57.48:qor22oN3H だから日本は開発が遅いんだよ アジャイルでやれ : デフォルトの名無しさん (ワッチョイ f7ce-uydA) [sage] 2019/02/28(木) 14:57:38.31:7AaSmpPf0 想定される状況なんか結局は本人にしか分からないし、説明すんのもめんどくさい まあ本人が気付いてないこともあるけど : デフォルトの名無しさん (ドコグロ MM6b-dMaL) [sage] 2019/02/28(木) 17:57:19.76:3CdGs56rM 決めつけで語って指摘されたら逆ギレかよ w : デフォルトの名無しさん (ワッチョイ 9fa3-+f+8) [sage] 2019/02/28(木) 18:42:40.55:jqfgz8pY0 ーーここまで型変換関数なしーー 身内が意味がわかるっていうなら変換関数抜きにしてもいいかもしれない、けどコンテキスト的に関数噛ませたい : デフォルトの名無しさん (アークセー Sx0b-Yt/p) [sage] 2019/02/28(木) 18:45:13.08:OctLDBwCx Debug.Assertも割とよく使う : デフォルトの名無しさん (ワッチョイ f7ce-uydA) [sage] 2019/02/28(木) 21:21:18.29:7AaSmpPf0 Variant使わなきゃいい : デフォルトの名無しさん (ブーイモ MM1b-9NtP) [sage] 2019/02/28(木) 22:12:12.40:TWIU4lxdM いやいやいやいや ByRef As Variant の意味論がわかってないだろ : デフォルトの名無しさん (アークセー Sx0b-Yt/p) [sage] 2019/02/28(木) 23:20:59.71:JVzuLoidx Variant型がないとそれはそれで不便 実行時にならないと変数の保持データの参照型やデータ構造が決定できないような関数を定義するときには必須 Object型では限界があるし、多態性とか考えたら特に : デフォルトの名無しさん (アウアウエー Sadf-hSmr) [sage] 2019/03/01(金) 00:53:35.24:oijdm3qva VBAにもInterfaceがあるの知らない人かな : デフォルトの名無しさん (スップ Sd3f-IK5z) [sage] 2019/03/01(金) 08:24:19.03:KSyELWIpd だから意識して使うぶんには良いんだよ。 Variant配列で高速化は良くやるだろ。 あるいはあえていろんな型を受け付ける関数を作る場合とか。 俺はInteraceはあまり使わんね。 同じプロパティを持ったクラスを複数作ってグループとして使う場合でもそこまでしなくて良いだろと考える。 : デフォルトの名無しさん (アウアウウー Sa9b-zhdC) [sage] 2019/03/01(金) 08:58:16.79:IB7Yh9y1a プログラムの基本的な良い習慣を実践すればVariantなんてそう使うことはない 使うとしてもシートIOなど僅かな用途だけだから業務ロジックまで影響することはまずない : デフォルトの名無しさん (ワッチョイ 9f90-W5e4) [] 2019/03/01(金) 09:03:46.13:BWIoX5Sk0 プロ雑談者どものくだらん蘊蓄語り合いなんぞどうでも良いから質問者の方々は 遠慮なさらずにどうぞ〜 : デフォルトの名無しさん (ブーイモ MM3b-sBsz) [sage] 2019/03/01(金) 12:55:03.48:3XNO5Z9qM コードって色々書く場所あると思うんですけど、ある程度共通の切り分けってあるんですか? フォームにはあまりややこしいものはかかないで標準モジュールを使うとか。 逆にフォームで書けるものは複雑でもそこで終わらせたほうがいいとか。 今迷ってるのはシート1のデータを加工してシート2のデータにマージさせる場合どこに書けばいいんだろうってことです。 そのシートごとに別けるとバラけて解りにくくなるしみたいな感じです。 : デフォルトの名無しさん (ドコグロ MMdb-hSmr) [sage] 2019/03/01(金) 13:04:09.15:SCR8DJeBM 所詮VBAだしどうでもいいよ VBAの可読性・保守性を高める唯一の指針があるとしたら、極力VBAを書かないでワークシートの機能を活用することかな : デフォルトの名無しさん (JP 0H4f-j5yB) [] 2019/03/01(金) 13:26:59.89:HgS5037SH 標準モジュールに Sub MergeSheet1To2 とか作ってCallすれば、他人が処理部を見なくても「このボタンを押すとマージされるんだなぁ」と想像ができる。 自分はフォーム内は処理に使うデータのチェックくらいにしてる。 : デフォルトの名無しさん (ワッチョイ 9f01-IBRN) [sage] 2019/03/01(金) 14:04:11.91:+h/xS+gL0 フォームモジュールって細々としたイベントのプロシージャであふれちゃって見にくい だからできるだけ標準モジュールに切り分けてる 例えばフォーム上の複数のTextBoxに全く同じ入力規則を設けたい時なんかは TextBox・KeyCode・Shiftを引数とするプロシージャを標準モジュールに書いて使い回ししてる さっきもそういうの書いてた : デフォルトの名無しさん (アウアウウー Sa9b-zhdC) [sage] 2019/03/01(金) 17:47:45.49:jYXMQwAma シート1 IOクラス シート2 IOクラス コンバータークラス マージサービスクラス : デフォルトの名無しさん (スップ Sd3f-IK5z) [sage] 2019/03/01(金) 18:53:01.98:KSyELWIpd そのフォームで完結させたい時はフォームに全部書く。 汎用的なのは標準モジュール、汎用的でなくてもいろんな所から使い回す場合も標準モジュールだな。 シートモジュールにはシートのイベントプロシージャ以外書かないのが基本だけどそのシートのイベントプロシージャと一緒にしたい理由でシートモジュールに書くこともある。 意味論というか、何処に書くかは内容で決める。その方が後でコード見る時に視認性も良くなる。 : デフォルトの名無しさん (アウアウウー Sa9b-fNI3) [sage] 2019/03/01(金) 20:10:20.22:9ceAGmrya 俺ならスコープで書く場所変えてる : デフォルトの名無しさん (ワッチョイ d783-nvQ/) [sage] 2019/03/01(金) 20:18:09.30:S/p2I5Nx0 シート1だけでしか使わない関数はシート1 その関数の中で使う関数で他でも使う汎用関数は標準モジュール シート1のデータを加工ってあるが、それが将来にでも他のシートでも使いそうならその加工関数は汎用化して 標準モジュール。 シート1でしか使わないのならその加工関数はシート1に書く : デフォルトの名無しさん (ワッチョイ 9f7c-L+km) [] 2019/03/01(金) 21:39:17.32:41cCIQF20 上級者の人がどう使っているかなんとなく解ったような気がします。とりあえず 【クラスモジュール】汎用性のある関数 【標準モジュール】 大きな処理 【シートモジュール】【フォーム】極力使わないが他と絡まない短いコードなら完結しても良い という感じで試してみようと思います。 あとは関数名の最後に呼び出しする関数がある場所を付けてみようと思います。 何をやりたいかで構成も変わると思うのでそこらへんも加味しながら試してみます。 参考になりました、ありがとうございます! : デフォルトの名無しさん (アウアウクー MM0b-VAd9) [sage] 2019/03/01(金) 22:34:27.56:KieDV9lDM ここに上級者なんていないぞ : デフォルトの名無しさん (ワッチョイ bf8c-9NtP) [sage] 2019/03/01(金) 22:48:58.94:eQhW3/JV0 関数名の最後になにを付けるって? : デフォルトの名無しさん (アウアウウー Sa9b-zhdC) [sage] 2019/03/01(金) 23:05:06.38:jYXMQwAma また一人、道に迷ってしまった やっぱりVBAで勉強するのは非推奨ダナ : デフォルトの名無しさん (ワッチョイ ffda-3oSp) [sage] 2019/03/01(金) 23:30:05.02:zWZoP6hm0 俺もmsgbox。 イミデは、知らないうちにウインドウが消えちゃうから。 プロパティもそう。 何で勝手に消えるんだろ。 : デフォルトの名無しさん (アークセー Sx0b-Yt/p) [sage] 2019/03/02(土) 01:21:31.95:Po9hNmd9x 汎用性のある関数を記載する場所だけど、VBAの仕様ではクラスモジュールではなく標準モジュールの方が都合が良いよ 何故なら自作のクラスモジュールに記述した関数を呼び出す場合、その自作クラスのオブジェクトのインスタンスを生成した後にそのオブジェクトのメソッドとして書くという手間が要る つまりマシンメメモリの無駄食いになるしコーディング量も増える 標準モジュールならば関数名を書くだけで呼べるので余程気楽 適当にググったときに出てくる、OOP原理主義のJavaプログラマあたりが言うところの「汎用性のある関数はクラスに」っていう考え方は、VBAには当てはまらないので注意だよ : デフォルトの名無しさん (ワッチョイ f7ce-uydA) [sage] 2019/03/02(土) 02:50:08.40:eoNuxzNL0 ワークシートなんて可読性最悪じゃん セルには数式が1つしか書けないし条件付き書式も内容を確認するのが面倒 条件付き書式が設定されてる範囲を視覚化する方法ってないよな?俺が知らないだけ? : デフォルトの名無しさん (ワッチョイ 9fa2-IBRN) [sage] 2019/03/02(土) 03:08:30.41:vHLv5v7t0 数式タブ→数式の表示 : デフォルトの名無しさん (アークセー Sx0b-Yt/p) [sage] 2019/03/02(土) 09:24:48.87:Po9hNmd9x 可読性を高める唯一の方針とは言わんが、正直下手に変数にブックレベル以上の参照スコープを持たせて値やオブジェクトを操作するくらいならワークシートの機能を使った方がよくねって場面はいくらでもあるな エラーとかでプログラムが停止したときにセル値と違って変数に格納された参照ポインタは揮発するし : デフォルトの名無しさん (アウアウウー Sa9b-zhdC) [sage] 2019/03/02(土) 09:34:34.03:heck9gfNa ワークシート関数の何が良いかというと副作用がないことだよ ぶっちゃけ重要なのはそこだけ それ以外ではセル内にだらだら式を書くと醜いなどデメリットしかない なのでVBAで普通に副作用がない関数を書けばいい 副作用のない関数ならVBAからもセル内式からも使いやすい しかもセル内式と違って見やすく管理しやすい : デフォルトの名無しさん (アークセー Sx0b-Yt/p) [sage] 2019/03/02(土) 09:47:47.22:Po9hNmd9x VBAの方が見やすくて管理しやすくてワークシート関数は見にくいって図式が成り立つかどうかは正直処理を書くやつのスキル次第だけどな ワークシート関数は必ず内部スコープが()で括られるリスト形式だから、処理構造が簡潔に可視化できるメリットがあるとも言えるわけだし : デフォルトの名無しさん (ワッチョイ bf8c-9NtP) [sage] 2019/03/02(土) 10:15:37.68:VydunwR60 自分はとほぼ正反対のやり方でやってきた シートは使い捨てのデータとちょっとした設定情報を置いたり、あとは結果を出力する場所としてしか使わないな。 使い捨てのは別だけど、ツールとして繰り返し使うブックのシートに関数はほぼ書いてない。 : デフォルトの名無しさん (アウアウウー Sa9b-zhdC) [sage] 2019/03/02(土) 10:26:10.19:heck9gfNa セル内数式はネスト入るとすぐに醜くなるじゃん それに式に名前をつけて管理できないのもメンテナンス性を悪化させてる : デフォルトの名無しさん (アウアウエー Sadf-hSmr) [sage] 2019/03/02(土) 10:34:03.78:1SfH4HCRa 式に名前を付けたければ単一値ならセルに名前付けりゃいいし、ベクトルならテーブルにしてカラム名付けりゃいい VBAで関数自作してもいい VBAの中でループぶん回すよりは遥かに見通し良いわ : デフォルトの名無しさん (アウアウウー Sa9b-zhdC) [sage] 2019/03/02(土) 10:46:06.68:heck9gfNa そもそもセル名前自体が管理しにくいので論外 セル名と数式の関係性がパッと見てわからないし セル名と数式がひも付けられて管理されてると言われなきゃ後任が気付かない VBA関数ならこの関数名はこの定義って誰でも一目でわかる 本来の出力でない余計なカラムはノイズになって邪魔 名前で管理したい項目が増えたらノイズだらけになってなにを説明したい表なのかわからなくなる : デフォルトの名無しさん (ワッチョイ 7f0d-+O5F) [sage] 2019/03/02(土) 10:57:15.96:ZJ+HN4z+0 visual studioに慣れ切ってしまってるのでVBAエディタがマジで苦手・・・ : デフォルトの名無しさん (ドコグロ MMdf-hSmr) [sage] 2019/03/02(土) 11:26:41.59:PSsyx6QoM VBAでワークシート関数を作るのは否定しないよ 最悪なのはワークシート関数(VBA含む)でできることをVBA内でループ回す馬鹿 : デフォルトの名無しさん (アウアウウー Sa9b-zhdC) [sage] 2019/03/02(土) 11:40:34.50:heck9gfNa こ文脈でループを回すの意味がわからないしどっから出てきて何を意味してるんだ? : デフォルトの名無しさん (ワッチョイ f7da-3oSp) [sage] 2019/03/02(土) 13:55:25.27:WupyvY1Q0 話変わるがセルのコピーとか移動したときに条件付き書式が壊れてやたら重くなって直すの苦労したことある : デフォルトの名無しさん (ワッチョイ 9f2f-nxCI) [sage] 2019/03/02(土) 15:18:36.62:EfeqCtIS0 お前らまず、 ワークシートの機能を活用する というのをどういうことかちゃんと合わせてから話してくれるか : デフォルトの名無しさん (アークセー Sx0b-Yt/p) [sage] 2019/03/02(土) 18:22:41.70:BmvnLX83x ワークシートの機能ってのはワークシートの機能一般のことでしかないだろ ワークシートの特定の機能を想定して話をしてるんじゃない ワークシートの機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話 : デフォルトの名無しさん (ワッチョイ ffda-3oSp) [sage] 2019/03/02(土) 19:24:09.91:PK2Geudt0 ワークシートって言いすぎww Withでまとめたくなってきたわ。 : デフォルトの名無しさん (JP 0Hdf-lo0V) [sage] 2019/03/02(土) 19:30:50.79:6n8BrDHBH With ワークシート .の機能ってのは .の機能一般のことでしかないだろ .の特定の機能を想定して話をしてるんじゃない .の機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話 End With : デフォルトの名無しさん (ワッチョイ bf8c-9NtP) [sage] 2019/03/02(土) 20:23:41.79:VydunwR60 ワークシートの機能って単独のワークシート関数で実現できることなの? それをVBAでやるのは確かに馬鹿らしい。 そうじゃないならVBAのほうがいいな。 : デフォルトの名無しさん (ワッチョイ 9f2f-nxCI) [sage] 2019/03/03(日) 01:17:47.50:5kU0Dorz0 >599 だからワークシートの機能一般ってなんのことを言ってるの? セルの計算式? 計算式用のワークシート関数? Application.WorksheetFunction? : デフォルトの名無しさん (ワッチョイ f7b0-VAd9) [sage] 2019/03/03(日) 03:16:39.28:1gVEOeax0 VBA以外のExcelで出来ること全てだろ 理解力低過ぎないか? : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/03(日) 11:57:08.93:XBWTxj+a0 なんでVBAを外すのか分からない このスレにいる連中ならワークシートにはイベントも含まれるという感覚の方が普通でしょ : デフォルトの名無しさん (ワッチョイ ffda-3oSp) [sage] 2019/03/03(日) 12:44:05.38:87SKey7q0 シートを方眼紙だと思っている人の視点での機能一般だろう。 ここの人たちは、クラスモジュールの1つくらいの感覚かもしれんが。 : デフォルトの名無しさん (ワッチョイ 377c-vuRV) [] 2019/03/03(日) 14:18:18.29:ilhG1tLW0 そこはかとなく臭うというか湧き出るダサさが嫌い : デフォルトの名無しさん (アウアウウー Sa9b-fNI3) [sage] 2019/03/03(日) 18:57:15.36:dGd12yAna EXCELの全ての機能のうちVBAを除いた残りってことじゃね : デフォルトの名無しさん (アークセー Sx0b-yUTo) [sage] 2019/03/03(日) 19:26:33.74:2dKZwCIHx エクセルのオブジェクトモデルでメソッドが提供されてるような機能をわざわざVBAでスクラッチするなって意味もあるんじゃね ListObjectオブジェクト(テーブル)の存在や機能を知らずに、同一列内のセル数式ほコピーの機能を自作するような話だろ : デフォルトの名無しさん (ブーイモ MM3b-hSmr) [sage] 2019/03/03(日) 20:55:07.59:C10iXUczM 初心者です。わかる方いましたらお教えください。 IE.Visible = False として、 IE.Quitが何らかの理由で実行されなかったり、それを書かなかった場合 どうなってしまうんでしょうか…? バックグラウンドでずっとフワフワといるんでしょうか? 見方もよくわからないタスクマネージャーで見てみるとアプリケーションとしてはたぶん起動されていませんでした… IE.Visible = Falseとした場合はもしかして特に閉じる指示が必要ないのでしょうか…? : デフォルトの名無しさん (ワッチョイ f7ce-uydA) [sage] 2019/03/03(日) 21:00:52.17:sl8Y8jOC0 バックグラウンドでずっと動き続ける、が正解 ちゃんと起動してないのはコードがおかしいかタスクマネージャの見方がおかしい そこをTrueに変えるだけでちゃんとIEのウィンドウが表示されるか確認 : デフォルトの名無しさん (ブーイモ MM3b-hSmr) [sage] 2019/03/03(日) 21:44:32.70:C10iXUczM Trueに変えるだけで表示はされたので、タスクマネージャーの見方がおかしかったようです ちゃんとバックグラウンドなんとかの欄では起動されていました ありがとうございました… : デフォルトの名無しさん (ワッチョイ 3791-IK5z) [sage] 2019/03/04(月) 09:46:01.18:TvaJY4yu0 関数使うかVBA使うかも内容で決める。 関数だと物凄く重くなることがある。 Sumproductとかを多用した場合とか、複数シートの集計を1日の集計としてさらに1ヶ月分の集計するとか。 自動計算を切れば良いんだけど、運用で微妙だね。 それに昔、銀行の仕事で大量のデ―タとSumproductのせいで1回の計算でさえいつまでたっても終わらないことがあった。 その時はVBAに書いたら5秒で終わった。 : デフォルトの名無しさん (ブーイモ MM1b-9NtP) [sage] 2019/03/04(月) 10:53:05.90:RuY9YBtCM ワークシート関数を関数と表現するのってUSBメモリをUSBと呼ぶのと同様にアレな感じ : デフォルトの名無しさん (ワッチョイ 178e-4jKm) [sage] 2019/03/04(月) 10:55:32.34:TFGUk6BN0 その違和感を持てる知識がない頭が残念な人なんだろ : デフォルトの名無しさん (JP 0H4f-j5yB) [] 2019/03/04(月) 11:15:22.83:gwy/L6iPH WorksheetFunctionプロパティで呼ぶもの(sumとかvlookupとか)がワークシート関数 VBAでしか使えないもの(CIntとかInstrとか)がVBA関数 上記と自作関数をまとめて関数 : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/04(月) 11:25:35.49:vFn2j9Kt0 >VBA関数 標準関数だろう エクセルの場合はVBA標準関数とでも言うべきか >自作関数 ユーザー定義関数という名称がある まぁ俺は関数としか呼ばんけどな、ハハハ vbaでワークシート関数使う時はそう呼ぶ : デフォルトの名無しさん (JP 0H4f-j5yB) [] 2019/03/04(月) 11:45:46.92:gwy/L6iPH : デフォルトの名無しさん (ワッチョイ 3791-IK5z) [sage] 2019/03/04(月) 14:30:16.31:TvaJY4yu0 関数とVBAと対比させてるのに勘違いする奴がいるとはとても思えないが。 いたらそいつはアホだよ。 : デフォルトの名無しさん (ワッチョイ 178e-4jKm) [sage] 2019/03/04(月) 14:32:37.46:TFGUk6BN0 馬鹿が恥の上塗りに来ましたよ、と : デフォルトの名無しさん (ワッチョイ 3791-IK5z) [sage] 2019/03/04(月) 14:57:43.98:TvaJY4yu0 あらら、アホが恥の上塗りに来たよw : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/04(月) 15:02:35.15:vFn2j9Kt0 vbaだし何でもええやろ どうせ大事に至ることはない、争う程の事ではない : デフォルトの名無しさん (ワッチョイ 178e-4jKm) [sage] 2019/03/04(月) 15:28:20.01:TFGUk6BN0 馬鹿はVBAに関数がないと思っているのか? 馬鹿は早く死ねよ : デフォルトの名無しさん (ブーイモ MM1b-9NtP) [sage] 2019/03/04(月) 16:20:08.03:RuY9YBtCM 「文脈上USBメモリのことであるとわかるときはUSBでいい」 「そもそもそんな呼び方普段からするなよ」 : デフォルトの名無しさん (アウアウクー MM0b-VAd9) [sage] 2019/03/04(月) 18:20:48.65:FDpjfwBmM わかるかどうか判断するのは読み手側だからな 書く側が勝手に略すのは読ませる気がないんだろう : デフォルトの名無しさん (ワッチョイ 37e6-W5e4) [sage] 2019/03/04(月) 23:23:23.24:dF1M3atd0 そういえばCD-ROM2をロムって呼んでたやついたな これSUPER CD-ROM2だから : デフォルトの名無しさん (ワッチョイ 178e-XA5H) [sage] 2019/03/05(火) 00:24:00.61:YDI1bFmR0 ID:TvaJY4yu0みたいな馬鹿がメンテできなくなるVBAを作る : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/05(火) 00:37:29.46:yUBkGE+g0 jsのAPI使える人いる? 使い方がサッパリ分からない ttp://https://docs.microsoft.com/ja-jp/office/dev/add-ins/excel/excel-add-ins-advanced-concepts ttp://https://docs.microsoft.com/ja-jp/office/dev/add-ins/reference/overview/excel-add-ins-reference-overview : デフォルトの名無しさん (アウアウエー Sadf-vuRV) [] 2019/03/05(火) 03:34:27.88:VDry4yCPa 馬鹿には無理 : デフォルトの名無しさん (ワッチョイ d709-nvQ/) [sage] 2019/03/05(火) 05:56:45.90:pou1Iepn0 見てきたけど、なんかすげえめんどくさそう。出来ることも見新しいことってほとんどないじゃん 普通のWin32APIとかやったことあるのか。そっち勉強した方が遥かにまし。 VBAでもやれるから : デフォルトの名無しさん (アウアウエー Sadf-hSmr) [sage] 2019/03/05(火) 07:48:42.24:VSxyPtP8a いやMacとかOffice Onlineで使えることに意味があるんだろ まあOffice Online使うくらいならGSuite使うという企業が殆どだろうけどw : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/05(火) 08:12:27.21:yUBkGE+g0 はこういう事だった 誰も使ってないのね ttp://https://qiita.com/y__na_ka_ya_ma/items/2575e79248978ff7828d 自己紹介乙 もちろんやれることは同じ jsで書ける事自体がメリット googleSpreadsheetのマクロを移植する時に使える 一生に一回もないと思うけどな : デフォルトの名無しさん (アークセー Sx0b-yUTo) [sage] 2019/03/05(火) 08:56:53.06:K5flI6jox Win32APIとOffice JavaScriptAPIどっちを勧めるかと聞かれたら今なら後者かな 後者の案件あるのか知らんが : デフォルトの名無しさん (アウアウウー Sa9b-zhdC) [sage] 2019/03/05(火) 12:20:11.68:IGhfqt8ja そもそも全くの別物を比較してどうすんねん : デフォルトの名無しさん (エムゾネ FFbf-IK5z) [sage] 2019/03/05(火) 12:44:55.98:bZMGULjeF 日本語が理解出来ないようだな。 VBAと関数を対比させているんだからここで関数と言ってるのは"VBAの関数"のことでは無いと解釈するのがまともな日本人だ。 ??? それは日本語として変だ。 USBメモリはUSBでは無い。 VBAの関数は関数ではある。 そもそもの例が適当でないわけだ。 文脈や、やり取りでVBAの関数なのかワークシート関数なのかを判断する必要があるのは、、も一緒だ。 お前らと違って普通の日本人は文脈ややり取りから判断出来てるんだよ。 のようなことを言い出すのはお前らのような頓珍漢な奴らだけだよ。 : デフォルトの名無しさん (エムゾネ FFbf-IK5z) [sage] 2019/03/05(火) 12:47:21.71:bZMGULjeF 、、 も文脈で判断するな。 : デフォルトの名無しさん (エムゾネ FFbf-IK5z) [sage] 2019/03/05(火) 12:51:32.81:bZMGULjeF 正にその通り。 Win32APIではじめて出来ることがjsで出来るなら分かるけどね。 : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/05(火) 13:01:00.32:yUBkGE+g0 あぁやっぱりそうだよね 知識不足かと思って調べてしまったわ : デフォルトの名無しさん (ワッチョイ 178e-4jKm) [sage] 2019/03/05(火) 13:14:26.63:YDI1bFmR0 ID:bZMGULjeF マジモンのアスペルガーのキチガイ : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/05(火) 13:18:51.34:yUBkGE+g0 jsアドインもう少しぐらい使われてるのかと思ったけど、 誰も使ってないようで安心した : デフォルトの名無しさん (ワッチョイ 377c-nl/e) [] 2019/03/05(火) 13:32:20.37:YOwkwz810 Excel Python API とかも Excel.js Office.js とかと同じ扱いになる悪寒 : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/05(火) 13:36:30.59:yUBkGE+g0 ゲェッ vbaはこの手軽さが最強の武器なのに、VSからアドイン作成とかあまりに残念すぎる : デフォルトの名無しさん (ワッチョイ 3791-IK5z) [sage] 2019/03/05(火) 20:23:23.29:ruLmgCaM0 これだからアホは困る。 お前、出版社にはクレーム入れるなよw ttp://https://www.amazon.co.jp/gp/aw/s/ref=nb_sb_noss?k=Excel+ 関数 : デフォルトの名無しさん (ワッチョイ 3791-IK5z) [sage] 2019/03/05(火) 20:34:12.08:ruLmgCaM0 URLエンコードしてなかったな。 ttp://https://www.amazon.co.jp/gp/aw/s/ref=nb_sb_noss?k=Excel+%e9%96%a2%e6%95%b0 : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/05(火) 20:39:11.81:yUBkGE+g0 逆引き系辞典はネットあると本当に使わない : デフォルトの名無しさん (ワッチョイ ff2c-hSmr) [sage] 2019/03/05(火) 21:11:49.71:WmyrgrGT0 会社で異動になった人が作ったマクロの稀に出るバグを直そうと頑張っています。 ちょっと怪しいかなと思ったプロシージャがあるので見にくく長いと思うのですが見て頂けませんか? 勉強しながらの初心者です。 Sub wait(IE As InternetExplorer) Const リトライ = 2 Dim IEDOC As HTMLDocument Dim ReCount As Long,i As Long Do «略» Set IEDOC = IE.Document «略» Loop While IEDOC Is Nothing If IEDOC.frames.Length < リトライ Then ReCount = リトライ Else ReCount = IEDOC.frames.Length End If For i = 0 To ReCount Do While IE.Busy Or IE.readyState <> READYSTATE_COMPLETE DoEvents Loop Next End Sub このあとすぐに書き込みに参ります : デフォルトの名無しさん (ワッチョイ ff2c-hSmr) [sage] 2019/03/05(火) 21:26:50.63:WmyrgrGT0 オレンジの部分がIE.Busy = Trueという風に教科書通りになっていないのですがこれで大丈夫なのでしょうか 上手いことちゃんとなっているか調べようとやってみましたが私には難しかったです そして水色の部分なのですが、フレーム数を取得してその数だけ念の為回しておくという感じでしょうか フレームがいくつかあると取得のたびにIE.BusyがTrue,Falseに切り替わると聞いたのでそのためで合っていますか それよりもさっき調べて出てきた '完全にドキュメントが読み込まれるまで待機する Do Until IE.document.ReadyState = "complete" DoEvents Loop ではダメなのでしょうか、別物でしょうか ざっとみておかしい部分はありますか? 図々しくすみません ttps://i.imgur.com/DQxGNB5.jpg : デフォルトの名無しさん (ワッチョイ ff2c-hSmr) [sage] 2019/03/05(火) 21:32:38.87:WmyrgrGT0 どういうマクロかと言うと、IEを開いてリンクボタンをいくつか押して文字を引っ張ってきてIEを閉じるというのを何度か繰り返すものです。 リンク先を正しく閉じられていないまま次の回転に入っていることが稀にあるのです : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/05(火) 21:58:09.97:yUBkGE+g0 別物だな はvbaオブジェクトのプロパティ WebBrowserControl.ReadyState ttp://https://docs.microsoft.com/ja-jp/office/vba/api/access.webbrowsercontrol.readystate はwebのapi Document.readyState ttp://https://developer.mozilla.org/ja/docs/Web/API/Document/readyState どっちが信用できるかは分からない どちらにしてもIEオブジェクトがどこまでwebの技術に対応してるか分からない。難しい かなり雑な解決策としては、 >リンク先を正しく閉じられていないまま次の回転に入っている とりあえず必ず開いていると仮定して、最初に閉じる処理を噛ませばいいだけな気もする あと個人的にだけど、untilはあんまり好きじゃない。「否定の否定」が出て来ないように注意した方が良い。あれは読みづらくなる とりあえず応急処置として、併用してみてはどうかな。うまくいくかどうかはわからない Do While IE.Busy Or _ IE.readyState <> READYSTATE_COMPLETE Or _ IE.document.readyState <> "complete" DoEvents Loop : デフォルトの名無しさん (ワッチョイ 9f34-0snV) [sage] 2019/03/05(火) 23:41:58.62:b71Efr460 IE11からreadystateもbusyも使えなくなったとかどこかで見た 利用出来ないという意味ではなくて使い物にならないという意味で なので移動後に表示されるタブ見つけたら、とか移動後に表示される文字列を見つけたらという条件で対処してるわ : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/05(火) 23:46:48.59:yUBkGE+g0 ここでもIEかよ・・・ : デフォルトの名無しさん (ワッチョイ bf8c-9NtP) [sage] 2019/03/05(火) 23:57:28.83:AE45wcOz0 逮捕されないように気をつけろ : デフォルトの名無しさん (ワッチョイ 9701-gWFi) [sage] 2019/03/06(水) 00:08:19.97:qZfNBEKA0 ・ IE.Busy = Trueという風に教科書通りになっていない 「if A then B」自体が既に「AがTrueならB」っていう意味だから、更に「= True」は冗長 ・ フレーム数を取得してその数だけ念の為回しておくという感じでしょうか 作者はそのつもりだったんだろうけど、Whileの条件が真になった瞬間に全ループが終わるだろうから無意味 その後何かがFalseになってもEnd Subになる ・完全にドキュメントが読み込まれるまで待機する 偶にIEの受信が終わってもDocumentが読み込み終わってない時があるから、付けたほうがいい フレームの件も、フレーム毎にdocument.ReadyStateを待つことで解決できる(ことが多い) VBAは短絡評価出来ないから、IE.documentが取得できないとreadyStateプロパティが見れずに参照エラーが起きるよ 先にIEを待ってから、安全策としてdocument.readyStateも確認すると安定してDOMが使える : デフォルトの名無しさん (ワッチョイ d701-9DxJ) [sage] 2019/03/06(水) 00:12:35.24:M8vFX/4l0 csvを読み込む手法はいくつかありますが以下のような場合どの方法が最適でしょうか 1行1レコードになっていない(セル内改行あり) csvが複数ありそれをすべて読み込んで集計処理がしたい 普段はデータインポートやopenで1行づつ読み込んでいましたが1行≠1レコードだと難しいのかと考えています : デフォルトの名無しさん (ワッチョイ ff2c-hSmr) [sage] 2019/03/06(水) 00:17:18.56:0oqXehnm0 長文でわかりにくい環境にも関わらず教えて下さってありがとうございます 参考にして、これから開きたいリンク先のウィンドウタイトルと同じタイトルを持ったウィンドウがすでにあれば閉じるという風に書いてみます 下の方に書いてくれたコードも試してみます 本当にありがとうございました また下らない質問者したらすみません 会社のパソコンが古いのでしばらくは大丈夫そうです ですが重要なことなので覚えておきますありがとうございます : デフォルトの名無しさん (ワッチョイ 9701-gWFi) [sage] 2019/03/06(水) 00:29:35.50:qZfNBEKA0 既存のウインドウを触るのは初心者にとっては結構大事だよ 閉じれてないのはQuitメソッドの前に次の処理が入ってしまってるだけだと思うから、 処理が終わったと思われる場所に自分でコードを挿入したらどうだろう : デフォルトの名無しさん (ワッチョイ 9701-gWFi) [sage] 2019/03/06(水) 00:33:49.27:qZfNBEKA0 改行が含まれてるセルは""で括られてるという認識でいいなら、 丸ごと文字列として読み込んだ後に正規表現で""内の改行を全部改行コードに書き換えるのが良いと思う : デフォルトの名無しさん (ワッチョイ 9701-gWFi) [sage] 2019/03/06(水) 00:36:57.21:qZfNBEKA0 訂正 改行を全部改行コードに書き換える ↓ 改行コードを全部書き換える : デフォルトの名無しさん (オッペケ Sr0b-9DxJ) [sage] 2019/03/06(水) 00:54:59.22:jXlQSKwgr 試してないので想像ですが1ファイル数mb程あるので一括読み込みで取得出来るんでしょうか…? 変数に入るのか、pc動作的にどうなのかが気になりますが…一度試してみます : デフォルトの名無しさん (ワッチョイ 9f7c-sBsz) [sage] 2019/03/06(水) 01:00:18.09:wqRC+Uom0 replace(str,vbcrlf,"うんこ") : デフォルトの名無しさん (ワッチョイ 9701-gWFi) [sage] 2019/03/06(水) 01:08:03.42:qZfNBEKA0 文字列型に格納すればいいと思います 確か数Gbぐらい格納できたはず : デフォルトの名無しさん (JP 0H4f-j5yB) [] 2019/03/06(水) 07:35:28.45:3ub5rlP9H IEってBusy以外にステータスも見てないとループ抜けちゃわなかったっけ : デフォルトの名無しさん (ラクッペ MMcb-Z6MB) [sage] 2019/03/06(水) 07:51:07.24:9ZQV49QQM 抜けた気がする 要素がありませんってよく怒られた : デフォルトの名無しさん (スプッッ Sd3f-IK5z) [sage] 2019/03/06(水) 08:14:30.41:OZZFIuGOd 両方見てても抜ける時が有る。 滅多に無いけど。 例えばClickで遷移する場合に、抜けてからBusyになることがあった。 Submitに比べてClickは単純に文字通りClickするだけなので遷移しないページも有るから必ずBusyになると想定されていないと想像してる。 それ以降Clickの時は最初にSleepを入れるようにしてる。 : デフォルトの名無しさん (スプッッ Sd3f-IK5z) [sage] 2019/03/06(水) 08:20:35.12:OZZFIuGOd 別に方法は色々あると思うけど1行ずつ読み込んでも良いんじゃない? 1行ずつでも条件に合うまで1レコードとしなければ良い。 1レコードの最後にも改行は有るんだろ。 もし1行ずつ読むなら1レコード内に複数改行が有る可能性を考慮すること。 : デフォルトの名無しさん (ワッチョイ ff2c-Im2K) [sage] 2019/03/06(水) 08:57:22.69:Uli2bEJM0 Ruby では、列をダブルクオートで囲むと、その中にカンマや改行を含める事もできる。 他の仕様も含め、詳しくはRFC4180を参照 require 'csv' p CSV.parse_line( "a,\"あ\nい\"" ) # => ["a", "あ\nい"] \n は改行 列区切りはカンマで、外側の"〜" は文字列を表すための囲み。 内側の\"〜\" は、"〜"内での"〜"を表すため、\ でエスケープしている。列囲みを表す a の部分は、\"〜\"で囲まなくてもよい : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/06(水) 09:17:24.17:R/1sU7PR0 rubyって・・・ もう完全に終わってる言語なんだからそんなもの勧めないでよ : デフォルトの名無しさん (ブーイモ MM1b-9NtP) [sage] 2019/03/06(水) 09:47:16.43:HGc0sPl8M Twitterで紹介されてたこれ一度試してみたけど機能してたよ ttp://https://www.excelspeedup.com/readcsv/ : デフォルトの名無しさん (ワッチョイ bfab-GrE3) [sage] 2019/03/06(水) 11:28:25.04:p4qnJjw30 下記リンク先のページ下部にあるユーザ定義関数がVBAとして正しく書けてるかチェックして貰えませんか ttp://https://peltiertech.com/loess-smoothing-in-excel/ : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/06(水) 11:39:12.31:R/1sU7PR0 どういう計算をしてるかは知らんけど、コード上は問題ない : デフォルトの名無しさん (ワッチョイ bfab-GrE3) [sage] 2019/03/06(水) 15:05:39.78:p4qnJjw30 多分スレチだろうと思いますが、をLibreoffice最新版に実装したところ戻り値に=LOESS(x,y,z,n)で指定したyの配列がそのまま表示されたのでコードどこか間違ってるか仕様変更したのを俺が見落としてるのかなと思って聞きました ありがとうございました : デフォルトの名無しさん (ワッチョイ 9fa3-+f+8) [sage] 2019/03/06(水) 15:12:15.84:n2VNtnMC0 市ね : デフォルトの名無しさん (ワッチョイ 9701-SKB1) [] 2019/03/06(水) 21:16:11.63:qNVr+Lwh0 指定した列以外の列を削除する方法を模索しています。 たとえば、ABCDE列の1行目にそれぞれ あ い う え お と入っていて、 "あ"と"う"と"お"以外の列を削除し、 あ う お というよにしたく、 このようなプログラミングをしたのですが意図するように動作しません。 ド素人と罵られること承知で質問に参りました。 論理式自体考え方がおかしいものとも思っています。 どなたかお力添えいただけないでしょうか? Sub 不要列削除() Dim i As Long For i = 1 To 50 If Cells(1, i).Value <> "あ" Or Cells(1, i).Value <> "う" Or Cells(1, i).Value <> "お" Then Columns(i).Delete End If Next End Sub : デフォルトの名無しさん (アウアウウー Sa9b-fNI3) [sage] 2019/03/06(水) 21:30:16.04:o9MkSJEKa ifの条件がおかしい : デフォルトの名無しさん (ワッチョイ 377c-u5eM) [sage] 2019/03/06(水) 21:31:48.30:LIhekGiK0 表示形式が混在したセルを見た目通りのまま表示形式が文字列の別のセルにコピーするいい方法ありませんか 例えばA1〜A3を、この見た目のまま表示形式が文字列のB1〜B3にコピーしたい場合 A 1 $1,000 2 2019/1/1 3 9:30 @ Dim buf() As Variant buf = Range("A1:A3").Value Range("B1:B3").Formula = buf '←そのまま入れてみる B1〜B3は 3/6/2019、0.836111111、\10,000.00 になる A Dim buf() As Variant Dim buf2(1 to 3, 1 to 1) As String buf = Range("A1:A3").Value For i = 1 to 3 buf2(i, 1) = buf(i, 1) '←文字列型にして入れてみる Next Range("B1:B3").Formula = buf2 B1〜B3は 2019/03/06、0.836111111111111、10000 になる @Aどちらも書式が勝手に変わります ちなみにセル範囲を配列に直接つっこまず、文字列型の配列に1セルずつ buf = Range(i, j).Text みたいな感じで入れてからセルに貼り付けると希望の結果になりますがめちゃくちゃ時間がかかります(大量データに使いたいので) 他にやり方があれば教えてください : 675 (ワッチョイ 377c-u5eM) [sage] 2019/03/06(水) 21:34:55.08:LIhekGiK0 例のA列は↓の間違いです、すいません 1 2019/3/6 2 20:04 3 \10,000 : デフォルトの名無しさん (アウアウウー Sa9b-fNI3) [sage] 2019/03/06(水) 21:37:03.61:o9MkSJEKa 画面表示を止めても遅い? : デフォルトの名無しさん (アークセー Sx0b-yUTo) [sage] 2019/03/06(水) 21:54:06.80:ZuXoITq7x 列インデックスで加算ループをしている途中で列削除をしてるから、削除した回数分だけ参照参照列の位置がおかしくなるのでは 例えば2列目を削除した後にループ処理の最初の処理に戻ると、次にi=3として.Cells(1,3)とセルアクセスしたときに見ることになるのは本来D1に位置していたセルになる 列削除した分インデックスがずれるので こうやって減算ループにするのが正解の一つかと Sub 不要列削除() Dim i As Long For i = 5 To 1 Step -1 If Cells(1, i).Value <> "あ" Or Cells(1, i).Value <> "う" Or Cells(1, i).Value <> "お" Then Columns(i).Delete End If Next End Sub あるいは、列削除した場合にはEnd Ifの手前でiから1を引いてインデックス調整するようにしたりか : デフォルトの名無しさん (アークセー Sx0b-yUTo) [sage] 2019/03/06(水) 21:56:07.90:ZuXoITq7x 改めて見たらIfの条件もおかしいね And条件にしないと : デフォルトの名無しさん (ワッチョイ 178e-4jKm) [sage] 2019/03/06(水) 22:13:28.72:0dxLNo3Q0 馬鹿過ぎるのが問題 : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/06(水) 22:23:00.33:R/1sU7PR0 textプロパティ Sub foo() Range("c1").Value = Range("a1").Text End Sub 範囲で代入は出来なかったので、適当にforeachで回してくれ Range("c1:d2").Value = Range("a1:b2").Text : デフォルトの名無しさん (ワッチョイ 377c-2g28) [sage] 2019/03/06(水) 22:36:44.70:LIhekGiK0 止めた状態で遅いです セルに直接入力していくと更に遅くなると思います : デフォルトの名無しさん (ワッチョイ 37e6-W5e4) [sage] 2019/03/06(水) 22:56:49.85:xGO4PHc60 CSVで書き出せばTEXTが得られるぞ : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/06(水) 23:08:59.57:R/1sU7PR0 あぁtext使ったって書いてたね、ゴメン 配列でも無理なら高速化はどうだろうか ttp://https://15g.jp/post-314/ 高速化でも配列でも重いなら、 もうアクセス辺りに移行した方がいいかも : デフォルトの名無しさん (ワッチョイ bf68-W5e4) [sage] 2019/03/06(水) 23:09:20.80:R/1sU7PR0 csvは勝手に変換されるのが鬼門すぎる : 675 (ワッチョイ 377c-2g28) [sage] 2019/03/06(水) 23:48:56.32:LIhekGiK0 やっぱりTextプロパティ使う以外無理そうですかね… : デフォルトの名無しさん (ワッチョイ 1e68-uGU8) [sage] 2019/03/07(木) 00:01:59.48:UepKFInK0 後はかな 住所の"1-1-1"みたいなものがなければ行けると思う。 後はダメ元でgoogleスプレッドシートに移植してマクロ組んで見るとか : デフォルトの名無しさん (ワッチョイ a701-ZBQD) [sage] 2019/03/07(木) 00:20:00.91:UmWyYgm40 textの取得だけループでまわして、 二次元配列に直して代入するとかは? : デフォルトの名無しさん (ワッチョイ a3e6-uGU8) [sage] 2019/03/07(木) 00:26:34.58:bl5ieqXF0 遅いって書いてあるだろ。もっと上をお望みなんだよ : デフォルトの名無しさん (ワッチョイ a701-ZBQD) [sage] 2019/03/07(木) 00:44:39.67:UmWyYgm40 直接入力が遅いって言ってるから、入力だけ一括でやれば?と思ったんだが : 675 (ワッチョイ a37c-DZHv) [sage] 2019/03/07(木) 00:46:43.69:zt2fCEgu0 他のファイルは使えない状況なんです… その処理がすごく時間がかかるので他の手段を探していました 諦めます 今回の事でRangeのValueやFormulaみたいにTextも配列に入れられるようにしてくれと心から思いました 色々考えてくれたみなさんありがとうございました もしいい方法思い付いたらいつでも待ってます : デフォルトの名無しさん (ワッチョイ a701-ZBQD) [sage] 2019/03/07(木) 01:15:09.98:UmWyYgm40 描写と計算止めてCopyメソッドで10万行×30列を列ごとにコピペしたら一瞬で終わったが・・・ っていうかこれ以上増やそうとするとリソース不足でエクセルが悲鳴を上げるし、どういうデータをコピーしたいんだろ : デフォルトの名無しさん (ワッチョイ a701-ZBQD) [sage] 2019/03/07(木) 01:18:31.96:UmWyYgm40 あ、書式変わるのか・・・上のレスは忘れてください : デフォルトの名無しさん (ワッチョイ cbb0-fHMV) [sage] 2019/03/07(木) 02:33:57.63:cMWEbvvB0 コピーしてテキストとして貼り付けじゃダメなのか? : デフォルトの名無しさん (アウアウウー Sac3-tGXB) [sage] 2019/03/07(木) 02:58:39.40:Wb+CU65ma 早い遅いは個人の感覚でしかないとおもう : デフォルトの名無しさん (ワッチョイ df67-Ly0m) [sage] 2019/03/07(木) 07:14:54.02:RImgiSgC0 の Application.ScreenUpdating = False は効かないのか。 画面描画が止められるよ。やってないから適当なこと言ってるかもしらんが 画面描画以外で時間がかかるってどんなだよ。 ちょっと想像できんがなあ なんでだろう : デフォルトの名無しさん (スッップ Sd32-hyvy) [sage] 2019/03/07(木) 07:24:21.94:ldY6B6U1d valueで配列コピペした後に、セルに対してそれぞれ書式設定を手動もしくはマクロですれば? 書式は列ごとくらいは揃ってると思うし。 それもバラバラってことだと、そもそも集計の仕方が悪過ぎる。 : デフォルトの名無しさん (ワッチョイ a701-DUKr) [sage] 2019/03/07(木) 07:28:16.03:IFVQ3Zq/0 ありがとうございます! 意図するようになりました。 -1で減らしていく発想は本当になかったのでいい勉強になりました。 このたびは本当にありかございました。 : デフォルトの名無しさん (スッップ Sd32-hyvy) [sage] 2019/03/07(木) 07:44:13.43:ldY6B6U1d 684じゃないけど、複雑に関数組んだりとか遅い関数が大量に入っててかつデータ数がエクセル上限近くで再計算に時間がかかるとか、あとセル上で反復計算やソルバー使ってたりするとある。 ただ684は書式がバラバラなセルを扱ってる時点で、複雑な計算をしてるとは思えないけど。 : デフォルトの名無しさん (ワッチョイ df67-Ly0m) [sage] 2019/03/07(木) 07:52:53.03:RImgiSgC0 をもう一度見て来いよ。 これだぞ。そんなややこしいことしている話ではないと思うが >表示形式が混在したセルを見た目通りのまま表示形式が文字列の別のセルにコピーするいい方法ありませんか : 675 (スフッ Sd32-tsl5) [sage] 2019/03/07(木) 08:38:04.86:QURDMn8Xd 再描画等定番の部分は止めています セル数は100万ぐらい、列数、行数分回してTextプロパティを1セルずつ配列に入れる処理だけです シートへの貼り付け処理ではなくこの取得部分に時間がかかります 同じ回数回すAや、Format関数、worksheetfunction.textを使った場合その半分以下の時間ですが望みの結果を得る方法はわかりませんでした… : デフォルトの名無しさん (ワッチョイ f2a2-ouaW) [sage] 2019/03/07(木) 10:57:17.39:QGzmAmpt0 コピーした後NumberFormatで整えればええんちゃうん? Dim buf() As Variant buf = Range("A1:A3").Value Range("B1:B3").Formula = buf Range("b1").NumberFormat = "yyyy/m/d" Range("b2").NumberFormat = "h:mm" Range("b3").NumberFormat = "[$\-ja-JP]#,##0;-[$\-ja-JP]#,##0" データが多すぎて無理? : デフォルトの名無しさん (ワッチョイ f2a2-ouaW) [sage] 2019/03/07(木) 10:58:23.63:QGzmAmpt0 アー、見た目が同じまま、「文字列」なのか・・・ すんません無視してください : デフォルトの名無しさん (アウアウクー MM07-fHMV) [sage] 2019/03/07(木) 11:39:04.19:OUaGUe4hM A1:A3をコピーしてメモ帳とかに貼り付け 全選択してコピーしてB1:B3に貼り付けでできた VBAだけで完結させる方法は知らん : デフォルトの名無しさん (エムゾネ FF32-ekDA) [sage] 2019/03/07(木) 12:41:45.56:g1Ak82VsF 勘違いしてる奴が多いが、自動計算を止めたり描画を止めるのは初心者が速度アップのためにやる方法で、のように速度アップの為に考えて組まれている場合には効果が無い。 上級者はこういう場合に描画止めたりしないよ。 考えずに組んで面倒くさい場合にやる奴はいるかもしれんけど。 : 675 (スフッ Sd32-tsl5) [sage] 2019/03/07(木) 12:42:12.66:QURDMn8Xd あとからNumberformatを適用させるんでなく配列に入れる時点で適用させる手を考えたんですが、 適用させるのにworksheetfunction.textを使うと書式に「マイナス値は[赤]」みたいな色設定があるとなぜか1004エラーが出るし、Format関数使うと表示形式が標準の時なぜか値が「標準」という文字列になってしまいます 速度的にはtextプロパティ使うよりずっと速いんですが…もう訳がわからない : デフォルトの名無しさん (エムゾネ FF32-ekDA) [sage] 2019/03/07(木) 12:46:54.74:g1Ak82VsF 他に方法があるか探る時間が無いので何とも言えんが、DB処理にするか、マルチプロセスで上手いことすれば早くなると思う。 : デフォルトの名無しさん (エムゾネ FF32-ekDA) [sage] 2019/03/07(木) 12:50:28.91:g1Ak82VsF よく考えたらDB処理は駄目な気がする。 表示部分を扱え無さそうだ。 : デフォルトの名無しさん (ワッチョイ ebce-2wIc) [sage] 2019/03/07(木) 18:02:24.90:6oCjCAip0 メモ帳にコピペすると書式が全部消えて見た目通りの文字列になる メモ帳アプリの実体はエディットコントロールそのものだから、ユーザーフォームにエディットコントロールを貼っただけの作業場所を作って、そこ経由でコピペしてみたら? : デフォルトの名無しさん (ワッチョイ 12a6-/DyH) [sage] 2019/03/07(木) 18:03:18.10:hp531q160 UserForm1にTextBox1とCommandButton1、TextBox2とCommandButton2の計4つが配置され UserForm2には入力フォームが配置されています。 CommandButton1からUserForm2を呼び出した時は、TextBox1に記入 CommandButton2からUserForm2を呼び出した時は、TextBox2に記入 させるには、どうすれば良いですか? : デフォルトの名無しさん (エムゾネ FF32-ekDA) [sage] 2019/03/07(木) 18:34:04.34:rXPjoswtF これ、本当? だったらクリップボード弄って高速化できるかもしれない。 : デフォルトの名無しさん (ワッチョイ cbda-/kwh) [sage] 2019/03/07(木) 18:34:43.55:qs1KmWLa0 複雑な処理でデータ量が多いなら遅くても仕方ないんじゃね? どうせエクセルだし、専門職じゃないし、大した会社じゃないし、給料安いし : デフォルトの名無しさん (アークセー Sxc7-sOih) [sage] 2019/03/07(木) 19:03:35.19:qo/Sl71gx やり方はいくつもある 一番簡単な方法を書くと、 Userform1側の各ボタンのクリックイベント内に、任意のセルや標準モジュール上のPublic変数等にコマンドボタンのオブジェクト名をコピーする処理を書く(Me.ActiveControl.Nameでフォーム上でフォーカスされているコントロールオブジェクトの名前を取れるのでこれを使う) Userform2側のイベントコードではそのコピーされたボタン名を読み取って書き込み先のテキストボックスを判定するようにする : デフォルトの名無しさん (アウアウエー Saaa-CO8P) [sage] 2019/03/07(木) 19:11:06.28:ximLdO0ya コマンドボタンのクリックイベントプロシージャで、グローバル変数に呼び出したボタン番号を格納→ユーザーフォーム2のコンストラクタでグローバル変数で分岐させる方法 もしくはコマンドボタンのクリックイベントプロシージャでユーザーフォーム2のマルチページコントロールのプロパティを変更する(value=1,2)方法もある : 675 (ワッチョイ a37c-DZHv) [sage] 2019/03/07(木) 21:34:32.55:zt2fCEgu0 セル範囲をコピーしてクリップボードから直接二次元配列に入れるようにしたら何十秒もかかってたのが0.5秒になりました ただ、クリップボードから切り出す時にうっかりセルの値に手を加えてしまわないかが心配です 単純にVbCrLfで行を区切って、VbTabで列を区切ってるんですがそれで問題ないんでしょうか? : デフォルトの名無しさん (ワッチョイ ebce-2wIc) [sage] 2019/03/07(木) 22:48:37.99:6oCjCAip0 セル内改行を使ってなければそれで大丈夫 : デフォルトの名無しさん (ワッチョイ a37c-DZHv) [sage] 2019/03/08(金) 00:03:05.83:+kJkkfKW0 セル内改行入れてみたら…またこんな落とし穴が… : デフォルトの名無しさん (ワッチョイ 12a6-/DyH) [sage] 2019/03/08(金) 02:12:12.40:k3BFo3Xw0 プロジェクトが大きくなるにつれグローバル変数は神経を使うので 極力さけたかったのですが Form1.ActiveControl.Name、でいけそうですね : デフォルトの名無しさん (アウアウエー Saaa-CO8P) [sage] 2019/03/08(金) 03:08:04.26:Tjqa7GxLa システムの大規模化が想定されるならユーザーフォームでユーザーフォームを呼び出すのは危険w ユーザーフォーム間の依存性を高めてしまうw ここはユーザーフォームを呼び出すクラスを作った方がいいw クラスを介して情報を渡せば安全だし再利用性も高まるw : デフォルトの名無しさん (ワッチョイ 1201-ouaW) [sage] 2019/03/08(金) 08:00:14.88:IUpgvQZO0 やっぱりuserformからuserform呼ぶのってよくないのか こういうのってクラスモジュール使えるんだろうなって思ってたんだけど 余り使ったことなかたんで、ちゃんと勉強してみよう 参考書ぽちってきたわ JavaとかC#を多少触ってきたからオブジェクト指向の概念は分かってるんだけど VBAでの効果的な使い方をマスターしたいわ : デフォルトの名無しさん (アークセー Sxc7-sOih) [sage] 2019/03/08(金) 08:01:46.46:aYiBhvGax 引数付きコンストラクタすら簡単に実装できない言語で呼び出し用クラス作る方がきついと感じてしまうね、個人的には : デフォルトの名無しさん (ワッチョイ 1201-ouaW) [sage] 2019/03/08(金) 08:08:56.71:IUpgvQZO0 普通のコンストラクタには引数渡せないんだ まぁその辺の限界も含めて一度勉強しておいたほうがいいとは思ってる できることと出来ないことを知った上で、クラスを使う選択肢を持つことができればいいかなって : デフォルトの名無しさん (ドコグロ MM32-DUKr) [sage] 2019/03/08(金) 08:15:50.67:nNie5CZRM VBAでクラスとか言ってるのはたいてい知ったかだからスルーしていい VB.NETとかC#知ってたらストレスしかたまらん : デフォルトの名無しさん (アウアウエー Saaa-/Er5) [sage] 2019/03/08(金) 08:23:55.15:URVXf1I+a そもそもVBAにクラスが欲しくなるような規模の要件を押し付けている時点で業務設計が破綻してる : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/08(金) 08:24:18.53:wvJFI7ubd こういう場合にクラス使うの? 何か違うと思うんだが。 VBAでも見た瞬間にクラス使おうと思う場合もあるんだが、そういうことは少ないな。のような話なら見た瞬間にクラスだなと思うんだけどね。 : デフォルトの名無しさん (アウアウエー Saaa-/Er5) [sage] 2019/03/08(金) 08:43:43.11:URVXf1I+a ワークシート上でデータが常に単なる二次元の表として見えているために、 その行をエンティティとして見るような発想になりにくいんだろうね 別にそれが悪いとは思わないが : デフォルトの名無しさん (ドコグロ MM97-/Er5) [sage] 2019/03/08(金) 08:55:03.19:GpWg6Xx2M 逆にいうと、ワークシート上で人間が無理なく扱えるようなデータ構造にならざるを得ないから、 生え抜きのVBerが作りがちな酷いDB設計になりにくい そういう良い意味でデータ構造に無理が利かないので、クラスでデータ構造を抽象化したくなるケースが少ないのだと思われる : デフォルトの名無しさん (エムゾネ FF32-ekDA) [sage] 2019/03/08(金) 12:25:06.22:3iX4ejeoF DBとして扱うならクラス使うことも考えるよ。 でも、DBとして扱うことも多くない。 DBならAccessにしちまうんで。 : デフォルトの名無しさん (ブーイモ MM0e-4aR2) [sage] 2019/03/08(金) 16:46:49.91:YR0R2o1EM いまAccessを使う理由って何? 無料版のSQL Server のスペックの方が上だろう。 移行が大変だから? : デフォルトの名無しさん (ワッチョイ b78e-mXZC) [sage] 2019/03/08(金) 16:53:49.99:84JrbWWM0 エンジンだけで比べてる頭の不自由な人かな? : デフォルトの名無しさん (ドコグロ MM97-/Er5) [sage] 2019/03/08(金) 16:53:54.67:GpWg6Xx2M フォーム中心のまともなデータベースアプリが比較的簡単に作れるという点では意味がある まあ今ならPowerApps使えばいいと思うけど : デフォルトの名無しさん (アークセー Sxc7-sOih) [sage] 2019/03/08(金) 17:59:29.39:uRP/bscvx PowerApps使うならPowerShellかJScript使わないとな まぁVBAは要らんわ : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/08(金) 18:55:16.76:aTSUMsKkd ??? 会社のPCに既にAccessがインストールされているのにもかかわらず、 Excelで扱うような程度のものをDBとして扱いたい時に、SQL Serverインストールはじめちゃう人? 全てにおいてセンスねーわ。 : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/08(金) 18:56:25.33:aTSUMsKkd まだSQLiteの方が理解出来るわ。 : デフォルトの名無しさん (ブーイモ MM0e-4aR2) [sage] 2019/03/08(金) 19:18:32.09:rErY3KdLM 正直君の意見はよくわからん Management Studioすごく便利だよ それにExcel からADOやODBCでつつく際のIFは大して変わらないんだからSQL Serverの方がパフォーマンスいいじゃん : デフォルトの名無しさん (ワッチョイ a37c-DZHv) [sage] 2019/03/08(金) 19:24:33.31:+kJkkfKW0 うちの会社そういうの入れる時はそれを使う理由説明して了解得るのに手間がかかる : デフォルトの名無しさん (スププ Sd32-wUBi) [sage] 2019/03/08(金) 19:46:50.70:iqA0OhOAd まあ普通はセキュリティ部門にリクエストして審査通らんと入れるのは無理だわな VBAも原則禁止だから毎回例外申請してるわ : デフォルトの名無しさん (ワッチョイ cbda-/kwh) [sage] 2019/03/08(金) 21:38:31.98:quBQyQDX0 環境申請が必要な業務を未経験者にさせるほどうちの会社はブラックじゃない : デフォルトの名無しさん (ワッチョイ b78e-mXZC) [sage] 2019/03/08(金) 21:38:33.69:84JrbWWM0 馬鹿はエンジンしか見ていない : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/08(金) 22:23:14.58:AVEVGkz60 具体的な事を言えよ : デフォルトの名無しさん (ワッチョイ b78e-mXZC) [sage] 2019/03/08(金) 23:50:58.19:84JrbWWM0 馬鹿には理解できんのか? : デフォルトの名無しさん (ワッチョイ a701-rbBm) [sage] 2019/03/09(土) 02:13:50.44:zk58FQoZ0 会社がoffice365に切り替わってAccess使えるようになった俺歓喜 : デフォルトの名無しさん (アウアウウー Sac3-tGXB) [sage] 2019/03/09(土) 02:15:54.88:w2C0D7DGa accessはスレチ : デフォルトの名無しさん (ワッチョイ de8c-91/d) [] 2019/03/09(土) 04:02:18.85:83GbxNdW0 accessって開発続いてるの? Excelを強化してAccessを見放すように思えてしょうがない : デフォルトの名無しさん (ワッチョイ b7f1-IjB2) [] 2019/03/09(土) 04:12:29.83:676zsyfX0 accessはウンコです : デフォルトの名無しさん (ワッチョイ ebdc-Ly0m) [sage] 2019/03/09(土) 07:26:22.26:j4uu9hgX0 Acccessとか。 いつの時代の遺品だよって感じだな 使いにくかったしなあ : デフォルトの名無しさん (ワッチョイ 1201-DUKr) [sage] 2019/03/09(土) 07:48:05.33:ABNsWlsO0 も書いてるけどExcelとAccessって用途が違うから当面なくならないと思うよ : デフォルトの名無しさん (ワッチョイ 7234-pA/6) [sage] 2019/03/09(土) 08:34:58.65:nDxlP6J/0 SQLとOracleとAccess使うと書き方混乱する : デフォルトの名無しさん (ワッチョイ 16da-/kwh) [sage] 2019/03/09(土) 09:22:46.51:Z89d69KF0 シート上に複数のテキストボックスを配置して、 KeyDownイベント + vbKeyRightとかvbKeyTabで、 テキストボックス間を移動出来るようにすると、 カーソルがたまに見えなくなるんだけど、回避策ない? 見えないだけで、存在はしているので、 文字は打てるんだけど、文字まで透明になっちゃう。 テキストボックスを何回か適当にクリックすると、 突然見えるようになる。 : デフォルトの名無しさん (ワッチョイ 16da-/kwh) [sage] 2019/03/09(土) 09:24:00.36:Z89d69KF0 ↑あと、わざわざ画面更新を止めたりはしていない。 : デフォルトの名無しさん (ワッチョイ 16da-/kwh) [sage] 2019/03/09(土) 09:29:10.33:Z89d69KF0 ↑あ、別のPCで開いたら再現しなくなった。 もしかして、グラフィックボードの問題? : デフォルトの名無しさん (ワッチョイ a701-rbBm) [sage] 2019/03/09(土) 10:19:05.53:zk58FQoZ0 ボードと言ってるのはたぶんドライバのことだと思うけど、その可能性はあるよね。 いくつかバージョン違いを落としてきて試してみればいい。 とりあえずは、各メジャーバージョンが上がったばかりのは除いて、それぞれ最終リビジョンのを集めてきてかな : デフォルトの名無しさん (ワッチョイ 1e90-R+To) [] 2019/03/09(土) 21:56:21.30:QAZD12fZ0 excel vbaとaccess vba どちらの方が実用的ですか? : デフォルトの名無しさん (ドコグロ MMea-/Er5) [sage] 2019/03/09(土) 22:00:31.82:BnoVO+GEM 目糞鼻糞 今時ローカルで完結する業務要件なんかほとんどない : デフォルトの名無しさん (ワッチョイ 1e90-R+To) [] 2019/03/09(土) 22:03:03.09:QAZD12fZ0 両方できて当たり前ですか? : デフォルトの名無しさん (ワッチョイ b769-F75Q) [sage] 2019/03/09(土) 22:06:43.06:vJsfVwnQ0 触り始めればすぐ覚えるよ 触る機会がexcelのほうが多いってだけ : デフォルトの名無しさん (ドコグロ MMea-/Er5) [sage] 2019/03/09(土) 22:20:16.59:BnoVO+GEM Excelだけでいいよ 今時AccessやるくらいならSalesforceでも覚えなさい : デフォルトの名無しさん (ドコグロ MMea-DUKr) [sage] 2019/03/09(土) 22:33:56.74:u5Pk3KZwM Accessに親でも殺されたのか? w : デフォルトの名無しさん (オイコラミネオ MM0f-rbBm) [sage] 2019/03/09(土) 22:36:15.94:M4mulWlpM 超小規模ならExcel テーブルの規模が大きくなってくるとAccess Accessの何がいいかって言うとオレはレポートだと思ってる。あれを使いたいがために、オレはdbアプリ(フロントエンド)はAccess一択。 テーブルの規模がさらに大きくなってきたら、テーブルだけをoracle、SQLServerなりに移行。 そもそもAccessは大規模用ではないが、わかって開発すれば大規模用に寄せていくことはできる。 : デフォルトの名無しさん (アウアウエー Saaa-/Er5) [sage] 2019/03/09(土) 22:42:40.73:ouuI5dEha シンプルに、需要がない : デフォルトの名無しさん (オイコラミネオ MM0f-rbBm) [sage] 2019/03/09(土) 22:43:14.91:M4mulWlpM Access一択は語弊があるけど、Accessだけで完結できるならAccess押し。 あとは顧客要望で、webなりc#なり様々 : デフォルトの名無しさん (ワッチョイ 1201-DUKr) [sage] 2019/03/09(土) 22:52:20.46:ABNsWlsO0 需要の無いものをMSがわざわざ開発して売ってるのかw 無職の妄想乙 : デフォルトの名無しさん (アウアウエー Saaa-/Er5) [sage] 2019/03/09(土) 23:38:00.61:ouuI5dEha 実際ほとんど放置されてるでしょ そもそもAccessってノンプログラミングで専用アプリ風のDBアプリが作れるのがメリットなのであって、そこは全く否定するつもりはないけど プログラミングするんなら他にもっと優れた選択肢はいくらでもあるよ : デフォルトの名無しさん (ワッチョイ cbda-/kwh) [sage] 2019/03/09(土) 23:47:17.35:c6PO5ulL0 With Access ってやりたくなってきたな : デフォルトの名無しさん (ワッチョイ 1e68-uGU8) [sage] 2019/03/10(日) 00:26:33.47:AZoiY/Tr0 中小企業は普通にエクセル・アクセス 使える人間が多いのが最大のメリット。事務員だけでも割とどうにかなる エクセルvbaは死ぬほど使う アクセスはvbaじゃなくSQLを覚えたほうが良い でもSQL覚えるのって結構たいへんなんだよよねぇ : デフォルトの名無しさん (ワッチョイ a37c-DZHv) [sage] 2019/03/10(日) 00:34:07.81:/SA1VNEE0 とりあえずVBAはどっちでも同じだから、あとはどういう環境を用意されることが多いかと考えると圧倒的にExcelに縛られることが多いので実用で考えるとExcelだろうか Accessでやる方が楽な時でもExcelでやらされることが多いし : デフォルトの名無しさん (ワッチョイ 1e68-uGU8) [sage] 2019/03/10(日) 00:37:17.38:AZoiY/Tr0 Accessは大抵前任者なりシステムなりが作っている場合が多いから、ほとんど触る事が無い エクセルは事ある毎に0から作ったり改修する事多いからvbaはめっちゃ役に経つ : デフォルトの名無しさん (ワッチョイ cbda-/kwh) [sage] 2019/03/10(日) 00:45:32.25:/1sFaTiS0 素人が作って不正統計したりするのもexcel : デフォルトの名無しさん (ワッチョイ a701-rbBm) [sage] 2019/03/10(日) 00:54:56.33:W5FlChvZ0 複雑になってくるとSQL知識は必要になるけど、クエリーデザイナ(QBEグリッド?)でほとんどできてしまう。 昔oracleでSQLゴリゴリ書いてたあとAccessのクエリーデザイナ見て「これ考えたやつ天才やな」とマジで思った。 選択も更新も削除も書けて、テーブル連結も表現できて、革命やなと。 : デフォルトの名無しさん (ワッチョイ 8361-Xz5k) [sage] 2019/03/10(日) 01:10:02.43:HL2UVho30 accessで帳票画面作りが便利過ぎて Excelにもレポートつけて欲しい 方眼紙神Excel化しまくり : デフォルトの名無しさん (ワッチョイ 1201-DUKr) [sage] 2019/03/10(日) 04:21:41.33:RhjsjUYS0 お前がAccess知らんだけだろw : デフォルトの名無しさん (アウアウエー Saaa-/Er5) [sage] 2019/03/10(日) 07:28:22.90:m5XGUhg5a そもそも今時ローカル限定のDBなんてほとんど役に立たなくね? ちなみに、 ttp://https://support.office.com/ja-jp/article/ ビデオ-access-web-アプリを作成する-10855ec0-3a12-4e6c-a67c-c88267f00a3c > 重要 Microsoft では、SharePoint で Access Web App を作成および使用することはお勧めしなくなりました。 代わりに、Microsoft PowerApps を使用して、Web およびモバイル デバイス用にコードなしのビジネス ソリューションを作成することを検討してください。 だそうだよ : デフォルトの名無しさん (ワッチョイ 16da-/kwh) [sage] 2019/03/10(日) 08:09:35.64:8TH6z4a90 Salesforceて。 クエリの自由度がAccess以下じゃん。 : デフォルトの名無しさん (ドコグロ MM97-/Er5) [sage] 2019/03/10(日) 08:13:57.05:jNouaRswM 仮にそうだとしてもAccessより圧倒的にスキルの需要が高いのは事実だよね それは何故だと考える? : デフォルトの名無しさん (ワッチョイ 1201-DUKr) [sage] 2019/03/10(日) 08:46:12.12:RhjsjUYS0 まじでAccessに親でも殺されたのかよw 必死にググって探してきたんだろうけど見てて恥ずかしいぞ : デフォルトの名無しさん (ワッチョイ a701-rbBm) [sage] 2019/03/10(日) 08:48:28.53:W5FlChvZ0 ローカル? Accesswebアプリ? だから、知らないやつは黙っとけと。 自分の周りで需要がないから、どこもそうだとは限らないって考えられないのか? MSが推奨してても、そうならなかったこともあるだろうに(いちいち書かない)。 : デフォルトの名無しさん (ワッチョイ a701-rbBm) [sage] 2019/03/10(日) 09:03:35.58:W5FlChvZ0 sfは使ってる側だが、Accessと比べてる意味がわからん。 それぞれメリットデメリットがあって、顧客の要望にどちらがよりふさわしいかだぞ。 Accessのときもあるし、そうでないときもある office365が広がって、Accessで作るメリットは開発側も、アプリ導入側も確実に増えてきた。 例えば、visualstudioで作るなら開発側は買わないといけない(小規模会社以外は) これだけ書いてわからないとしても、スレ違いもあるからこれ以上議論しない。Accessスレでも、くだらないから議論しない : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/10(日) 09:43:54.35:Cor3H27v0 ここは顧客のためにアプリ開発してるような人が来るスレじゃない、というのが前提にあるんじゃないの? だから話がずれてしまう : デフォルトの名無しさん (アウアウウー Sac3-tGXB) [sage] 2019/03/10(日) 10:10:19.51:LxD//o4za 個人商店で売上管理する程度か、ソフト会社でシステム管理任されてるかでは違いすぎるわな : デフォルトの名無しさん (ドコグロ MM97-/Er5) [sage] 2019/03/10(日) 10:21:42.56:jNouaRswM 顧客の要望笑さんのように目の前の要件だけ片付けてトンズラできる立場なのか、 将来も含めて面倒見ないと行けない立場なのかでも全然違うわな 後者ならさすがにAccessは正当化できないわ : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/10(日) 10:22:42.48:Cor3H27v0 スキルレベルの話というより、制約条件が自分要因なのか顧客要因なのかが大きい。 こんな場所で顧客要因の話なんか相応しくないだろ、ってことだ。 : デフォルトの名無しさん (ラクッペ MM97-F75Q) [sage] 2019/03/10(日) 10:42:00.95:U7oWyg8EM とにかく安く作れと命令されればこうもなろう! : デフォルトの名無しさん (ワッチョイ a3e6-uGU8) [sage] 2019/03/10(日) 10:45:41.83:9Z3HOdWo0 winformやwpfがaccessより優れていればよかったんだがな : デフォルトの名無しさん (ワッチョイ 1e68-uGU8) [sage] 2019/03/10(日) 11:17:38.37:AZoiY/Tr0 分かる。なんか色々解決した気がする Silverlightも死産だった : デフォルトの名無しさん (ワッチョイ 16da-/kwh) [sage] 2019/03/10(日) 11:28:51.41:8TH6z4a90 そりゃググればいくらでも情報出てくるAccessとは比較にならんからな。 : デフォルトの名無しさん (アークセー Sxc7-sOih) [sage] 2019/03/10(日) 11:34:33.33:UR1GQMqix えっと、、、ここExcel VBAのスレですよね? : デフォルトの名無しさん (ワッチョイ b78e-mXZC) [sage] 2019/03/10(日) 11:44:50.15:z6hGNEnV0 馬鹿はAccessのエンジン部分だけしか見ていない : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/10(日) 12:00:46.26:Cor3H27v0 どうせくだらないオレオレ都合を一般化してるんだろ : デフォルトの名無しさん (アークセー Sxc7-sOih) [sage] 2019/03/10(日) 13:42:15.79:UR1GQMqix Access VBAは提供機能の環境結合度がExcel VBA以上に強いイメージを持ってるんだけど、Office365になってもバージョンアップによる互換性の問題は変わらない感じ? : デフォルトの名無しさん (ブーイモ MM32-ehMm) [sage] 2019/03/10(日) 15:38:12.98:DYQTDh8PM GUIをExcel、データストアをAccessとするアプリをVBAで作るのが最強ってことですね : デフォルトの名無しさん (ワッチョイ a701-rbBm) [sage] 2019/03/10(日) 16:10:54.47:W5FlChvZ0 提供機能の環境結合度が何を言ってるかわからないが、昔作ったやつの改造質問が時々来て、軽く動かす範囲において互換性に問題があったことはない。 互換性問題でお客様から問い合わせ来たこともない。mdbの話し。 違います(indeed風w) それぞれで無理なく完結できるならわざわざ分けない。そもそも「GUIをExcel」とするほどの優位はない。 データストア(テーブル)をシートでゴニョゴニョできる範囲ならExcelでやってもいい。デカくなるとAccess。 最近経験したのは、Accessのグラフが昔のママだったので、新しいグラフを使うためにExcelに結果出力することにした (ながっ。Accessスレ過疎ってるけど、そっちで書いたとここに書けば何人か見に行ってくれると思う) : デフォルトの名無しさん (ワッチョイ 7335-uGU8) [sage] 2019/03/10(日) 16:46:27.59:QRthXdOt0 Excelでも VBAでも 質問スレでもない でもどうせ平日は質問もないし、土日はこういう流れokみたいにしてもいいんじゃないかな : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/10(日) 17:36:22.03:hFpGjFbxd どうでも良いけどセンスね―奴が多いな。 Salesforceってw まず、会社で自分が使う環境になってからの話だろうに。 AccessやExcelと同列で語るとは笑わせる。 SQLサーバーも一緒。 Accessは単体で完結する使われ方も有るけどフロントエンドで使われる場合もある。 で、どちらの場合もSQLサーバーとは比較の対象にはならない。 俺はトヨタとかホンダとかと同じ知名度の会社で働いてるが普通にAccess使ってる。 というか、大きな所は結局いろんなツール使ってる。 : デフォルトの名無しさん (アークセー Sxc7-sOih) [sage] 2019/03/10(日) 17:53:03.67:UR1GQMqix 我慢できず煽りと自慢を入れちゃう辺りがかわいい : デフォルトの名無しさん (ワッチョイ 7335-uGU8) [sage] 2019/03/10(日) 18:14:41.27:QRthXdOt0 知名度で比較してもその中には昭和みたいなやり方の企業は山程あるんだが : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/10(日) 18:19:33.93:hFpGjFbxd あるかもね。 うちの会社は違うけど。 : デフォルトの名無しさん (ワッチョイ 7335-uGU8) [sage] 2019/03/10(日) 18:21:35.02:QRthXdOt0 と、その昭和な会社も思ってるからな レスだけだと実際どうかは判別つかない : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/10(日) 18:25:09.94:hFpGjFbxd 馬鹿でかいDBサーバーが何個もあって、ちゃんとしたシステムもある。 けど、いろんな部所が独自にツール作ってるし、その馬鹿でかいDBに参照だけさせて貰って、Accessをフロントにしてるのもある。 Excelをフロントにしてるのもあるな。 もちろん、好き勝手が出来るわけじゃないが。 : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/10(日) 18:34:31.65:hFpGjFbxd そもそも大きな会社のことが分かってない発想だな。 大きな会社は新しい考え方してる部署もあるし、古い考え方してる部署もある。 普通に色んな部署があるからAccess使う所もたくさんある。 : デフォルトの名無しさん (ワッチョイ cbda-/kwh) [sage] 2019/03/10(日) 18:51:24.29:/1sFaTiS0 それでもAccessはないかもしれない : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/10(日) 19:12:48.88:Cor3H27v0 それにしてもAccessに批判的な意見に対して「センスが悪い」と言うのは変なバイアスを感じるよな : デフォルトの名無しさん (アークセー Sxc7-sOih) [sage] 2019/03/10(日) 19:29:50.41:UR1GQMqix 全社システムを入れてデジタル化を推進しようとしてるかと思えば、部署や事業分野毎に統制レベルがまちまちだったりして結局色んなシステムやアプリを使ってたりするのがいわゆる大企業だよな もちろん電話FAX紙資料頼みの昭和的なやり方の部分が残ってることもある : デフォルトの名無しさん (ワッチョイ 975f-Qqsz) [sage] 2019/03/10(日) 19:30:28.09:FHxk+Xrb0 大抵の部署は「エクセルワードパワポ使えりゃいい」ってことでHome&Business買って終わりだからな そもそもAccessに触れる機会がない : デフォルトの名無しさん (ワッチョイ b769-F75Q) [sage] 2019/03/10(日) 19:41:28.13:6Vmijfcb0 3つのエクセルファイル開いて終わったら 3つともcloseしてquiteしてるんだけど タスクマネージャみたら3つのエクセルがのこったまま なんでー? : デフォルトの名無しさん (ワッチョイ cbda-/kwh) [sage] 2019/03/10(日) 19:46:40.37:/1sFaTiS0 ういるすじゃね : デフォルトの名無しさん (ワッチョイ 7335-uGU8) [sage] 2019/03/10(日) 19:57:44.50:QRthXdOt0 >799 20代前半? : デフォルトの名無しさん (ワッチョイ a37c-DZHv) [sage] 2019/03/10(日) 20:53:30.17:/SA1VNEE0 プロセスが残ってるってことだよね? 3つのエクセルファイル開く前はプロセス0個だった? closeしてquiteしてるオブジェクトはちゃんと合ってる? : デフォルトの名無しさん (ワッチョイ 1201-DUKr) [sage] 2019/03/10(日) 22:01:10.58:RhjsjUYS0 いわゆるそれなりの企業でOfficeを個々の部署で買ってるところってそんなにないだろ : デフォルトの名無しさん (ワッチョイ 975f-Qqsz) [sage] 2019/03/10(日) 22:37:21.73:FHxk+Xrb0 ウチの場合各部署の上長に選択肢与える方式だから Publisher使う広報部以外Professional選ぶとこほとんどないよ : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/10(日) 23:03:17.67:hFpGjFbxd 論点の分かってないバカは何処にでもいるな。 つまり結論は、Access使ってるということだよ。 それにAccessと比較できるようなソフトが無い。 それが分からんからセンスがね―と言われる。 FileMaker挙げられたら分かってる奴だろうが。 そりゃ残念だったな。 Officeは部署で買うもんじゃ無いと思うぞ。 聞いたこと無いけど。 うちの会社は全員Access入ってると思うぞ。 : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/10(日) 23:04:10.67:hFpGjFbxd センスが悪いのは対抗に成りようがないもんを挙げてるからだよ。 : デフォルトの名無しさん (ワッチョイ 1201-DUKr) [sage] 2019/03/10(日) 23:13:37.64:RhjsjUYS0 個々に発注してるの? ボリュームライセンス使わないの? : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/11(月) 00:05:51.48:tsrenNBW0 AccessやめてSQLServerにしろって言われて移行の手間以外の理由で嫌がる人間がいるだろうか? いや、いない : デフォルトの名無しさん (アークセー Sxc7-sOih) [sage] 2019/03/11(月) 00:06:57.17:lsnxSivOx なんか他人を見下したいだけのタイプっぽくてウザいからNGしたわ 仮にこいつがAccess詳しくてもこいつから教わりたくないなって感じ : デフォルトの名無しさん (ワッチョイ 927c-fEQS) [] 2019/03/11(月) 00:09:57.12:sN5dooJH0 VBAより細かいことができて簡単でメジャーでお勧めってJAVAでいいの? 用途は個人で簡単なアプリを作る程度です。 : デフォルトの名無しさん (ワッチョイ a3e6-uGU8) [sage] 2019/03/11(月) 00:11:11.53:tJkNrW1I0 Access取り上げられてManagement Studio渡されたらうにょる : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/11(月) 00:12:43.40:B6nWiYCUd SQLサーバーにするようなのは手間もそうだが、規模が違うだろ。 そんな話になるなら最初からExcelやAccessの話になんてなってない。 そんなこともわからね―のかよ。 自由にできる中小とは違うんだよ。 : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/11(月) 00:16:15.83:B6nWiYCUd それは微妙だな。 細かいことは出来ない場合がかなりあるだろうな。 簡単かどうかも微妙。 難しさの方向性も違うし。 : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/11(月) 00:21:09.07:B6nWiYCUd 問題は何で組むかって話になるだろうね。 昔、MSDEで組んでた時に使ってたけど、Accessなんか競合するようなもんじゃない。 まあ、VBAでも組めるからExcelやAccessから繋いでも良いんだけど、それって本末転倒じゃね? 結局VisualStudioで組む話に成るんだろうな。 : デフォルトの名無しさん (ワッチョイ b78e-mXZC) [sage] 2019/03/11(月) 07:05:51.99:JOj7lbWG0 馬鹿はエンジン部分だけしか見ていない : デフォルトの名無しさん (ドコグロ MM32-DUKr) [sage] 2019/03/11(月) 07:19:27.24:n6vPhCvaM 想定の範囲内でしたね Access以上に帳票作成が楽なソリューション出してください あなたならできるはずです あっ、もちろんコストは想定の範囲内でお願いしますよ : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/11(月) 09:28:28.62:tsrenNBW0 ExcelからSQLServerのデータをつつけばいいじゃん このスレ的にも趣旨にあう : デフォルトの名無しさん (ドコグロ MM32-DUKr) [sage] 2019/03/11(月) 10:13:10.23:n6vPhCvaM 印刷に難のあるExcelで帳票作成? わざわざ茨の道を進む提案は想定の範囲外でしたよ 次回からもう来なくていいですw : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/11(月) 10:35:34.29:tsrenNBW0 帳票?印刷? そんなもんPCでやるわけないでしょ 君こそふざけてるんじゃないの? : デフォルトの名無しさん (オイコラミネオ MM0f-rbBm) [sage] 2019/03/11(月) 10:49:41.28:fslMg+hgM えっ? : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/11(月) 10:57:18.05:tsrenNBW0 帳票印刷なんて古い基幹システムでやるもんだし、レガシーでつまんない仕事だからPCでやりたくないでしょ : デフォルトの名無しさん (ドコグロ MM32-DUKr) [sage] 2019/03/11(月) 11:09:41.27:n6vPhCvaM 一体何を言ってるんだろう… w : デフォルトの名無しさん (ドコグロ MM32-DUKr) [sage] 2019/03/11(月) 11:11:45.09:n6vPhCvaM お前さん、例えばスマホとか契約した時に契約内容を記載した紙貰ってないかい? 帳票ってそう言う奴のことな : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/11(月) 11:17:50.98:tsrenNBW0 それをPCのアプリで出力しないでしょ? 現場のPCでやるのは出力された帳票イメージをプリンタに送ることさ : デフォルトの名無しさん (ワッチョイ ebce-2wIc) [sage] 2019/03/11(月) 11:33:05.59:Mb6GwggX0 まあホスト側でPDFを作っちゃって、あとは印刷するだけみたいなシステムも最近は増えてるけど、 送られて来るのは印刷したい数字だけで、クライアント側で印刷イメージを組み立てるシステムだって普通にあるぞ : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/11(月) 11:34:08.24:tsrenNBW0 それにそんなことは営業所レベルのことじゃない? : デフォルトの名無しさん (スフッ Sd32-2wIc) [sage] 2019/03/11(月) 11:44:06.02:04nfU8jWd ここは大企業やサーバ管理者専用スレじゃないし 世の中にはパソコン1台だけで経理や発注をやってるような中小零細だってある 現実にExcelで作られた帳票は世界中を駆け巡ってる : デフォルトの名無しさん (ドコグロ MM32-DUKr) [sage] 2019/03/11(月) 12:22:04.66:n6vPhCvaM お前一度帳票ソリューションとかでググってみ いろんな形態あるから1種類だけで語ると恥かくぞ : デフォルトの名無しさん (アウアウウー Sac3-cVal) [sage] 2019/03/11(月) 12:56:27.77:zh+jpn1Ya 印刷は確かに若干弱いがエクセル帳票は悪くないアイデアだと思う プログラムで生成物からデータを取得できるから帳票作成のスモールテストを作りやすい まあCIサーバーで動かないと意味がないのでVBAの出番はないけど : デフォルトの名無しさん (ブーイモ MMdb-4aR2) [sage] 2019/03/11(月) 13:13:58.34:M7+7uBBxM 世の中全体なんて言ったらきりないでしょ が言うDOCOMOショップとかの話に反論したのさ : デフォルトの名無しさん (ドコグロ MM32-DUKr) [sage] 2019/03/11(月) 17:10:59.27:n6vPhCvaM 「例えば」っていう文言すら理解できないの?w てか、話の流れでわかるだろ : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/11(月) 18:08:31.25:tsrenNBW0 いやいやいやいや 「帳票なんて基幹システムで出すもんでPCじゃしないでしょ」という意見に対しては携帯ショップの例を出してきたんだぞ : デフォルトの名無しさん (ワッチョイ 7335-uGU8) [sage] 2019/03/11(月) 18:36:20.35:Rf81Fxun0 ガリ版印刷かと思った : デフォルトの名無しさん (ワッチョイ 7335-uGU8) [sage] 2019/03/11(月) 18:37:23.11:Rf81Fxun0 言わんとする事は分かるけど、 ID:tsrenNBW0 は色々と日本語おかしいぞ 入って半年の新人か、酔っぱらいが話ししているようだ : デフォルトの名無しさん (ドコグロ MM32-DUKr) [sage] 2019/03/11(月) 18:39:03.34:n6vPhCvaM Excelはページ内の列に縛られるから結構大変だよ 見積書とかでお客様名称の位置を変えたら一覧表に影響するとか 特に複数の表を位置ページに収めるとかが大変すぎる : デフォルトの名無しさん (ドコグロ MM32-DUKr) [sage] 2019/03/11(月) 18:39:39.43:n6vPhCvaM 位置ページ ⇒ 1ページ : デフォルトの名無しさん (ドコグロ MM32-DUKr) [sage] 2019/03/11(月) 18:40:36.46:n6vPhCvaM そこまで言うならすべての携帯ショップの帳票システムが1種類しかないことをソース付きで示してくれ : デフォルトの名無しさん (オイコラミネオ MM0f-rbBm) [sage] 2019/03/11(月) 18:40:41.61:fslMg+hgM 帳票は基幹システムでも出すし、現場のAccessからも出します。 携帯ショップのはあくまで例えだが、アプリで出してても何らおかしくない。webからサーバで作成した帳票出してたとしても世の中全てがそうじゃない バカはすっこんでろ : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/11(月) 18:48:10.82:tsrenNBW0 ああ、じゃ携帯ショップの話は例が悪かったってことで引っ張るのはやめにするよ : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/11(月) 18:52:52.30:tsrenNBW0 もともとAccessなんかよりSQLServer使えばいいのに、という意見に対して「センスが悪い」と評したやつがムカつくんだよね それってただの自己擁護じゃねえの? : デフォルトの名無しさん (ブーイモ MM32-pA/6) [sage] 2019/03/11(月) 18:57:56.68:+UqUSWhfM ExcelVBAスレで何言ってんだって話だよな : デフォルトの名無しさん (アウアウウー Sac3-q+B7) [] 2019/03/11(月) 19:19:43.98:VQvu/Jc3a まーまー、みんなケンカするなよ。ケンカしたくてここに来てるやつはどっか行ってくれ。楽しく、とまではいかないにしても、他人の意見を尊重して、まったりと行こうぜ : デフォルトの名無しさん (アークセー Sxc7-sOih) [sage] 2019/03/11(月) 19:25:03.45:mobnRMp/x VBAスレでイキる奴も煽られる奴もダサすぎ : デフォルトの名無しさん (ワッチョイ 9794-Ta+E) [sage] 2019/03/11(月) 20:02:00.38:Qce4TTJA0 他人からファイルが返ってきたときに印刷プレビューになってるとイラっとする : デフォルトの名無しさん (ワッチョイ cbda-/kwh) [sage] 2019/03/11(月) 20:41:29.39:SWNQzsKE0 そんな性格だから禿げたんだな : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/11(月) 20:46:16.50:tsrenNBW0 自分はそれじゃなくてアレがイラッとする だからよく ActiveSheet.DisplayPageBreaks = False をやる : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/11(月) 21:21:38.01:B6nWiYCUd 最初に「今Accessを使う意味」とか、言い出した奴が都合が悪くなると人のことを上から目線だとか言い出すからなあ。 そもそもの話はAccessにしちまうからExcelでDB処理することは多く無いって話から始まっている。 (実際は結構あるけどAccessと食い合うって話) 最初から、バックエンドSQLサーバーでフロントがExcelって話なら、SQLサーバーじゃなくて正にExcelでDB処理の話になって、俺の主張に一致するから反論にならん。それとも絶対にExcelフロントでAccessフロントはあり得ないって話ならもう一度センスね―と言ってやる。 Excelフロントはあり得るけどAccessフロントの方がよりあり得るわ。 いやいやそういう構成ではExcelでDB処理には該当しないというなら、ExcelでDB処理とはExcel単体でのDB処理ということになるから、それに対しての比較対象にSQLサーバー持って来たの?という話になる。 この場合もやっぱりセンスね―と言ってやる。 だからそもそもの話に反論としてSQLサーバーを挙げるってことはExcelフロントではないということを意味するんだろう。 つまりOffice系では無く、開発系で組むという話だろう。 Accessで済むようもん、場合によってはExcelで済むようもんをC#とかを使って組むの? 部署内での打ち合わせ資料をWordで作ると言ったらPagemakerの方が良いと言われた気分だわ。 : デフォルトの名無しさん (ワッチョイ cbda-/kwh) [sage] 2019/03/11(月) 21:56:59.54:SWNQzsKE0 accessが好きとか嫌いとか最初に言い出したのは誰なのかしら : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/11(月) 22:03:37.96:tsrenNBW0 3回読んだが意味がよく分からん 俺の最初の主張はから始まってるんだが、「データはExcelじゃなくてAccessに置け」という他の意見に対して 「いや今時AccessなんかじゃなくてSQLServerでしょ」というのが意図だ。 そっからなんかこじれてるんだが、ここでの俺の前提はフロントUIはエクセルというものなんだよね。 ExcelからのSQL発行という点でUI表面上の差が大してないと考えて比較している。 : デフォルトの名無しさん (ワッチョイ b78e-mXZC) [sage] 2019/03/11(月) 22:45:47.44:JOj7lbWG0 馬鹿は死ねよ : デフォルトの名無しさん (ワッチョイ a3e6-uGU8) [sage] 2019/03/11(月) 23:03:46.33:tJkNrW1I0 フロントがExcel程度でなんとかなるデータならAccessで十分だろ すでに大量のデータがSQLServerに溜まっているならそっち使えばいいけど Excelでデータ入力とか考えただけでも吐きそう : デフォルトの名無しさん (ワッチョイ 7234-pA/6) [sage] 2019/03/11(月) 23:17:24.96:sG7ktWvJ0 まだやってんのかよ : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/11(月) 23:24:53.12:tsrenNBW0 フロントでやるのはデータ分析だろう。 データ入力は現場の仕事。 フロントと現場を混同してるだろ? : デフォルトの名無しさん (ワッチョイ a3e6-uGU8) [sage] 2019/03/11(月) 23:31:06.64:tJkNrW1I0 二人以上でAccess使うなんて想像してなかったわ。すまん : デフォルトの名無しさん (ワッチョイ a701-rbBm) [sage] 2019/03/12(火) 01:08:58.03:aDT3+eco0 データ入力画面もフロントだよ。 現場でどうデータ入力させようとしてるのか書いてみろよ。 : デフォルトの名無しさん (ワッチョイ 7335-uGU8) [sage] 2019/03/12(火) 01:16:33.47:VCAYIPgk0 あの〜そろそろ〜 : デフォルトの名無しさん (ワッチョイ b78e-mXZC) [sage] 2019/03/12(火) 01:28:26.03:Ed2A5qJf0 ID:tsrenNBW0 馬鹿は早く死ねよ : デフォルトの名無しさん (アークセー Sxc7-sOih) [sage] 2019/03/12(火) 01:58:18.19:ZdQx8dmlx 端から見てると何でこの人たちがVBAやらされる羽目になってるのか分かるよね : デフォルトの名無しさん (ワッチョイ 1201-DUKr) [sage] 2019/03/12(火) 06:19:34.26:bIQY567R0 むしろこんな奴等に何かやらせる羽目になってる上司に同情するわ : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/12(火) 07:21:53.89:hut6v0dp0 弊社では無理です : デフォルトの名無しさん (JP 0H6e-q+B7) [sage] 2019/03/12(火) 07:54:30.64:HcsazPCZH 2日ぶりに覗いたらまだ同じ話してて草 : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/12(火) 08:15:48.17:hut6v0dp0 うちなんかSQLServer導入して部署内誰でも使えるようにセッティングしてるのにずっとAccess使い続けてる。 Excel VBAからADOで繋げてるパターンなんで移行は手間じゃないと思うんだけど2〜3人が試しに使い始めただけ。 思い通りになんていかないよ。 社内稟議通した人がお気の毒w : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/12(火) 08:18:57.13:xgWEcpqAd 八ァ? から始まってるんだよな。 その前に「デ―タはExcelじゃなくてAccessに置け」なんて意見が何処にある? の前にAccessのことを言ってるのはしか見当たらないんだが。 で、俺が言ったは別に「デ−タはExcelじゃ無くてAccessに置け」なんて言って無いんだが。 誰かにこうしろ等と言って無いし、データをAccessに置く等と限定してないぞ。 その上、「今時Access」? お前は一体何様だよ。 どっちが上から目線だ? 上から目線でも回答が頓珍漢じゃなければセンスね―なんて書かね−よw : デフォルトの名無しさん (スプッッ Sd52-ekDA) [sage] 2019/03/12(火) 08:24:06.51:xgWEcpqAd それはちょっと悲しいね。 まあ、ファイル単位で移動出来るメリットもあるからDBサーバーあってもAccess単体ってのもあり得るけどな。 : デフォルトの名無しさん (オイコラミネオ MM0f-rbBm) [sage] 2019/03/12(火) 10:47:16.64:InKVz4tPM それはね、ローカルに置いてる(としとこう)Accessの中に人に見せられないデータがあるからだよw : デフォルトの名無しさん (ドコグロ MMea-DUKr) [sage] 2019/03/12(火) 12:45:42.87:fAXK62aoM そもそもそれエンジンの話なのか帳票とかのデザインの話なのかはっきりしてくれ あと人は今困ってないなら移行なんてしないよ、トラブル招くかもしれないしな 移行させたいならAccess使用禁止ぐらいしないとダメ どうせ導入した奴もそこまで腹くくってないだろ : デフォルトの名無しさん (ブーイモ MMdb-4aR2) [sage] 2019/03/12(火) 13:22:50.41:Kg1wec9nM 本当にあったりしてなw : デフォルトの名無しさん (ラクペッ MMdf-/Er5) [sage] 2019/03/12(火) 15:31:02.26:4U4zzI9jM SQLサバだとテーブル設計とか後からいじりにくいんだよな 連結フォームに全データ表示!とかも気楽に出来なくなるし : デフォルトの名無しさん (アウアウウー Sac3-cVal) [sage] 2019/03/12(火) 18:07:30.07:0BPWRBQDa もしかしてクライアントサイドの管理ツールとか知らないのでは? : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/12(火) 21:59:22.23:hut6v0dp0 テーブルを移行して欲しいんだけどやってくれないって状況 導入した人は権力があるのでそのうち強制するかも : デフォルトの名無しさん (ワッチョイ a701-rbBm) [sage] 2019/03/12(火) 22:19:10.50:aDT3+eco0 移行するメリットがないとねぇ レコード数が少ないと速度なんてほとんど変わらないし… 100万レコードでも、きちんと作られてればAccessでも十分実用になるし… まずは、めちゃ処理時間がかかるやつ一つを移行。ストアド作り込んで速くなるのを見せるとか。 せっかくSQLServer使うなら、ストアド使わないと勿体ない。ただレコード持ってるだけの箱になってしまう。 ストアドはとっつきにくいと思うが、レコードをこねくり回すような時間かかる処理には効果絶大。 逆に言うと、軽いデータや処理のmdbは移行後回し。(というより、そんなの移行しなくてよろしい。労力に見合わない) : デフォルトの名無しさん (ワッチョイ a701-rbBm) [sage] 2019/03/12(火) 22:41:48.72:aDT3+eco0 いきなりストアドで大規模ロジックを書こうとしても、どう書くべきか(どう書くのがふさわしいか)わからないと思う。 小ロジック大量レコード処理辺りから書いていきましょう : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/12(火) 22:50:26.01:hut6v0dp0 自分含め誰もspとか知らない 一般的なプログラミングは割とできて、みんなVB/VBA、C#、C++、rubyとかでなんとかしようとしてる まさにDBを箱としか見てない : デフォルトの名無しさん (アウアウウー Sac3-cVal) [sage] 2019/03/12(火) 23:05:56.66:0BPWRBQDa ストアドはRDBの設計思想に反する邪悪な存在なので可能な限り避けるべきです 最適化をかけにくいのでインデックスの効いたクエリに比べて速度も遅くなります : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/12(火) 23:30:38.78:hut6v0dp0 マジで!? : デフォルトの名無しさん (アウアウエー Saaa-/Er5) [sage] 2019/03/12(火) 23:43:55.90:hqmBJoBXa Webシステムで全て開発側の手元にあるんならストアドなんか害悪しかないけど、 VBAだったらストアドやビューを最大限に活用して可能な限りDBMS側に寄せるべき 神VBAは作りっぱなしで逃げられるならいいけど、後々Excel側の変更やDB側のスキーマ変更で地獄を見ることになる : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/12(火) 23:46:34.37:hut6v0dp0 ExcelからAccessのデータを取得するきはこういうコードをクラス化してAccess立ち上げる必要ないようにした。 ttp://http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130_030.html 他言語使ってる人の事情は知らんけど似たような感じだと思う。 SQLサーバ向けのもADOだからインターフェース変えずにできた。 せっかくツールったんだから移行しろよ! と思ってたけどもう何がいいのかわからんくなった。 : デフォルトの名無しさん (ワッチョイ 1201-DUKr) [sage] 2019/03/13(水) 00:27:28.10:lH3YwFhl0 それエンジンだけをすげ替えろって言ってるってことだよね? そりゃわざわざ移行しないよ メリットないから強権発動しかないと思うよ : デフォルトの名無しさん (ワッチョイ 1201-DUKr) [sage] 2019/03/13(水) 00:29:37.94:lH3YwFhl0 はなんか勘違いしてるだけ ストアドは簡単に言うとサーバー側でロジックが動くだけの話だからインデックスが効くかどうかはストアドが発行するSQLに依存する : デフォルトの名無しさん (アウアウエー Saaa-/Er5) [sage] 2019/03/13(水) 00:41:34.27:jknGRCgKa 879が批判してるのは、ストアドの中でループしたり一時テーブルを安易に多用したりするような使い方じゃないのかな : デフォルトの名無しさん (ワッチョイ a3e6-/Er5) [sage] 2019/03/13(水) 00:41:51.32:wiEoxIAU0 そのめんどくさいselect文を作るのがaccessやssmsじゃね? : デフォルトの名無しさん (アウアウウー Sac3-cVal) [sage] 2019/03/13(水) 00:46:32.81:A37ahhw6a インデックスが効かないとは言ってませんが? SQLなら期待される結果を返す範囲で最適化して高速化する余地があります これはSQLが宣言的な言語だからできることです 最終的な答えが同じなら途中の結合や絞り込みを入れ替えたり省略することが可能です 逆にストアドは手続き型なので基本的に定義した順に処理が逐次実行されます 全く最適化できないわけではありませんが宣言的な言語と比べるとこの順序があるという性質のせいで制約が強く最適化のかかりが弱くなります : デフォルトの名無しさん (アウアウエー Saaa-/Er5) [sage] 2019/03/13(水) 00:50:37.91:jknGRCgKa 理念には同意するけど、VBAスレでそれ言う? Excel VBAこそ、本来は宣言型であるものを手続き型に落としてしまいパフォーマンスを低下させている例の最たるものだよ : デフォルトの名無しさん (ワッチョイ 1201-DUKr) [sage] 2019/03/13(水) 00:52:52.41:lH3YwFhl0 変な使い方を前提にストアドが遅いとか言われても困る : デフォルトの名無しさん (アウアウエー Saaa-/Er5) [sage] 2019/03/13(水) 00:55:59.30:jknGRCgKa 実際、ぐるぐるSQLを書いちゃうような人はDBに寄せた設計になるとストアド使いたがるからね : デフォルトの名無しさん (ワッチョイ 1201-DUKr) [sage] 2019/03/13(水) 00:57:03.71:lH3YwFhl0 だからその逐次実行を行うのがクライアントなのかサーバーなのかが違うだけでしょ そりゃストアドと単一のSQL比べたらストアドの方が遅いだろうけどクライアントが同様の処理すること思えば全体としては(ちゃんと設計されてりゃ)速くなるでしょ : デフォルトの名無しさん (ワッチョイ a3e6-/Er5) [sage] 2019/03/13(水) 00:59:49.50:wiEoxIAU0 SQLをコンパイルする必要がないからストアードの方が速くね? : デフォルトの名無しさん (ドコグロ MMb3-/Er5) [sage] 2019/03/13(水) 01:13:08.97:GE2OVSGdM 理論的にはそうだけど、現実にはそこは全く関係ない SQLのコンパイル時間はサーバーとの通信のコストと比較すれば無視してよい : デフォルトの名無しさん (アウアウエー Saaa-/Er5) [sage] 2019/03/13(水) 01:22:09.36:jknGRCgKa そもそもSQLの発行がパフォーマンスに響くような状況はSQLの粒度が小さすぎる 大抵そういう時はうまく纏めれば一桁速くなる : デフォルトの名無しさん (アウアウウー Sac3-cVal) [sage] 2019/03/13(水) 01:32:35.47:A37ahhw6a アプリケーションとストアドの比較をしているのではなく同じ結果をもたらすSQLとストアドの比較をして言った そもそもアプリケーションに書かれたビジネスロジックをそのままストアドに移植する時点で論外なので比較する発想がなかった : デフォルトの名無しさん (ワッチョイ 1201-DUKr) [sage] 2019/03/13(水) 04:57:47.34:lH3YwFhl0 > 同じ結果をもたらすSQLとストアドの比較をして言った そりゃSQL単体で書けるならその方が速いわなw SQL単体で書けるのにストアド使うとか普通あり得ないでしょ? : デフォルトの名無しさん (アウアウウー Sac3-cVal) [sage] 2019/03/13(水) 06:19:07.90:A37ahhw6a 残念ながらありえます しかも少なくありません 単にSQLが苦手な人 ストアドの方が速いと思ってる人 深く考えずアプリケーションコードストアドに移植してしまう人 SQLでいいのにストアドを書いてしまう人というのは何処にでも居ます : デフォルトの名無しさん (ドコグロ MMb3-DUKr) [sage] 2019/03/13(水) 06:45:04.68:JacIk+SfM お前の周りのことなんか知らんよw : デフォルトの名無しさん (アウアウウー Sac3-cVal) [sage] 2019/03/13(水) 07:00:38.50:A37ahhw6a このスレッドにもいましたよね : デフォルトの名無しさん (ドコグロ MMb3-DUKr) [sage] 2019/03/13(水) 07:12:08.08:JacIk+SfM 何を言いたいのかさっぱりわからんw : デフォルトの名無しさん (アウアウウー Sac3-cVal) [sage] 2019/03/13(水) 08:04:29.56:A37ahhw6a 煽りか : デフォルトの名無しさん (ワッチョイ 9290-uGU8) [] 2019/03/13(水) 10:36:45.92:4v7XhTis0 一体いつまで同じ話をぐだぐだ続けるつもり? プログラマ板のどっか雑談スレでやれよ低能プログラマどもは : デフォルトの名無しさん (ブーイモ MM0e-ehMm) [sage] 2019/03/13(水) 11:12:26.48:JQlBKVP4M だってここ以外ではマウントとれないんだもの : デフォルトの名無しさん (ワッチョイ 1201-ouaW) [sage] 2019/03/13(水) 15:18:57.45:6SLKDaoM0 セルA1に =aaa と書き込んで数式エラーを作っておきます その上で Dim ary() As Variant ary = Activesheet.Range("A1:A10") MsgBox ary(1, 1) 結果: 型が一致しません ary(1, 1)をVariant型の変数に代入する場合は何も起きないので MsgBoxに表示するときに内部的にString型に変換するため エラーがおきるのだろうと思っています それはともかく、ary(1, 1) からエラー値を削除したいのですが ary(1, 1) = "" MsgBox ary(1, 1) とやってもダメでエラーが出ます ary(1, 1) を何もない状態にするにはどうしたらいいですか? ary(1, 1)はこの先いろいろな操作をすることになるため、そのたびに どこに隠れているか分からない数式エラーをチェックするのは大変なのです : デフォルトの名無しさん (ワッチョイ 1201-ouaW) [sage] 2019/03/13(水) 15:24:34.25:6SLKDaoM0 ごめんなさい は取り消します 何か他の要因がからんでエラーが起きていたようです 上の例だとエラーはおきませんでした ごめんなさい : デフォルトの名無しさん (ワッチョイ 1e68-uGU8) [sage] 2019/03/13(水) 15:25:55.52:ril+FLd/0 とりあえず Dim ary() As Variant はエラーが出るので Dim ary As Variant に変更している : デフォルトの名無しさん (ワッチョイ 9212-UKFF) [sage] 2019/03/13(水) 15:26:27.13:YE/558h40 あー、荒れてるところ申し訳ないのですが、 ちょっと、質問…いいですかね… 初心者なんでさっぱり文が思いつかないから 例文みたいなのを作ってほしいんですけど… B3:F○○の表があります。 ・B3:F10にそれぞれセルに名前を付けていきたい。 ・B3を「_0」としてC3「_2」というように、+2ずつ、 F3「_8」までいったらB4「_10」と同じように+2して、 最後のF10までやりたい。 こんな感じのってできますか?? 他のシートでも同様の作業を行ないたくて、 B3から、F列の表で、数字が入力されている部分だけ名前をつけたいから、 if文とかで、数字が入力されていなかったら名前をつけるのを終わるみたいなできたら嬉しいです。 : デフォルトの名無しさん (ワッチョイ 1e68-uGU8) [sage] 2019/03/13(水) 15:27:20.71:ril+FLd/0 あ、はい。 : デフォルトの名無しさん (ワッチョイ 1e68-uGU8) [sage] 2019/03/13(水) 15:38:57.02:ril+FLd/0 先に範囲選択してからマクロ実行 セルに何も入ってない場合に終了(数字かどうかは判定していない) Sub Macro1() 番号 = 0 For Each セル In Selection If セル.Value = "" Then Exit Sub Else ActiveWorkbook.Names.Add Name:="_" & 番号, RefersTo:="=" & セル.Address 番号 = 番号 + 2 End If Next End Sub : デフォルトの名無しさん (ワッチョイ 12e7-+lbj) [sage] 2019/03/13(水) 16:22:51.30:kv9h9xOp0 以前、ifの条件に合わない時に実行したい時はthenに続けてelseと書いて実行したい内容を書くよりも、条件をnotで括った方が処理が速いと言われました 実際に計測したら確かに僅かな差が有ったのですが何故なのでしょうか : デフォルトの名無しさん (スップ Sd32-UKFF) [sage] 2019/03/13(水) 17:11:51.63:mnfDUUl9d ありがとうございます! やってみます! : デフォルトの名無しさん (アークセー Sxc7-sOih) [sage] 2019/03/13(水) 20:59:56.96:p9thMYjCx Ifブロックは先頭の条件から逐次Boolean評価していって、一度Trueと判定されるとそこで条件を満たす場合の処理を実行し、残りの条件は評価しない仕組み Elseのケースでの処理を実行するとなると、If条件とそれ以降のElseIf条件全てにおいてTrueが成立しないという条件が必要になる なので、同じ条件数のIfブロックで比較すると、Elseより前に置かれた条件で処理を行わせる方がElse以降で処理させる場合よりも条件評価を行う回数が少なくなる : デフォルトの名無しさん (ワッチョイ 12e7-+lbj) [] 2019/03/13(水) 21:38:41.07:kv9h9xOp0 if not true then temp = 0 if true then else temp = 0 の二つのif文があった時、後者はtrueの評価の後にelseという評価をしてるという事でしょうか : デフォルトの名無しさん (オッペケ Src7-t9Np) [] 2019/03/13(水) 21:39:18.39:hyG2utnjr VBAはショートサーキットしないけどな : デフォルトの名無しさん (ワッチョイ a701-rbBm) [sage] 2019/03/13(水) 21:40:15.61:uWZ9EglX0 何か微妙に勘違いしてる? Elseifは関係ないぞ : デフォルトの名無しさん (ワッチョイ a701-rbBm) [sage] 2019/03/13(水) 21:43:27.67:uWZ9EglX0 elseという評価はしていない 評価というのは、判定してると言っていると思うが、判定はifのとこで終わってる : デフォルトの名無しさん (ワッチョイ eb5c-Ly0m) [sage] 2019/03/13(水) 21:53:50.43:Blqbf86O0 はっきりさせておきたい VBAのとき、 if A and B and C then ってなってるとき、A、B、C全部必ずチェックするのか、AがFALSEだったら、もうB、Cは無視するのか どっち? C言語みたいに、& と && みたいなandに2種類ないよね : デフォルトの名無しさん (ワッチョイ b769-F75Q) [sage] 2019/03/13(水) 21:54:09.23:mPSJoOjB0 ショートサーキットないおかげでどんどんネストしてゆく… : デフォルトの名無しさん (アウアウエー Saaa-CO8P) [sage] 2019/03/13(水) 22:06:55.44:x7l49vOfa ショートサーキットなんてねえよw : デフォルトの名無しさん (ワッチョイ eb5c-Ly0m) [sage] 2019/03/13(水) 22:10:56.03:Blqbf86O0 A、B、C全部必ずチェックすんだね : デフォルトの名無しさん (ワッチョイ de8c-4aR2) [sage] 2019/03/13(水) 22:39:10.74:BElBpZaB0 そういう場合は Select Case False Case A, B, C ' !( A && B && C)の場合の処理 Case Else ' A && B && C の場合の処理 End Select と書けばショートサーキットになるよ。 直感的じゃないけどね。 : デフォルトの名無しさん (ワッチョイ f2bc-E/ds) [sage] 2019/03/13(水) 22:41:50.24:MTZmUGDO0 不慣れな初心者ですみません リストシートのボタンを押すと リストに入力していたデータ行数分書類型シートが作られるのですが その作られた書類型シートにもそれぞれボタンがあり 各ボタンを押すとデータ送信用シートが作られる二段構造?になっています 書類シートからデータ送信用シートを作るには いちいち各シートのボタンを1つずつ押さねばならず大変です 選択したシートのボタンを一括で押すことのできるマクロはありませんでしょうか…? 本当はリストからボタン1つで書類シートとデータ送信用シートができれば最高なのですが そこまでの改変は難しそうで… : デフォルトの名無しさん (ワッチョイ a37c-DZHv) [sage] 2019/03/13(水) 22:46:46.17:TdaaOBVz0 それぞれのボタンに組まれたマクロを一つのボタンにまとめる : デフォルトの名無しさん (ワッチョイ 1e68-uGU8) [sage] 2019/03/13(水) 22:48:55.81:ril+FLd/0 作り直した方が遥かに楽なパターン : デフォルトの名無しさん (ワッチョイ a37c-DZHv) [sage] 2019/03/13(水) 22:53:39.78:TdaaOBVz0 ごめんは内容勘違いなので忘れて 一括で送信シート作るボタンを一つ作ってその中に、 forで選択した書類シート分回す その書類シート内の送信シートを作るボタンClickを呼ぶ Next ってのはどうですか : デフォルトの名無しさん (ワッチョイ 1e68-uGU8) [sage] 2019/03/13(水) 23:04:41.65:ril+FLd/0 見られちゃマズイデータ消してアップロードすれば誰かが作ってくれると思う : デフォルトの名無しさん (ワッチョイ eb5c-Ly0m) [sage] 2019/03/13(水) 23:09:57.29:Blqbf86O0 そんな技があったのね。 ありがと : デフォルトの名無しさん (ワッチョイ 16da-/kwh) [sage] 2019/03/13(水) 23:13:30.84:nm3P40mI0 Clickを呼んでも、クリックするわけじゃないが、 クリックされちゃいそうで怖い。 : デフォルトの名無しさん (ワッチョイ a301-89K6) [sage] 2019/03/14(木) 01:04:48.38:D/xLb5AQ0 ピボットテーブルの集計結果使いたい時って今まで計算用シートで作成→せる決め打ちで取得 てやってたんだけど稀にカラムずれる こういうのvbaだけで計算する関数とかないよね? : デフォルトの名無しさん (アウアウエー Sadf-Cp6o) [sage] 2019/03/14(木) 01:36:50.73:lGFaI2Uva ピボットテーブルはアドホックな集計や分析に使うもんだろ やることが決まってるんなら要らん : デフォルトの名無しさん (ワッチョイ ff7c-YxN5) [sage] 2019/03/14(木) 04:24:36.89:ci+9chmP0 現物見てないからよくわからないんだけど、 リストシートや書類シートにボタンがついてるってのは マクロ有効ブックの中にそれらのシートがあるってこと? 出来ればデータとマクロは別のブックに分離しといたほうが良いんじゃないかな。 そういう作りにしてれば改修も簡単になりそう。 : デフォルトの名無しさん (スプッッ Sd1f-TAcj) [sage] 2019/03/14(木) 08:13:54.22:YBKQY7Hwd 普通に If A Then If B Tnen If C Then A And B And Cの時の処理 EndIf EndIf EndIf とするかな。 でも、これでの速度アップより、他に速度ダウン要因を減らした方が良さそう。 自分はIf A AndB And C Thenを気にせず使うな。 : デフォルトの名無しさん (ワッチョイ 6f8c-z/E1) [sage] 2019/03/14(木) 08:39:22.13:ssjF3MUN0 Aが成り立たないときBを評価するとエラーで止まってしまう場合とかが悩ましいんだ : デフォルトの名無しさん (ドコグロ MM67-s8Gt) [sage] 2019/03/14(木) 09:04:59.36:Nl2IbJZtM それ保証されてるんだっけ? : デフォルトの名無しさん (ブーイモ MMa7-HVS4) [sage] 2019/03/14(木) 09:13:36.88:laeryNOTM うん、他にやることありそうな気がするぞ 昔の俺みたいに実はコンパイルしてなかったとか笑 : デフォルトの名無しさん (ワッチョイ 6f8c-z/E1) [sage] 2019/03/14(木) 09:57:51.33:ssjF3MUN0 一応言語規格上保証されてるね : デフォルトの名無しさん (ドコグロ MM67-s8Gt) [sage] 2019/03/14(木) 10:12:09.94:Nl2IbJZtM どこかでドキュメント化されてる? : デフォルトの名無しさん (ワッチョイ 6f68-B/CD) [sage] 2019/03/14(木) 10:14:23.93:hUI7fwKe0 なんとなくだけど、VBAであまり離れ業を使わないほうが良いとは思う : デフォルトの名無しさん (ワッチョイ 6f8c-z/E1) [sage] 2019/03/14(木) 10:34:24.95:ssjF3MUN0 ttp://https://docs.microsoft.com/en-us/openspecs/microsoft_general_purpose_programming_languages/ms-vbal/d5418146-0bd2-45eb-9c7a-fd9502722c74 にある Published Version の PDF の 5.4.2.10 Select Case Statement に書かれている。 82ページの一番下二行だね。 : デフォルトの名無しさん (スプッッ Sd1f-TAcj) [sage] 2019/03/14(木) 12:36:06.81:YBKQY7Hwd それは別の問題だよ。 そういう場合は最初からIf A And B And C Thenなんてやらない。 Bの評価でエラーが出ない時でも必ずBの評価をすることで速度ダウンするのを防ぐために If A Then If B Then EndIf EndIf とするかと言えば、普段はやらないということ。 それで得られる速度アップより他の修正をした方がよっぽど効果有るだろ。 : デフォルトの名無しさん (スッップ Sd1f-sgCc) [sage] 2019/03/14(木) 12:53:41.51:CJd9O/FZd アスペかよ : デフォルトの名無しさん (ワッチョイ ff01-s8Gt) [sage] 2019/03/14(木) 13:54:08.96:3EvgP48J0 なるほど、ちゃんと明記されてるんだな、ありがとう : デフォルトの名無しさん (ワッチョイ ff01-s8Gt) [sage] 2019/03/14(木) 13:57:37.28:3EvgP48J0 短絡評価の件で速度云々言ってるのはID:YBKQY7Hwdだけだし : デフォルトの名無しさん (オイコラミネオ MM47-fmdW) [sage] 2019/03/14(木) 14:46:00.52:zjiIQsBqM いやいや、役に立った(参考になった)ボタン押してますから : デフォルトの名無しさん (ワッチョイ 13ce-B/CD) [sage] 2019/03/14(木) 15:13:23.25:ONwCUS8k0 ショートサーキットが活きてくるのは、Boolean型の関数を並べるときだな If Func1() Or Func2() Then みたいなケースだと実行時間がかなり違ってくることも起こりうる : デフォルトの名無しさん (ワッチョイ 6f68-B/CD) [sage] 2019/03/14(木) 15:21:32.05:Cgb2oqJn0 標準関数の戻り値に文字列"false"が返ってくる言語があるらしい : デフォルトの名無しさん (スプッッ Sd1f-TAcj) [sage] 2019/03/14(木) 19:08:46.48:YBKQY7Hwd 伝わって無いようだな。 まず、の速度の話から始まっている。 で、は「俺は」速度を気にしないから普段はやらないけど、とにかくネストすりゃ良いって話。 に速度が念頭に無かったとしてもは成立するんだよ。 : デフォルトの名無しさん (スプッッ Sd1f-TAcj) [sage] 2019/03/14(木) 19:08:54.68:YBKQY7Hwd で、は俺が普段やらないという所に反応したわけだ。 それに対してはBのエラーが想定される時は普段もネストするって話。 こちらも成立してる。 あえて言えばが少し外してる。 : デフォルトの名無しさん (ワッチョイ ff01-jA9u) [sage] 2019/03/14(木) 19:33:40.81:3EvgP48J0 速度の話()と短絡評価の話()は別な 混同してるのはお前だけだぞw : デフォルトの名無しさん (スプッッ Sd1f-TAcj) [sage] 2019/03/14(木) 19:58:36.19:YBKQY7Hwd バーカw 短絡評価云々についてはネストすると言ってる。 でも普段は速度を気にしないからネストしないと言ってる。 ここでの速度の話はついでの話だ。 ついでの話で速度を蒸し返したのは俺が最初で、別にが速度のことを考えていなくても何も問題ない。 ついでを書かないと、どんな時も俺がネストしてると思われるから書いてるんだ。 が速度のことを気にしてると俺が思ったからでは無い。 このついでに反応したは「俺が最初に蒸し返した」のでは無く、「俺がを勘違いした」と思ったんだろう。 : デフォルトの名無しさん (アウアウエー Sadf-sgCc) [sage] 2019/03/14(木) 20:19:12.86:RaCvNH3Xa もっと争え : デフォルトの名無しさん (ワッチョイ ff01-jA9u) [sage] 2019/03/14(木) 20:22:35.66:3EvgP48J0 何だこいつ お前が常にネストするとかどうでもいいよw : 名無し (アウアウウー Sae7-9Z9t) [] 2019/03/14(木) 20:51:32.45:qOCswbNsa のび太 ドラえもん、なんか道具出してよ ドラえもん まーまー棒、 ――――◯ : デフォルトの名無しさん (ワッチョイ a3b5-QTaE) [sage] 2019/03/14(木) 21:48:30.17:yFX6qcia0 ID:YBKQY7Hwd こいつが一番バカっぽい w : デフォルトの名無しさん (オッペケ Sr07-89qL) [sage] 2019/03/14(木) 22:26:04.50:aAmaHeQqr マクロというものを知ったばかりです ■リストから単票を印刷する ttp://http://www.aibsc.jp/nsj/03_07_it/090201_01/index.shtml というマクロを使い注文書を作りたいと思っています このマクロだとリストに同会社がある場合 同会社がある分だけ印刷されてしまいます 同会社の場合は注文をまとめたいのですが どういうマクロを組めばいいのでしょうか? お力を貸して頂きたいです リスト ttps://i.imgur.com/B7EAyhw.png 理想 印刷1枚目 ttps://i.imgur.com/s4Lbrxu.png 2枚目 ttps://i.imgur.com/zKOwgMq.png : デフォルトの名無しさん (ワッチョイ 6f8c-z/E1) [sage] 2019/03/14(木) 22:54:56.95:ssjF3MUN0 ここで「データをExcelに置くのはやめてSQLSeverとかに格納しよう」って答えたら荒れるのかな? : デフォルトの名無しさん (ワッチョイ ff01-jA9u) [sage] 2019/03/14(木) 23:06:23.27:3EvgP48J0 いや、ここはAccessの出番でしょ って更に混乱に陥れるとか? : デフォルトの名無しさん (スプッッ Sd1f-TAcj) [sage] 2019/03/14(木) 23:10:10.38:YBKQY7Hwd 頭に血が上ってるようだな。 別にはこうしろだなんて言ってないんだが。 それを言うなら反応した方がずれてるだろ。 : デフォルトの名無しさん (スプッッ Sd1f-TAcj) [sage] 2019/03/14(木) 23:11:32.83:YBKQY7Hwd 日本語のやり取りが出来ない奴ばかりw : デフォルトの名無しさん (ワッチョイ cfda-kdx8) [sage] 2019/03/14(木) 23:25:05.84:KDf9lyPv0 何だそれwwwww 印刷画面にIndex関数を埋め込んでおけば、 5行くらいで書けるんじゃないのwwwww で、まとめる方法だけど、やっぱAccessを勧めるな。 Excelでも出来るけど、餅は餅屋だとわかる方がいい。 : デフォルトの名無しさん (スプッッ Sd1f-TAcj) [sage] 2019/03/14(木) 23:28:37.01:YBKQY7Hwd 勝手に人のことを推測して反応したら、推測の当てが外れて相手から否定的な意見をもらって怒り爆発って事態がこのところ続いているようだw : デフォルトの名無しさん (ワッチョイ 6f68-B/CD) [sage] 2019/03/14(木) 23:32:27.61:Cgb2oqJn0 accessって意見が多いけど、俺はvbaでやるかな ・まずまとめるシートを新しく作る。一社一行 ・それを今まで通り印刷していく が主な流れと思う 作業自体は難しくないが、仕様が複雑怪奇である ・納期はどこからどこまでか?最短?最長?平均? ・数量もどうまとめるのか? ・品番はどう表記するの? など、山程考える事がある : デフォルトの名無しさん (ワッチョイ cfda-kdx8) [sage] 2019/03/14(木) 23:32:30.81:KDf9lyPv0 ていうか2009年って。 書いた本人も、内心消したいと思ってるんじゃないのそれ。 当時は良くても、10年後にActiveCell.Offset(1, 0).Selectとか見たら、 あちゃー(ノ∀`)だと思う。 : デフォルトの名無しさん (ワッチョイ 6f68-B/CD) [sage] 2019/03/14(木) 23:34:16.79:Cgb2oqJn0 ActiveCellのoffsetでSelectとかなかなかやね マクロの記録でもないだろうから、一生懸命頑張ったんかなって : デフォルトの名無しさん (アウアウエー Sadf-Cp6o) [sage] 2019/03/14(木) 23:41:27.79:S0hknHQca ランサーズとかで依頼したら? ゴミみたいな値段で誰か作ってくれるよ : デフォルトの名無しさん (ワッチョイ 838e-lF81) [sage] 2019/03/14(木) 23:43:49.65:UkRoSI4o0 馬鹿は死ねよ : デフォルトの名無しさん (ワッチョイ cfda-kdx8) [sage] 2019/03/14(木) 23:50:37.23:KDf9lyPv0 ん、ちょっと待った。 注文書を印刷? 今時そんなことやったら、受け取る方は嫌がると思う。 どうしても紙にするなら、 見た目の格好良さなんか度外視で、 QRコード・品名・数量・納期を、ただ羅列するだけの方がいいよ。 パソコンなんか使ってないような、クソ田舎の店に注文出すわけじゃないんでしょ? : デフォルトの名無しさん (ワッチョイ 737c-13+i) [sage] 2019/03/14(木) 23:59:36.30:39aguKNH0 できるだけ単純な方法だと、 ・リストにマクロ用の作業列を1列用意する ・マクロ開始時に作業列をクリア ・ループ内で印刷シートにデータを入れ込む前に、その行の作業列が空白かどうか見る 空白なら印刷シートに社名とデータ入れて、作業列に1とか適当に入れる FindとFineNextで同じ社名全部検索して、1個目と同じように見つかった行の作業列に何か入れてデータを印刷シートに入れる ・印刷実行 : デフォルトの名無しさん (ワッチョイ 737c-13+i) [sage] 2019/03/15(金) 00:00:20.90:cOSRxez60 FineNext→FindNextね : デフォルトの名無しさん (ワッチョイ 6f8c-z/E1) [sage] 2019/03/15(金) 00:00:30.62:mu0sfa7H0 そこでさらに Driver = {Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)} 使えといって混乱させる : デフォルトの名無しさん (ワッチョイ 6f68-B/CD) [sage] 2019/03/15(金) 00:02:04.33:5fRBFExt0 批判とかする気持ちは分かるけど、だったらダイマ批判の覚悟でそれ相応のサービスを紹介してあげてはどうかな さすがにそろそろvbaで請求関係は終焉させてあげたい。よく20年も頑張ったよ : デフォルトの名無しさん (ワッチョイ 6f68-B/CD) [sage] 2019/03/15(金) 00:04:22.44:5fRBFExt0 まぁ俺はgoogleanalyticsのマイレポートをctrl+aでコピー*3、EXCELに貼り付け 多様な角度からレポート生成 なんてシステム作ったけどな 役に立ってるかは知らん : デフォルトの名無しさん (ワッチョイ 4301-fmdW) [sage] 2019/03/15(金) 00:04:59.41:BXhkH+980 Accessわかる人は、何も悩むところがない わからなければ、Accessの勉強で苦労するか、ExcelVBAで苦労するか 好きな方選べばいい
凡例:
レス番
100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている
名前
名無しさん (青) → sage のレス
名無しさん (緑) → age のレス
ID
ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID
このページは2ch勢いランキング が作成したアーカイブです。削除についてはこちら 。