2ch勢いランキング アーカイブ

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で苦労するか
好きな方選べばいい

勢い5万以上のスレをメールでお知らせするサービス、実施中!!
憧れボディをGETしたい!その夢、ボニックで!

新着レスの表示

2ch勢いランキング アーカイブ プログラム板ランキング

凡例:

レス番

100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている

名前

名無しさん (青) → sage のレス
名無しさん (緑) → age のレス

ID

ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID

このページは2ch勢いランキングが作成したアーカイブです。削除についてはこちら