◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

Excel VBA 質問スレ Part59 ->画像>13枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1549692750/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1デフォルトの名無しさん (ワッチョイ d2a3-A3MQ)2019/02/09(土) 15:12:30.70ID:3lTArmdf0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part58
http://2chb.net/r/tech/1542577644/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured

2デフォルトの名無しさん (ワッチョイ a98e-Gewk)2019/02/09(土) 15:22:25.15ID:8WZyJ5B/0
ただし、VBAが何かわからないような馬鹿はお断りです

3デフォルトの名無しさん (ブーイモ MM22-FdHg)2019/02/09(土) 15:40:14.54ID:CKZ2Rs4GM
他の言語スレでは相手にされずここならマウント取れるだろうとやって来る馬鹿もお断りです

4デフォルトの名無しさん (アメ MMcd-pe6H)2019/02/09(土) 17:15:55.60ID:Z3yo63+mM
>>3
マウント取られちゃう怯えですか

5デフォルトの名無しさん (ワッチョイ 8deb-/WZR)2019/02/09(土) 21:48:35.35ID:dlyNQvdo0
前スレ終了直前でスルーされてしまった質問です。お願いします。

あるファイルに、
on error goto err
******
exit sub
err:
msgbox err.description
end sub


こういうコードをたくさん書いてきました。
しかし、エラーが出たときに、どのプロシージャで発生したのか知りたくなり、
msgbox err.description & このプロシージャ名
に変更したくなりました。
「このプロシージャ名」を書く方法ってあるのでしょうか?

6デフォルトの名無しさん (ワッチョイ 911f-Q5xa)2019/02/09(土) 22:15:26.08ID:J8bfqgzv0
C#で作成したライブリファイルをビルドしてtest.dllファイルを作成し仮にデスクトップに置きました。
中身は
public string[] GetData(string path,string file)
{
//処理
}

これをVBAで実行したのですが、標準モジュールでどう宣言したらできますか?
そもそも出来るんですか?

Declare Function strData Lib "???" Alias "???" () As string()
これを使うんですよね?

7デフォルトの名無しさん (ワッチョイ 8dda-OF6d)2019/02/09(土) 22:30:32.98ID:nXE2v5Lv0
そうやって作ったのって、やっぱ実行速度はC#並みになるのかな。
VBAレベルに落ちちゃうなら、VBAに翻訳しちゃうとか。

8デフォルトの名無しさん (ワッチョイ a969-z8kj)2019/02/09(土) 22:39:52.86ID:M8bBhNwV0
エクセルvba勉強始めてるんですけど
言語がなんかすきになれないです
オブジェクトを生成してそれを操作するってのばっかりにみえるんですが
それならいっそパイソンやら使いやすい言語でcomオブジェクトからエクセルを操作したほうがいいんでしょうか?

9デフォルトの名無しさん (ワッチョイ a2a2-/WZR)2019/02/10(日) 00:05:20.18ID:cpoaXViK0
要望2だけ反映させてました
https://www.axfc.net/u/3958630
変更点
乱数はマイナスも作成できるようになりました
文字シャッフル機能を追加しました
ケンブリッジのあれも取り入れてみました

要望1はいいと言うことなのでこれで終わりたいと思います。
スレ汚し失礼しました。

10デフォルトの名無しさん (ワッチョイ f901-IbHV)2019/02/10(日) 03:10:28.77ID:T8b1EA5w0
>>5
無かったと思うな…
あるとしても ThisModuleな感じか…

11デフォルトの名無しさん (ワッチョイ 25ce-0b7p)2019/02/10(日) 03:26:25.40ID:5I+kynYZ0
>>8
別の言語でエクセルの操作はおすすめできない
やるならワークブック/ワークシートオブジェクトなどを操作した方がいい
オブジェクトを操作するだけならわざわざ高いOfficeも買わなくていいし

12デフォルトの名無しさん (ワッチョイ a2a2-/WZR)2019/02/10(日) 03:36:45.00ID:cpoaXViK0
デバッグしてたらとまりませんね・・・
何個かバグつぶしたので上げなおします
https://www.axfc.net/u/3958695

13デフォルトの名無しさん (アウアウクー MM91-eF01)2019/02/10(日) 08:29:51.15ID:nwYV/fdtM
なんかすみませんね。深夜睡眠をけずってまでやってらったようで、、。ツールありがとうございます。
あとはこちらでいただいたツールをベースに必要に応じてカスタマイズします。

14デフォルトの名無しさん (ワッチョイ e188-drk2)2019/02/10(日) 09:22:45.87ID: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ならいろいろあるようですが

15デフォルトの名無しさん (ワッチョイ 8dda-OF6d)2019/02/10(日) 09:40:27.91ID:7rlN1EyT0
>>14
そこだけVBSにするとか。

16デフォルトの名無しさん (ワッチョイ 1df9-n/rh)2019/02/10(日) 09:54:47.81ID:px4mCHlG0
>>14
JScriptは良くわからんが・・Javaは結構したけど
見当違いなら申し訳ないが
既にExcelが起動していて、シート1が選択され
範囲が選択されている状況で、JScriptを動かしているんで良いですよね

17デフォルトの名無しさん (ワッチョイ 1df9-n/rh)2019/02/10(日) 10:14:14.92ID:px4mCHlG0
>>5
単にプロシージャ名の変数を宣言しておき
各プロシージャ実行時にプロシージャ名に名前をセットして実行
エラー表示でプロシージャ名の変数を表示するだけでは

18デフォルトの名無しさん (アークセー Sxd1-Hrf8)2019/02/10(日) 10:29:08.47ID:D1+mLGbSx
>>14
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;

でいけるんじゃないかな
試してないから間違ってたらごめん

19デフォルトの名無しさん (ワッチョイ 1df9-n/rh)2019/02/10(日) 10:48:51.96ID:px4mCHlG0
>>8
昔は、メモリーの領域を分け合って使ってたけど
いまわ全てオブジェクトと思え
エクセルは色々このオブジェクトの使い方が説明されていて
機能も多い
いやならすべて作ればとなるが、所詮何も出来ないだろ

20デフォルトの名無しさん (ワッチョイ 1df9-n/rh)2019/02/10(日) 10:52:53.82ID:px4mCHlG0
>>17
これは間違いだな、サブルーチンから戻った時を考えてない
サブルーチンでは、元の名前を保存しておき元に戻す処理が必要になるが
こんなの今時やらないな

21デフォルトの名無しさん (ワッチョイ 1df9-n/rh)2019/02/10(日) 10:57:18.71ID:px4mCHlG0
したがって、プロシージャ名は配列で宣言し、サブルーチンの時の処理が必要になるが
これは、システムが管理しているのを使うべきだな、すまない

22デフォルトの名無しさん (ワッチョイ e188-drk2)2019/02/10(日) 11:29:32.47ID:adWOvpgi0
>>18
ありがとうございます!

それで動きました。 どこでそういうのは調べるのでしょうか。 なかなかググってもわかりません

>>15
最初にJScriptを始めたとき、ネットでJScriptの方が初心者向けにエクセルの操作とかわかりやすい記述が
見つかったので、JScriptを始めたのですが、VBSだと、VBAとぼとんど同じプロパティで同じことができますか?
そうなら、VBSに移ろうかな

23デフォルトの名無しさん (ワッチョイ 1df9-n/rh)2019/02/10(日) 12:19:38.78ID:px4mCHlG0
まあなんだな、質問して回答を実行してできたことが答えじゃなくて
何故できなくて、何で出来たのが答えなんだけどな

24デフォルトの名無しさん (アークセー Sxd1-Hrf8)2019/02/10(日) 12:35:46.47ID:YUFMtInCx
>>22
今回の質問はエクセルのオブジェクトモデルに忠実に従えば解決するものだよ
VBS含め他のどんな言語を選択しようが、そのあたりの事情は変わらない

具体的には、今回はSelectionへのアクセス方法がおかしかったわけで、
MSDNリファレンスのプロパティ一覧を見たり、VBEのオブジェクトブラウザでプロパティを検索したりすれば、
Worksheetオブジェクトには現在の選択範囲へのアクセスを提供するSelectionプロパティがないことや、
SelectionプロパティはApplicationオブジェクトのメンバとして実装されていることが分かる

25デフォルトの名無しさん (ワッチョイ 8dda-OF6d)2019/02/10(日) 12:45:32.26ID:7rlN1EyT0
>>22
無理に移るんじゃなくて、併用するとか。

26デフォルトの名無しさん (ワッチョイ 1df9-n/rh)2019/02/10(日) 12:48:09.50ID:px4mCHlG0
前スレでもあったが、シートを選択してなければ、そのシートの選択範囲は取れない
ただそれだけだろ

27デフォルトの名無しさん (アークセー Sxd1-Hrf8)2019/02/10(日) 12:56:37.91ID:YUFMtInCx
>>26
元の質問のサンプルはsheet.Selectionという式の構文が間違っているので、仮にシートを選択していようが選択範囲は取れない
あと、シート上のSelectionの情報を取るだけなら画面遷移を伴うSelectではなくActivateで十分だろう

28デフォルトの名無しさん (ワッチョイ e188-drk2)2019/02/10(日) 13:00:02.97ID:adWOvpgi0
>>24
全く同じことを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

29デフォルトの名無しさん (ワッチョイ 1df9-n/rh)2019/02/10(日) 13:03:50.84ID:px4mCHlG0
>>27
すまないな
>シート上のSelectionの情報を取るだけなら画面遷移を伴うSelectではなくActivateで十分
実質的にどう違うかわからないので申し訳ありませんが教えていただけませんか

30デフォルトの名無しさん (アークセー Sxd1-Hrf8)2019/02/10(日) 13:14:52.82ID:YUFMtInCx
>>29
Selectによる画面遷移はユーザーとの対話を想定した処理で、当然描画処理の負荷がかかる
プログラム上で参照するアクティブなオブジェクトを切り替えるだけならSelectはしなくて良い

31デフォルトの名無しさん (ワッチョイ 9111-gf/b)2019/02/10(日) 13:26:46.13ID:BFbUXkOH0
>>28
>>Set x = selected.Row ' ここでエラー

x = Selected.Row

32デフォルトの名無しさん (ワッチョイ e188-drk2)2019/02/10(日) 13:31:40.65ID:adWOvpgi0
>>31
出来た。 なんだかなあ、、、w

33デフォルトの名無しさん (ワッチョイ e188-drk2)2019/02/10(日) 13:44:31.83ID:adWOvpgi0
>>24
いろいろ試してみてわかりました
もともと、エクセルのマクロで
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
と一旦とってからの方がやりやすいですね。ありがとうございました

34デフォルトの名無しさん (ワッチョイ e188-drk2)2019/02/10(日) 15:20:48.09ID:adWOvpgi0
>>30
jsで、Activateでやってみましたが、ワークシートも切り替わってますよ
Selectとの違いがわかりません
vbsではやってません

35デフォルトの名無しさん (ワッチョイ a98e-Gewk)2019/02/10(日) 15:55:33.83ID:hManQYIw0
>>34
スレチだ
いい加減にしろ、死ねよ

36デフォルトの名無しさん (ワッチョイ 911f-Q5xa)2019/02/10(日) 16:05:34.34ID:ZjJO7g3i0
>>6
だれかこれ分かる人おらん?

37デフォルトの名無しさん (ワッチョイ 0201-3tWi)2019/02/10(日) 16:25:54.76ID:vOpxNkmL0
>>36
直接は呼べなくてCOM経由でしか呼べない
VBA C# dll 呼び出し
とかでググれ

38デフォルトの名無しさん (ワッチョイ 868c-RyKv)2019/02/10(日) 18:24:50.29ID:kyKghR0l0
C#わからんから無責任発言するけどC++でdll作りゃ問題ないならそうすれば?

39デフォルトの名無しさん (ドコグロ MM09-/S9r)2019/02/10(日) 18:46:31.86ID:96GWWqq3M
C++で橋渡しするならC++/CLIでできるね
でもそんな面倒なことをするより普通にexe作るかpowershell書くかして別プロセスとして呼べばいいよ
データの受け渡しはコマンドライン引数なり標準入出力なりを使えばよい

40デフォルトの名無しさん (ワッチョイ 0201-3tWi)2019/02/10(日) 19:52:43.32ID:vOpxNkmL0
なんでより面倒な方法をドヤ顔で書いてるんだよ w
C#で書いてちゃんと設定すりゃインテリセンスも効くというのにコマンドラインとかありえねー

41デフォルトの名無しさん (アウアウウー Sa05-BKX2)2019/02/10(日) 20:43:54.86ID:fHWqGmK3a
>>36
わかるけどスマホからサンプルコード書くのはしんどいわ
C# ComVisible Excelあたりでググって

42デフォルトの名無しさん (ワッチョイ 868c-RyKv)2019/02/10(日) 21:28:15.49ID:kyKghR0l0
>>39
自分でC++dll書けるなら呼び出す側はかなり簡便になるように作れるよ
なによりワークシートの大量データを配列で丸ごと渡せるからね。
コマンドラインじゃ無理でしょ

43デフォルトの名無しさん (ワッチョイ aeda-OF6d)2019/02/11(月) 02:36:20.89ID:QZQ3TitU0
>>5
はるか昔に似たようなことやろうとしたが断念して↓で落ち着いた

MsgBox "Err." & err.Number & " " & err.Description, vbCritical, "モジュール名"

44デフォルトの名無しさん (ワッチョイ 911f-Q5xa)2019/02/11(月) 14:06:13.76ID:2OxsMAwm0
>>37
やっぱ直接は無理か。管理者権限とかCOM経由しか無理なら諦めます。

45デフォルトの名無しさん (ワッチョイ 911f-Q5xa)2019/02/11(月) 14:07:58.69ID:2OxsMAwm0
>>41
直接は無理そうなんで諦めます。

46デフォルトの名無しさん (JP 0H16-KbRv)2019/02/11(月) 15:17:21.04ID:PhhkhwtYH
>>5
CodeModuleプロパティでなんかできそうだけど使ったことないからわかんね

47デフォルトの名無しさん (ワッチョイ a969-z8kj)2019/02/11(月) 17:58:03.71ID:fFRcOW+J0
エクセルのシートやセルのオブジェクトにどんなメソッドやプロパティがあるのか見れるところないですか

48デフォルトの名無しさん (アウウィフ FF05-DOJB)2019/02/11(月) 18:04:33.43ID:itY+kGJRF

49デフォルトの名無しさん (ワッチョイ dd0b-VUEs)2019/02/11(月) 18:43:45.66ID:fA09NaPq0
>>12
のダウンロードした回数多くないか?
有用なツールだと認められた証だろう。作った人は自慢していいよ

50デフォルトの名無しさん (ワッチョイ e1b5-drk2)2019/02/11(月) 18:49:07.13ID:TpVFRub80
>>49
ん? これ、何のファイル?

51デフォルトの名無しさん (ワッチョイ cdca-/S9r)2019/02/11(月) 22:38:05.08ID:9CUrx5/r0
このスレの人ってやっぱりプログラマーが多いんですか?
それなりにVBA使えるようになった事務職なんですが、転職を考えています
想像してはいたんですが、VBAで職探しするとプログラマーばっかりですね

VBA活かせる仕事ってやっぱりプログラマーになっちゃうんですかね

52デフォルトの名無しさん (ドコグロ MMca-/S9r)2019/02/11(月) 22:48:43.99ID:+VAWjoKJM
>>51
プログラマの定義から自明だろう
VBAのスキルだけで仕事するってことはVBAでマクロ作ること自体を仕事にするってことだろ?
それは即ちプログラマに他ならない
嫌なら他のスキルを身につけた上でその補助道具としてVBAを使うことを考えなさい

53デフォルトの名無しさん (アウアウウー Sa05-BKX2)2019/02/11(月) 22:54:21.26ID:QKPibkACa
>>51
プログラマはVBAほとんど書きません

54デフォルトの名無しさん (ドコグロ MMca-/S9r)2019/02/11(月) 23:04:40.76ID:+VAWjoKJM
あとはIT業界でプログラマ以外で入りやすいのはシステムオペレータやコールセンター
VBAを使う機会は少ないかもしれないけどVBAを習得できる程度の頭があるならそれなりに責任たある立場(バイトリーダーくらいを想像すればいい)にはなれるんじゃないかな

55デフォルトの名無しさん (ワッチョイ 6e2c-V6Wy)2019/02/11(月) 23:51:16.39ID:X8tlYFxV0
Excel エンジニアから、ステップアップしてプログラマーになった人は、たいてい、Ruby on Rails !
まず、Ruby・Sinatra から、web フレームワークを始める

YouTube にも、そういう成功した人たちの動画がある

56デフォルトの名無しさん (ワッチョイ cdca-/S9r)2019/02/11(月) 23:54:44.08ID:9CUrx5/r0
>>52
経理財務畑で10年働いてるので、その補佐としてVBA使ってる現状です
VBA楽しいので、そればっかりの仕事はしたくないんです
たぶん嫌になっちゃうので。
なのでIT業界に行きたいわけじゃないんです

でも、VBAで探すとITばっかりだなーって悩んでるんです

57デフォルトの名無しさん (ワッチョイ f901-XNIb)2019/02/12(火) 00:22:18.17ID:6UhGKpIA0
VBAは習得にかかる時間は他の言語覚えるのと同じくらい?
それとも簡単?

58デフォルトの名無しさん (ワッチョイ 25ce-0b7p)2019/02/12(火) 00:40:28.65ID:boZzpQWE0
>>57
同じ

59デフォルトの名無しさん (ドコグロ MMca-/S9r)2019/02/12(火) 00:57:29.86ID:J2uuh0x+M
>>57
同じレベルを求めるなら同じ
でもVBAは自称「VBAできます(キリッ」のレベルが他言語比で大幅に低いから、
人前で習得したと言っていいレベルに達するまでの時間は他言語よりずっと短い

60デフォルトの名無しさん (ワッチョイ f901-KbRv)2019/02/12(火) 01:28:22.73ID: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

できました!

61デフォルトの名無しさん (ワッチョイ 827c-/3is)2019/02/12(火) 01:54:53.42ID:w+cVMhLi0
>>60
なんかシンメトリーできれい

62 ◆QZaw55cn4c (ワッチョイ e247-3ywI)2019/02/12(火) 04:41:36.02ID:afakhEje0
>>57
VB6 と同じ程度なのでは?

63デフォルトの名無しさん (アウアウエー Sa0a-DOJB)2019/02/12(火) 07:32:55.78ID:SvKCMiwAa
>>60
エラー処理(例外処理)が緩すぎる
やり直し

64デフォルトの名無しさん (ブーイモ MMcd-RyKv)2019/02/12(火) 08:01:42.96ID:yCgE5JHqM
>>56
仕事を効率化するシステムはある程度自分で作るのが当たり前の時代が来る(かもしれない)から
IT業界でなくてもプログラミングは必須になる(かも略
ただしそのツールの主流はVBAじゃないだろうね
いろんなツールや他言語も覚えて他人の仕事をどんどん奪ってください。
そうすれば時代の流れを加速することになるのでヒーローになれます。

65デフォルトの名無しさん (ワッチョイ fe7c-SgG7)2019/02/12(火) 11:26:12.35ID:8lolhehX0
MSがExcelにPython載せるっつってたから
君が卒業して社会に出る頃にはVBAは消えてるかも知れない

66デフォルトの名無しさん (ブーイモ MMcd-/3is)2019/02/12(火) 13:55:06.88ID:w218beJOM
>>64
まず型はいらない。
コマンドや関数はフローチャートの図形みたいな視覚化とパラメータで作成。
論理エラー以外のエラーは出ない仕組み。
やろうとすればいくらでもできるんじゃね?

67デフォルトの名無しさん (ワッチョイ a98e-Gewk)2019/02/12(火) 13:56:32.19ID:vLhvVMgO0
>>65
馬鹿は嘘情報を検証もなく信じる

68デフォルトの名無しさん (ブーイモ MMcd-RyKv)2019/02/12(火) 14:29:27.10ID:yCgE5JHqM
>>66
そんな軟弱な
それじゃ小学生向けのプログラミング教室と変わらないじゃん

69デフォルトの名無しさん (ブーイモ MMcd-uR/r)2019/02/12(火) 14:34:04.56ID:yiYRNC81M
>>66
まんまRPAじゃね

70デフォルトの名無しさん (ワッチョイ aeda-OF6d)2019/02/12(火) 14:40:47.72ID:CHFilx2O0

71デフォルトの名無しさん (ブーイモ MM22-/3is)2019/02/12(火) 15:57:24.73ID:gVOhdcQpM
>>68
一般の個人がやるならこのくらいが普通。
HTML手書きの敷居を下げたホームページビルダーだってそうだろ。
プログラムがCUIっていうのに違和感を持つべきだと思う。

72デフォルトの名無しさん (ブーイモ MM22-/3is)2019/02/12(火) 16:00:06.68ID:gVOhdcQpM
>>69
そそ、それをより深くしてさらに汎用化させた感じ

73デフォルトの名無しさん (ワッチョイ fe02-tgDq)2019/02/12(火) 18:57:41.03ID:WG+Lzv660
>>66
やろうとすればというかもうとっくに先人たちが取り組んで諦めた分野だよ
学生の頃に配線型のプログラミング言語を使ったことあるけど難しすぎて習得を諦めた

74デフォルトの名無しさん (ワッチョイ 822f-Y3YF)2019/02/12(火) 19:46:07.38ID:u96ReIy/0
先人たちの時代には難しかっただろう
しかし今のPC環境ならグラフィカルなプログラミングも実用化できるんじゃね

75デフォルトの名無しさん (ワッチョイ a2a2-/WZR)2019/02/12(火) 19:49:06.70ID:gxc4B4g80
>>13さんもう見てないかな
自分で使ってみたけどなんか違う・・・と思って考えてみたら
問題のシャッフル出題(各問1回だけシャッフルして出題)が足りないという結論に
バグもつぶしたし、まだ見てるならレスください

76デフォルトの名無しさん (ササクッテロル Spd1-P0T6)2019/02/12(火) 21:06:37.12ID:N98Fn342p
すみません、こういうのは出来ますか。

How are you? I’m looking
forward to see you.

How are you?
I’m looking forward to see you.
になおす。

要は、中途半端な改行がある文を、一行にまとめる。

77デフォルトの名無しさん (ブーイモ MMcd-RyKv)2019/02/12(火) 21:11:53.35ID:yCgE5JHqM
>>74
みんなそんなに全力でテキストベースのプログラミングを避けたいのかねえ?
使いこなせば強力な武器になるとは思わんのか?

78デフォルトの名無しさん (ワッチョイ 822f-HdPi)2019/02/12(火) 21:30:27.20ID:u96ReIy/0
>>76
改行をなくすだけなら比較的簡単にできる
適切な位置で改行しろってなら、適切な位置を事前に完全に定義すればまぁできる

>>77
おれは別に避けたいとは思ってないしその必要もないけど
テキスト以外のプログラミングには従来のプログラミング言語にない可能性だってあるしな

79デフォルトの名無しさん (ワッチョイ 827c-1PgY)2019/02/12(火) 21:39:40.48ID:w+cVMhLi0
DOSはDOSで使いやすかったと思う。
Windows出たときいらねーべって思ってたけど今思うと3.1はやっぱりいらない。

80デフォルトの名無しさん (ササクッテロル Spd1-P0T6)2019/02/12(火) 21:45:44.99ID:N98Fn342p
>>78
76です。
すみません。それでは、
.で改行できるようにお願い致します。

81デフォルトの名無しさん (ワッチョイ d9e9-OF6d)2019/02/12(火) 21:52:09.03ID:qNrXOr6p0
>>80
一旦改行を全て削除して、そのあとでピリオド、クエスチョンマーク、エクスクラメーションマークで改行すればいいんでは。

82デフォルトの名無しさん (ササクッテロル Spd1-P0T6)2019/02/12(火) 21:55:12.47ID:N98Fn342p
>>81
改行を削除できますか。

仕事で、大量の英文を整理したいので困ってます。

83デフォルトの名無しさん (アウアウウー Sa05-BKX2)2019/02/12(火) 22:00:43.06ID:1aNudvIBa
線つなぐやつはサブルーチンが正体不明のアイコンになるからものすごくわかりにくい
逆にわかりやすいプログラムを描くには高度なアイコンデザインセンスが必要ということだ
そんなの天才にしか使いこなせない

84デフォルトの名無しさん (ワッチョイ d9e9-OF6d)2019/02/12(火) 22:17:01.28ID:qNrXOr6p0
>>82
もうVBA関係なくなっちゃうけど、普通のエディタ使って置換機能を使えばいいだけでは。

85デフォルトの名無しさん (アウアウクー MM91-q7hS)2019/02/12(火) 22:41:31.90ID:CcMjC8kpM
>>84
セル内の文字列を対象にしてると思うからエディタでは無理では?分からないから適当に言うんだけど。

86デフォルトの名無しさん (ワッチョイ 822f-HdPi)2019/02/12(火) 23:08:07.22ID:u96ReIy/0
>>80
質問はうけつけん

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

87デフォルトの名無しさん (ワッチョイ f901-YOpM)2019/02/12(火) 23:38:26.31ID:ja5MNGvN0
>>76
あまりいけてないけど、ぼくも考えた

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

88デフォルトの名無しさん (アウアウクー MM91-q7hS)2019/02/12(火) 23:44:44.19ID:CcMjC8kpM
>>75
最新版は5ですよね?使ってみましたがオブジェクトエラーが起きてどこで停止しているかみてみると、ソート処理時に停止する。

そこで4_2をベースにこちらでカスタマイズして、ボタン1つでセル内の文字列をシャッフルするコードをネットから拾ってきました。
ついでに縦横の切り替えもボタンで実現してます。

やりていことこ実現できているので満足です

89デフォルトの名無しさん (ワッチョイ a2a2-/WZR)2019/02/12(火) 23:58:53.49ID:gxc4B4g80
そうでしたか、なんかすみません
じゃ本当に終わります。

90デフォルトの名無しさん (ワッチョイ 6e2c-V6Wy)2019/02/13(水) 02:27:50.55ID:NEpE3zFw0
Python などの形態素解析で、文末でも判定すれば?

91デフォルトの名無しさん (ワッチョイ e101-P0T6)2019/02/13(水) 06:35:13.37ID:9485a3fT0
>>84
例えば?メモ帳とか?

改行を無くす置換はありますか?

92デフォルトの名無しさん (ドコグロ MM09-CTVZ)2019/02/13(水) 07:12:30.92ID:i20vW39tM
>>82
改行置換ならVBAも要らん
https://excelkamiwaza.com/excel_kaigyou_tikan.html

93デフォルトの名無しさん (ワッチョイ f901-P0T6)2019/02/13(水) 07:30:01.13ID:AhLCWHg20
>>92
ありがとうございます。一つのセルに最大どんだけテキスト貼れるかですね

94デフォルトの名無しさん (ワッチョイ f901-P0T6)2019/02/13(水) 07:36:07.18ID:QsqoJnTp0
>>92
cntl+jか。知らなかった。ほかのワードとかでも使えるかな

95デフォルトの名無しさん (ワッチョイ f901-XNIb)2019/02/13(水) 07:44:47.38ID:zGo41KJe0
セルを指定する時とか”A1”とかちまちま書くのが普通?
めんどくさいんだけどそんなもの?

96デフォルトの名無しさん (JP 0H16-KbRv)2019/02/13(水) 08:07:53.15ID:kNKWDOP4H
>>95
ヘッダの話なら1個ずつ書いてくしかない

97デフォルトの名無しさん (ワッチョイ 25ce-0b7p)2019/02/13(水) 08:46:40.27ID:LdPPLa0i0
>>95
状況とやりたいことによる
範囲指定する書き方も出来るし、変数で楽できる場合もある

98デフォルトの名無しさん (ワッチョイ 25ce-0b7p)2019/02/13(水) 08:48:18.23ID:LdPPLa0i0
>>93
Excelと関係ない英文を整形したいだけならテキストエディタを使った方が早いぞ
せめてWordにしとけ

99デフォルトの名無しさん (ワッチョイ 1df9-n/rh)2019/02/13(水) 09:17:10.81ID:s1ZD6WV/0
「何の条件」で「何を」「どのようにしたいか」の中で「何の条件で」が出てないな
「何を」「どのようにしたいか」も一部の条件しか出てない気がする
連想ゲームじゃないんだから質問はちゃんとかけよ

100デフォルトの名無しさん (ワッチョイ 1df9-n/rh)2019/02/13(水) 10:05:00.38ID:s1ZD6WV/0
>>76
この質問は
Excelの枠に配置で、折り返して全体を表示するに
以下の改行のない文を貼り付けた時に
How are you? I’m looking forward to see you.
セルの幅に合う位置で改行されるのを思いの位置で改行したい
ってことだろ、思いの位置が明文化されないとな
例えば英文であるかわからんが「...」みたいな文とか「!!」みたいなとかもありそうだしな

101デフォルトの名無しさん (JP 0H16-KbRv)2019/02/13(水) 10:59:06.69ID:kNKWDOP4H
>>95
あと以下のようにしておくと面倒でなくなるよ

cns_COL_ID = “A”
Range(cns_COL_ID & 1) = “ID”

102デフォルトの名無しさん (ワッチョイ 1df9-n/rh)2019/02/13(水) 11:08:47.69ID:s1ZD6WV/0
>>95
貼り付けられたイベントで処理するのも普通だけどな
位置は分かるから、そのセル・レンジを処理する

103デフォルトの名無しさん (ワッチョイ 1df9-n/rh)2019/02/13(水) 11:41:27.51ID:s1ZD6WV/0
Private Sub Worksheet_Change(ByVal Target As Range)
まあ、Changeイベントで
 If Application.CutCopyMode = xlCopy Then
 End if
コピーされた場合「Range」に対して処理を書くんだな

104デフォルトの名無しさん (ワッチョイ e188-drk2)2019/02/13(水) 14:06:51.14ID:cLVWJ/NN0
セル上でドラッグドロップしたら、それでプログラムが動くようなことってできますか
たとえば、縦1列に20個のデータが入っていて、その1つを別の場所に
ドラッグドロップすると順番が入れ替わるようにするとか

105デフォルトの名無しさん (JP 0H16-KbRv)2019/02/13(水) 14:22:50.50ID:kNKWDOP4H
>>104
こうかな

Sub Worksheet_change(ByVal Target As Range)
if target.column = 貼り付けた列番号 then 配列に突っ込む
配列をソートする
配列をセルに書き込む
End Sub

106デフォルトの名無しさん (ワッチョイ e188-drk2)2019/02/13(水) 14:36:01.74ID:cLVWJ/NN0
>>105
出来るんですね。 ありがとう

107デフォルトの名無しさん (JP 0H16-KbRv)2019/02/13(水) 14:45:16.60ID:kNKWDOP4H
>>106
あとApplication.Enableevents = Falseしないと配列をセルに書く時にWorksheet_changeが起きて無限ループするから気を付けて

108デフォルトの名無しさん (ワッチョイ 1df9-n/rh)2019/02/13(水) 14:45:50.22ID:s1ZD6WV/0
>>104
それって、切取りと切り取ったセルの挿入のことじゃない

109デフォルトの名無しさん (ワッチョイ c5e6-yKLa)2019/02/13(水) 18:05:52.67ID:YjEmAg3Q0
>>104
シフト押しながらドラッグするだけやろ。

テーブル定義ならシフトすら必要ない。

既存の機能を自力で作ってどうするんや

110デフォルトの名無しさん (ササクッテロル Spd1-P0T6)2019/02/13(水) 19:29:04.53ID:yofO24jUp
>>94
置換前にcntl+jと入れると、置換ボタンが押せない。

111デフォルトの名無しさん (ワッチョイ d9e9-OF6d)2019/02/13(水) 19:30:45.49ID:JQT8xzoY0
検索で正規表現を使えないというのもあれだな。

112デフォルトの名無しさん (アメ MMcd-oukl)2019/02/13(水) 20:11:24.50ID:1az0o1MYM
ワードラップの問題だろ改行関係ない

113デフォルトの名無しさん (ワッチョイ f901-XNIb)2019/02/13(水) 20:17:10.65ID:zGo41KJe0
>>96>>97>>101>>102
ありがとう
>>101
これはなぜ楽になるの?

114デフォルトの名無しさん (ワッチョイ f901-KbRv)2019/02/13(水) 20:39:49.89ID:9c/UwGiq0
>>113
楽というかマナー
意味の分かる定数で定義することで他人がプログラムを追わなくても理解できるようになる

115デフォルトの名無しさん (アウアウウー Sa05-BKX2)2019/02/13(水) 20:49:54.38ID:9vYYaAAUa
プロパティ使ったほうが定数よりずっとわかりやすいよ

116デフォルトの名無しさん (ワッチョイ f901-qEuu)2019/02/13(水) 20:50:53.76ID:Hdk7qA5y0
決まりきったセル(範囲)参照する時は名前定義なりテーブル化した方がいいと思うけどな

117デフォルトの名無しさん (オイコラミネオ MM16-duX/)2019/02/13(水) 20:54:23.96ID:vtryBqN5M
vba初心者です。
マウスイベントやスリープなどのapi を使って
会社で使うツールを半自動化してますが、
こういうアナログな方法ではなく、
マウスでクリックしなくてもツールがアクティブになったり、
スリープではなく画面が遷移したのを読み取って次の命令を実行してくれるような
ものを作るにはどういう学問を学べばいいですか?

118デフォルトの名無しさん (ワッチョイ f901-XNIb)2019/02/13(水) 20:57:56.29ID:zGo41KJe0
>>114
あり

119デフォルトの名無しさん (ワッチョイ a969-z8kj)2019/02/13(水) 21:14:49.27ID:0iV7VQWH0
ウインドウズのイベントをフックする

120デフォルトの名無しさん (ワッチョイ f901-qEuu)2019/02/13(水) 21:25:30.47ID:Hdk7qA5y0
>>117
UI Automation
ただ色々アレで結局Win32API併用することになることが多いけど

121デフォルトの名無しさん (ワッチョイ 911f-Q5xa)2019/02/13(水) 23:29:11.25ID: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

122デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/14(木) 10:46:56.68ID:oxBa5+ju0
>>121
まあ、気楽に回答しておく
>〇 自分で付ける関数名??
その通り
>△ dllファイルの場所フルパス??
Pathが通ってればフルパスでなくてもよい
>□ dllファイル内の何か?
別名宣言できる・・・まあ、調べろ

>ちなみにこれでも似たような事ができるんですか?
>Dim tarApp As Variant
>Set tarApp = CreateObject(“◎◎“)
> tarApp.Documents.Open FileName:="〇〇"
>Set wdApp = Nothing
書いている意味が理解できてないだろう、Office系のソフトはちゃんとしたルールで作られてるが
こんなこと気にする前に、有効なDllを作ってみろよ
尚、理解できてないことが丸わかり

123デフォルトの名無しさん (ドコグロ MM1f-l5h6)2019/02/14(木) 12:07:22.70ID:xvzsmsEPM
(´;ω;`)イベントが起こらなくなりました

124デフォルトの名無しさん (ワッチョイ e7e6-r8GT)2019/02/14(木) 12:08:59.63ID:FmdtC3Uo0
>>123
エクセル再起動しろ

125デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/14(木) 12:20:00.82ID:oxBa5+ju0
>>123
まあ、間違ってるんだろそれだけ
ソースを出さなきゃ何もないよ
イベント鳥杉ってよくあるからな
有効な手段は、護摩をたけ、できるだけ激しく火事には気を付けろ

126デフォルトの名無しさん (ワッチョイ 874f-5sVJ)2019/02/14(木) 13:20:00.69ID:chn4JYyT0
たとえば、A1からC50までデータがあってA列をキーにソートしたいのですが、
途中たとえば、10行、15行、20−25行は抜かしたいのです。 これらにはコメントや他のものが入ってるので
でもそれらを抜かして全体でソートしたいのですが、Unionで繋いでやったら複数のレンジは出来ないみたいな
エラーを返されました
何かいい方法はないでしょうか

127デフォルトの名無しさん (ワッチョイ 874f-5sVJ)2019/02/14(木) 13:50:43.73ID:chn4JYyT0
例えば、画面表示は止めて、メモリ上で行を移動させてソートする行をまとめてからソートして、
また行をもとに移動させてから、画面上に結果を表示とか、出来ると可能性があると思うのですが

128デフォルトの名無しさん (ワッチョイ ff6f-dKms)2019/02/14(木) 14:23:28.89ID:sSBdRoDO0
>>126
if i = 対象行 then
行入替え
end if
とかでいいんじゃね?

129デフォルトの名無しさん (オイコラミネオ MMdb-Fd8k)2019/02/14(木) 16:52:27.07ID:PSNlkVOrM
>>126
行を非表示にしたら対象から外してくれんかな…(試してない)

130デフォルトの名無しさん (ブーイモ MM7f-O/Qv)2019/02/14(木) 17:20:39.55ID:L4IMpAFUM
>>121

〇 自分で任意に付ける関数名
□ dllがエクスポートしている関数名

131デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/14(木) 17:59:11.87ID:bFGkVmlp0
dllってよくわかんないだけどvbsのexecuteglobalみたいな感じ?

132デフォルトの名無しさん (ワッチョイ 874f-5sVJ)2019/02/14(木) 19:55:09.02ID:chn4JYyT0
>>129
マジかあ。  やってみた。 出来てる

なんだよ、プログラム作っっちゃった。 ソートしないところを一旦別に移して圧縮してソートしてから
下に戻すってやつ
なんだよ、 この2時間返して w

133デフォルトの名無しさん (アメ MM6b-+q6E)2019/02/14(木) 22:52:59.46ID:nNkHGtvOM
>>132
まあ、普通にデータはテーブルでもてば良いだけだろ
整形は別シートででーたをさんしょう

134デフォルトの名無しさん (アメ MM6b-+q6E)2019/02/15(金) 00:17:44.61ID:lL6vjf9tM
>>131
外部にライブラリーなどを持たすんだから
Include の方が近いだろ

135デフォルトの名無しさん (ワッチョイ dfeb-A2tD)2019/02/15(金) 00:49:30.00ID:6QKgXGI40
よろしくお願いいたします。

VBAで、半角カナ文字列を与えると、その文字列の中にある、
ァィゥェォャュョッ などの小さい字をアイウエオヤユヨツなどの大きい字(半角カナ)に変換して返す
functionを作りたいのですが、どう書いていいのかわかりません。

ひとつずつ、ァをアに変換、ィをイに変換、のように書くしかありませんか?
まとめて書く方法ってあるのでしょうか?

136デフォルトの名無しさん (ワッチョイ 7f2c-Ioh3)2019/02/15(金) 01:15:28.74ID:BkaZ3+610
Ruby のNKF とか、文字列.tr とか、正規表現とか

137デフォルトの名無しさん (ワッチョイ 5f7c-blJ9)2019/02/15(金) 01:18:13.72ID:vhn0rFgQ0
60項目7万件のjsonデータ読んで保存した。
開いたらモジュールとフォームが破損って何なんだよ。うう吐きそうだ。
10Gじゃメモリたりなかったのか?いや、それならそうメッセージがでるはず。
まさかこんなんでコード飛ぶとは思わなかったからバックアップは取ってない。
10分おきの自動バックアップのデータはあったけどデータ取るのに2日かかったからとっくに消えてる。
もう作る気おきない。
参った。

138デフォルトの名無しさん (ワッチョイ 5f7c-blJ9)2019/02/15(金) 01:20:07.21ID:vhn0rFgQ0
>>135
文字コードを差分だけ加算すればいい。

139デフォルトの名無しさん (アウアウエー Sa1f-ngFe)2019/02/15(金) 01:21:08.10ID:EWf/hEPba
>>137
ざまあ
そういうのはCSVを介するのが定石だろう

140デフォルトの名無しさん (ワッチョイ 872d-7G9U)2019/02/15(金) 01:23:24.10ID:NXuVhChr0
>>135
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


https://www.sejuku.net/blog/29736


動くかわからんけどお試しあれ。

141デフォルトの名無しさん (ワッチョイ e7ce-1ffV)2019/02/15(金) 01:37:27.77ID:6R3QhjK00
>>135
あんまり綺麗じゃないけど

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

142デフォルトの名無しさん (ワッチョイ e7ce-1ffV)2019/02/15(金) 01:38:16.76ID:6R3QhjK00
一部の文字列関数が、なぜか5ちゃんねる全体のNGワードになってるんで、わざとスペースを入れてある

143136 (ワッチョイ 7f2c-Ioh3)2019/02/15(金) 01:38:19.40ID:BkaZ3+610
Ruby では、

str = "ァィゥェォャュョッあ"

puts str.tr( "ァィゥェォャュョッ", "アイウエオヤユヨツ" )
#=> アイウエオヤユヨツあ

144デフォルトの名無しさん (ワッチョイ e7ce-1ffV)2019/02/15(金) 01:43:51.10ID: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

145デフォルトの名無しさん (ワッチョイ e7ce-1ffV)2019/02/15(金) 01:46:51.97ID: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

146デフォルトの名無しさん (ワッチョイ e7ce-1ffV)2019/02/15(金) 01:53:45.99ID: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

147デフォルトの名無しさん (ワッチョイ e7ce-1ffV)2019/02/15(金) 02:00:19.18ID: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

148デフォルトの名無しさん (アメ MM6b-+q6E)2019/02/15(金) 09:21:30.82ID:U9ClSHCYM
>>147
横レスだけど
他の言語に比べかったるいけどおいておいて
変換に使う文字列または配列はfunctionの外
変数はアドレス渡し function内で文字列を書き換え
変更が有った場合 true なかった場合false
使い勝手と動作速度を優先する
とスマホで書いてみる

149デフォルトの名無しさん (ブーイモ MMcf-O/Qv)2019/02/15(金) 09:40:41.96ID:GIzZTHxJM
>>147
たしかにs1を書き換えつつまたそれを返すというのは無駄だ。
ByValで受けて書き換えた結果を返すかByRefのままでSubにするかだと思う。
Booleanで返すのは今時の趣味には合わないんじゃないかな。

150デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/15(金) 09:58:15.95ID:FxoJIoi60
>>149
セルを書き換えるべきか書き換えないかの判断をする
全てのセルの書き換えは時間もかかるし、空白のセルもある
必要ないデータは書き換えないでいいようにする

if kanacaps(s1) then cells(i,j) = s1
のように

151デフォルトの名無しさん (ブーイモ MMcf-O/Qv)2019/02/15(金) 11:36:22.43ID:GIzZTHxJM
>>150
s1自体は As Stringだろ
元の質問もワークシート関係ない話のように見受けられる

152デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/15(金) 11:44:10.23ID:FxoJIoi60
>>151
だったら、このスレ関係ないな本当にそう思うのか?
自分の主張じゃなく要求者の状況を読まなければ意味ない
150の書き方でならシート全てを変換するfunctionも簡単にできるけど
お題を読めないのは厳しいな

153デフォルトの名無しさん (ワッチョイ e7ce-1ffV)2019/02/15(金) 11:49:05.00ID:6R3QhjK00
データ量と出現頻度と、呼び出し側でのデータの持ち方がわからない限り、最適解は出せないと思う
用途はなんだろう?半角カナが通るのにカナ小文字が使えないシステムなんて、大昔のオンラインシステムぐらいしか思い付かんけど

154デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/15(金) 11:56:15.89ID:FxoJIoi60
>>153
今更聞いてる処がどうなの?
こんなのどっちでも簡単なのに、私は書かないけどなポリシーです

155デフォルトの名無しさん (ブーイモ MMcf-O/Qv)2019/02/15(金) 11:59:50.72ID:GIzZTHxJM
>>152
データソースがRangeであるか否かに関わらずs1は As String相当 だろう。
件の関数が何を返すべきか(もしくはSubにすべきか)という話とは関連が薄い。

156デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/15(金) 12:04:24.39ID:FxoJIoi60
>>155
別にfunctionの使い方を考えないならどうでもいいじゃない
ただ誰も使わんだろ、それは言い過ぎか使うやつはいるな

157デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/15(金) 12:06:23.85ID:FxoJIoi60
基本的なことを理解せず、ソース書くやつって恥ずかしくないのかな?

158デフォルトの名無しさん (ブーイモ MMcf-O/Qv)2019/02/15(金) 12:09:16.16ID:GIzZTHxJM
>>157
不思議な意見を言う奴だな?

159デフォルトの名無しさん (アメ MM6b-+q6E)2019/02/15(金) 12:12:48.44ID:U9ClSHCYM
>>158
ここは、もうやめよう

160デフォルトの名無しさん (ブーイモ MM6b-OxnY)2019/02/15(金) 12:42:06.25ID:Aa3kOoYYM
俺は理解したいけど使うの自分ならまぁ動けば良いや派です

話題変わるけど今はselenium使えないの?
firefox操作したいけど色々なサイトのコード試しても動かんのだけど最新のseleniumVBAでfirefox操作するVBA使ってる人居たらfirefox起動からログイン処理するコード貼ってほしい

161デフォルトの名無しさん (ドコグロ MM3b-3Kdw)2019/02/15(金) 12:51:15.55ID:Qph8FA2WM
>>157
> 基本的なことを理解せず、ソース書くやつって恥ずかしくないのかな?
確かに>>150は恥ずかしいなw

162デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/15(金) 12:54:55.89ID:FxoJIoi60
>>161
ふ〜ん、でどのように?(笑)

163デフォルトの名無しさん (JP 0H4f-mnSR)2019/02/15(金) 13:05:41.84ID:QYjRxS22H
配列を使わざるを得ないなら二次元配列に変更前と変更後を並べて突っ込む

164デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/15(金) 13:08:15.40ID:FxoJIoi60
>>161
まさか、148で変更をBoolean返すようにしたのを前提に150を書いたけど
何も読まずに書いてる?

165デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/15(金) 13:13:10.46ID:FxoJIoi60
もうやばいけど、バカって好きだな

166デフォルトの名無しさん (アメ MM6b-+q6E)2019/02/15(金) 13:19:37.16ID:U9ClSHCYM
>>161
で、何か意見は?

167デフォルトの名無しさん (ブーイモ MMcf-O/Qv)2019/02/15(金) 14:34:08.07ID:GIzZTHxJM
>>163
結局そうなるよね。
一括で貼り付ければ楽なのに、わざわざ If でまだらに個別セットなんて却って遅くなる。

168デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/15(金) 14:59:45.37ID:FxoJIoi60
まあ、しょうがない罠
分かんないんだもの

169デフォルトの名無しさん (ドコグロ MM3b-3Kdw)2019/02/15(金) 15:22:25.20ID:Qph8FA2WM
> 基本的なことを理解せず、ソース書くやつって恥ずかしくないのかな?
とか言いつつ質問者の意向もわからんのにコード書いてドヤるとか w

170デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/15(金) 15:34:51.44ID:FxoJIoi60
>>169
じゃあ、お前ヒントも書かずにわかるのか?
ってか、引きこもりの文盲か?

171デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/15(金) 15:36:42.23ID:FxoJIoi60
あっ、すまん、ヒントを書いてもわからないんだよな

172デフォルトの名無しさん (ワッチョイ 27f9-xnHp)2019/02/15(金) 15:43:07.43ID:FxoJIoi60
>>167
どんだけ、アホで生きてるんjンだよ
関数の貼り付けとセルへの値の書き込すらわからんかな

173デフォルトの名無しさん (ドコグロ MM3b-3Kdw)2019/02/15(金) 17:36:05.74ID:Qph8FA2WM
>>170-172
だから
> 基本的なことを理解せず、ソース書くやつって恥ずかしくないのかな?
とかが不思議ちゃんて言われてるんだよ
セルへの書き込み程度でドヤるような奴だからしょうがないだろうけど w

174デフォルトの名無しさん (アメ MM6b-+q6E)2019/02/15(金) 18:35:03.47ID:U9ClSHCYM
>>173
うふ

175デフォルトの名無しさん (ワッチョイ c701-OvAq)2019/02/15(金) 19:18:49.62ID:FIDflx8L0
Range("A1")="名前"
Range("A2")="住所"
Range("A3")="性別"
Range("A4")="郵便番号"
みたいな複数にわかる処理を
Range("A1:A4")="名前、住所、性別、郵便番号"みたいな感じ(もちろんこれではダメ)で
一行(一回の処理)でまとめて設定できるような方法ってありますか?

176デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/15(金) 19:20:38.46ID:kIiggQTh0
>>175
ある

177デフォルトの名無しさん (ブーイモ MMcf-O/Qv)2019/02/15(金) 19:21:12.65ID: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))
これも書き換えがあったかどうかを判定する必要はない。
普通は後者を選ぶだろう。

178デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/15(金) 19:28:49.74ID:kIiggQTh0
>>177
これダメなやつ
最も負荷の掛かるセルへのアクセスは最小限にするべき
コードが短ければいいってもんじゃない

179デフォルトの名無しさん (ブーイモ MMcf-O/Qv)2019/02/15(金) 19:37:44.26ID:GIzZTHxJM
>>178
なんだよ
セルの個数の問題なのか貼り付け回数の問題なのかはっきりしろ

180デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/15(金) 20:01:27.87ID:kIiggQTh0
>>179
自分で処理時間計ってみれば?

181デフォルトの名無しさん (ワッチョイ 5fea-/KMh)2019/02/15(金) 20:18:49.96ID:V814XEHD0
>>175
Array

182デフォルトの名無しさん (アメ MM6b-+q6E)2019/02/15(金) 22:25:19.73ID:f25ghBxYM
まあ、例えばひづ

183デフォルトの名無しさん (アメ MM6b-+q6E)2019/02/15(金) 22:31:54.84ID:f25ghBxYM
スマホは書いてる途中で書き込んじゃう癖が有って申し訳ない
例えば日付を月日で表しているセルを文字列で取得すると月日の文字が取得できる
その文字をそのセルに書き込むと数値としての月日じゃあなくなるよな
不用意に変換しないことも大事なんだがな

184デフォルトの名無しさん (アメ MM6b-+q6E)2019/02/15(金) 23:12:49.57ID:f25ghBxYM
気になってshift jis の文字コードを確認してみた
If 166 < c And c < 176 Then
これは半角小文字だよ
お題は全角カタカナ小文字だろっと

185デフォルトの名無しさん (ワッチョイ a7da-cT+3)2019/02/15(金) 23:38:50.38ID:e71gRKct0
凄いよな。
何でこうも、どんな用途に使うのかわからないような処理ばっか出てくるんだか。

そのうち、VLOOKUP(縦検索)でもHLOOKUP(横検索)でもない、
斜め検索のJLOOKUP作れとか言い出しそうだな。

186デフォルトの名無しさん (ワッチョイ 5fa3-0XvR)2019/02/16(土) 00:29:38.87ID:VwWEnU/S0
データ処理の関数がわかんなくてお前らに横投げしてるからだろjk

187デフォルトの名無しさん (アメ MM6b-+q6E)2019/02/16(土) 01:02:24.60ID:Q7QEPoKZM
まあ何だな 全角カタカナの文字列に半角突っ込む奴の指示は聞かないけどな

188デフォルトの名無しさん (スフッ Sd7f-1ffV)2019/02/16(土) 01:38:49.39ID:tkdqnLOdd
最初の質問は>>135だぞ
処理したいのは半角カナ、作りたいのはFunction、関数の返す値は修正後の文字列と仕様が明記されてるのに、どうしてBooleanだのByRefだのが出てくるんだよ
おまけに全角とか言い出すやつまで出てくるし

189デフォルトの名無しさん (アメ MM6b-+q6E)2019/02/16(土) 02:12:02.80ID:Q7QEPoKZM
ァィゥェォャュョッ 全角小文字
ァィゥェォ 半角小文字
書いてるのが全角だったからな

190デフォルトの名無しさん (アメ MM6b-+q6E)2019/02/16(土) 02:22:26.92ID:Q7QEPoKZM
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE
(A1,"ァ","ア"),"ィ","イ"),"ゥ","ウ"),"ェ","エ"),"ォ","オ"),"ャ","ヤ")
,"ュ","ユ"),"ョ","ヨ"),"ッ","ツ")

191デフォルトの名無しさん (ブーイモ MM6b-KyI1)2019/02/16(土) 05:24:29.40ID:evls1zM4M
>>190
ワラ

192デフォルトの名無しさん (アメ MM6b-+q6E)2019/02/16(土) 05:32:17.75ID:Q7QEPoKZM
素人が素人に頼むとなそうなるわな
(笑)

193デフォルトの名無しさん (ワッチョイ bf8c-O/Qv)2019/02/16(土) 07:48:58.08ID:GEWA9gU60
方向が変わったのは>>148がきっかけだよね

194デフォルトの名無しさん (ワッチョイ 5f01-3Kdw)2019/02/16(土) 07:53:50.02ID:q1DAaOKG0
>>188-189
そこは最初から違和感あったわ
> VBAで、半角カナ文字列を与えると
って書いてて
> ァィゥェォャュョッ
って全角で書いてるからネタだと思って放置してたけどァィゥェォッュョみたいな文字ってスマホだと入力できないのな
(いや、できるかも知れんが俺にはわからんかったのでこれはコピペで入力した)
まあそれならそうと書いて欲しい

この手の変換はそれなりに需要があるみたいで
カタカナ 小さい文字 変換 vba
とかでググるとそれなりにヒットする
とりあえずは
https://www.relief.jp/docs/002223.html
とかを参考にすればいいと思う

195デフォルトの名無しさん (ワッチョイ e7ce-1ffV)2019/02/16(土) 10:00:10.02ID:uFHexw8O0
スマホで半角カナ小文字の入力は、俺のXperiaの場合だと「la」と入力すると全角小文字の「ぁ」になって、変換を押すと候補に半角「ァ」が出てくる

196デフォルトの名無しさん (ワッチョイ e7ce-1ffV)2019/02/16(土) 10:07:20.68ID:uFHexw8O0
フリック入力ならキーパッドの「ま」の下の「小」をタップすると小文字になって、候補に半角も自動的に出てくる

197デフォルトの名無しさん (ワッチョイ 0711-l0e6)2019/02/16(土) 13:35:38.12ID:V3lev6Wl0
>>175
1) Range("A1:A4") = WorksheetFunction.Transpose(Split("名前、住所、性別、郵便番号", "、"))

2) Range("A1:A4") = WorksheetFunction.Transpose(Array("名前", "住所", "性別", "郵便番号"))

3) Range("A1:A4") = [{"名前";"住所";"性別";"郵便番号"}]

198デフォルトの名無しさん (ブーイモ MM6b-blJ9)2019/02/16(土) 14:00:48.72ID:i29F+S9hM
VBAの2次元配列って1次元配列として使えないのね。不便。

199デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/16(土) 14:26:02.22ID:Y5C6RkaG0
二次元配列は何が入ってるか分かりにくいしネストも増えやすいから構造体かクラスを使う

200デフォルトの名無しさん (ブーイモ MM6b-O/Qv)2019/02/16(土) 14:36:39.42ID:eWrDkcRxM
>>198
割り切ってジャグ配列をメインに使えばいい
Rangeはしょうがないけど

201デフォルトの名無しさん (ワッチョイ c701-Fd8k)2019/02/16(土) 15:38:49.30ID:XgEm9HUa0
>>199
XLシートが二次元の表なんだから難しくないだろ。
三次元なら立体を思い浮かべればいい。四次元になると時間をイメージかな。そこまでやったことないからわからん。
三次元までのネストの深さは気にならないな… ifとかで増えるにしても。増えすぎるなら内部を切り出すかな。
まあ、仕様によってどう作るかはいろいろだけど。

202デフォルトの名無しさん (アークセー Sx7b-a/B5)2019/02/16(土) 16:03:55.03ID:kXl7LE8Fx
n次元 = n階層の木構造とイメージするのが単純で良いと思うが

203デフォルトの名無しさん (JP 0H4f-mnSR)2019/02/16(土) 16:14:59.54ID:3bJEG0FOH
>>201
難しくないのにわからんって馬鹿?

204デフォルトの名無しさん (ブーイモ MM6b-O/Qv)2019/02/16(土) 16:41:41.01ID:eWrDkcRxM
n次元より配列の配列の...の方が再帰的に扱いやすい

205デフォルトの名無しさん (ワッチョイ 5f01-3Kdw)2019/02/16(土) 17:53:27.66ID:q1DAaOKG0
>>203
日本語不自由?
難しくないのは二次元
わからんのは四次元

206デフォルトの名無しさん (ワッチョイ c701-OvAq)2019/02/16(土) 22:42:47.76ID: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の配列を呼び出したいんですがどこが間違っていますか?

207デフォルトの名無しさん (ワッチョイ 0711-l0e6)2019/02/16(土) 23:01:11.68ID:V3lev6Wl0
>>206

arr = arra
End Function

208デフォルトの名無しさん (ワッチョイ a7da-cT+3)2019/02/16(土) 23:03:14.34ID:CD9VXZwW0
エラーメッセージ何よ。

209デフォルトの名無しさん (ワッチョイ c701-OvAq)2019/02/16(土) 23:06:17.40ID:0In5hf0F0
>>208
インデックスが有効範囲にありません

210デフォルトの名無しさん (ワッチョイ a7da-cT+3)2019/02/16(土) 23:10:54.03ID:CD9VXZwW0
>>209
ああ、よくある、結局原因がよくわからないやつね。
試したら、>>207が正解だったわ。

面白いな。Thisworkbookに書いてあるものを呼ぼうなんて、
考えたこともなかったから、それが原因かと思ったわ。

211デフォルトの名無しさん (ワッチョイ 5fa2-A2tD)2019/02/16(土) 23:17:04.90ID:7Iomz0v50
そもそも配列名とプロシージャ名が同じところもおかしい

212デフォルトの名無しさん (ワッチョイ 478e-TQkV)2019/02/17(日) 00:05:03.03ID:kxT8s3Mp0
馬鹿はそんなもん
間違いにくいようにコードを書くことをしない

213デフォルトの名無しさん (ワッチョイ 5f7c-We++)2019/02/17(日) 09:02:57.20ID:hMcsTv+Y0
>>212
コードを書かなきゃ間違えないということか、なるほど。
それとも馬鹿は誤解を受けないような文章を書くことをしないってことか?

214デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 09:28:38.67ID:l7X7saNL0
俺が分かるからいいみたいな考えだとチームで開発はできないよ

215デフォルトの名無しさん (ワッチョイ 5f7c-We++)2019/02/17(日) 10:19:09.83ID:hMcsTv+Y0
>>214
それはよく解る。保守性も悪くなるよね。

216デフォルトの名無しさん (ドコグロ MM1f-ngFe)2019/02/17(日) 10:48:02.04ID:1fMGblo0M
一般的なプログラミング言語なら正しいけど、VBAだとかなり厳しくない?
下に合わせるとそれこそ可読性も保守性もクソもないゴミにしかならないよ

217デフォルトの名無しさん (アウアウウー Sa4b-mBMX)2019/02/17(日) 10:53:43.33ID:vi4O111wa
言語は問わず下に合わせるとゴミになる
属人性の排除といって下に合わせたがる人が少なく無いけどあれは間違いなんだ

218デフォルトの名無しさん (ワッチョイ a7da-cT+3)2019/02/17(日) 11:25:11.92ID:EkiBf8gr0
VBAで下に合わせると、やたらSelect & Selection.Copyが多い、
マクロの自動記録じゃねえのこれ?
みたいなのが出来上がる。

219デフォルトの名無しさん (ワッチョイ ff7c-/Ktc)2019/02/17(日) 11:45:18.78ID:7MWZQWrl0
ActiveHogeHoge へ参照が多いとそうなんだろうなと思うことにしている

220デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 11:45:44.34ID:l7X7saNL0
>>216
>>217
>>218
意味が伝わってないみたいだけど
cells(i, 1) = arr(i-1, 0) がセルに何が書き込まれるかはコードの前後を追わないと分からないよね
これを分かるようにするのが分かりやすいコード
プログラミングが上手か下手かは関係ない話

221デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 11:51:57.63ID:l7X7saNL0
多次元配列も Dim lngEleName As Long とか専用ループ変数を準備してるならいいけど、ijkで回してるのを見た日にはそいつを殴りにいくね。

222デフォルトの名無しさん (ワッチョイ 5fa2-A2tD)2019/02/17(日) 11:59:45.89ID:plSLxTsM0
ひえー
なんか諸先輩方思うところ多かったようで
自分も書くとき気をつけないと
初心者ですを免罪符にしないように気をつけよう

223デフォルトの名無しさん (ワッチョイ bf8c-O/Qv)2019/02/17(日) 12:32:03.24ID:jVC6vo8Y0
>>221
i, j, k でいいよそんなのw

224デフォルトの名無しさん (ドコグロ MM1f-ngFe)2019/02/17(日) 12:47:43.60ID:1fMGblo0M
>>221
i, j, k で分かりにくくなるような長ったらしいプロシージャを書くのが悪い

225デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 13:16:45.17ID:Nxpc9YF00
>>223
上司「お前クビ」

226デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 13:31:38.58ID:Nxpc9YF00
>>224
プロシージャが簡潔ならおk

227デフォルトの名無しさん (ブーイモ MMcb-O/Qv)2019/02/17(日) 13:42:14.79ID:gMXfU/jdM
>>225
つまらない趣味にこだわるのは中学生までだぞ

228デフォルトの名無しさん (ブーイモ MMcb-O/Qv)2019/02/17(日) 13:49:15.60ID:gMXfU/jdM
偏見かもしれんがプログラミングで日常言語に近づけようとするやつは代数とか苦手だった?
って思っちゃう

229デフォルトの名無しさん (ワッチョイ ff7c-wP4P)2019/02/17(日) 14:06:36.59ID:7mUUrd8D0
蛇腹erは代数が苦手(キリっ

230デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 14:20:05.25ID:Nxpc9YF00
>>227
上司「このiってなに?ちゃんと説明して」

231デフォルトの名無しさん (ワッチョイ 5f01-3Kdw)2019/02/17(日) 14:51:51.50ID:naWxhgEk0
単なるループカウンタですけど?
見ればわかりますよね?

232デフォルトの名無しさん (ワッチョイ bfb7-uWgP)2019/02/17(日) 14:57:39.75ID:k4RkjrxP0
>>221
Ing Ele ってなんの略ですか

233デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 15:13:51.30ID:Nxpc9YF00
>>232
しばくぞコラ(LongとElementだよ(にっこり))

234デフォルトの名無しさん (アークセー Sx7b-a/B5)2019/02/17(日) 15:32:11.89ID:t0Nzx7bGx
ループカウント用のプロシージャ内ローカル変数でiとかjとか使うのはありだと思う
モジュールレベル以上の参照スコープを持たせた変数をiとかjとかarrとかbufとかで宣言されてたら流石にキレるな

235デフォルトの名無しさん (ワッチョイ 4769-QWHq)2019/02/17(日) 15:36:00.05ID:de8FYcuQ0
スコープが大きいほど変数名も長くして

236デフォルトの名無しさん (ワッチョイ e7b0-3a8x)2019/02/17(日) 15:43:21.47ID:urjL+jec0
今時ハンガリアン使ってるのクソダサい

237デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 15:49:41.73ID:Nxpc9YF00
俺はゴールデンの方が好き
猫飼ってるから無理だけど

238デフォルトの名無しさん (ワッチョイ 87b5-5sVJ)2019/02/17(日) 16:33:33.48ID: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
とかしてもダメでした

239デフォルトの名無しさん (アウアウウー Sa4b-mBMX)2019/02/17(日) 16:40:07.44ID:vi4O111wa
共通の処理は共通モジュールかクラスに置いてください
シート1、シート2からはその共通の処理を呼び出してください
イベントハンドラはユーザーコードから呼び出すものではありません

240デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 16:50:40.07ID:Nxpc9YF00
>>238
Privateが付いてるプロシージャはそのモジュール内でのみ呼び出し可能
sheet1とsheet2は別モジュール
だから怒られてる

241デフォルトの名無しさん (ワッチョイ 87da-yQ/S)2019/02/17(日) 16:54:09.55ID:Bys9dR540
化石みたいなレスのあるスレだな

242デフォルトの名無しさん (ワッチョイ a7da-cT+3)2019/02/17(日) 17:02:42.50ID:EkiBf8gr0
>イベントハンドラはユーザーコードから呼び出すものではありません

面倒くさいとき、普通に呼び出してたわ。

243デフォルトの名無しさん (ワッチョイ 87b5-5sVJ)2019/02/17(日) 17:18:01.63ID:Rm6p2g7t0
>>240
Public にしてもはずしてもダメです

244デフォルトの名無しさん (ワッチョイ 478e-TQkV)2019/02/17(日) 17:22:34.48ID:kxT8s3Mp0
馬鹿はClassを知らない

245デフォルトの名無しさん (ワッチョイ a7da-cT+3)2019/02/17(日) 17:57:40.00ID:EkiBf8gr0
>>243
>>206みたいにしても?

246デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 18:15:37.59ID:l7X7saNL0
>>243
そもそもボタンってデフォで標準プロシージャに追加されなかったっけ?
標準モジュール作って、Sub ButtonClear_Click() をまるごと移動させたらいけんじゃね?

247デフォルトの名無しさん (ワッチョイ 5f7c-We++)2019/02/17(日) 18:27:30.13ID:hMcsTv+Y0
>>244
そんくらい知ってるよ、夏の日の1993だろ。
昭和生まれをナメるなよ。

248デフォルトの名無しさん (ワッチョイ 87b5-5sVJ)2019/02/17(日) 18:37:55.36ID:Rm6p2g7t0
調べてたらこんなのが出てきました
http://jscript.zouri.jp/Source/ExcelCtrl.html#LINK7
ちょっとずれてはいますが、ここで

// シートのマクロ関数を呼び出す
ExcelApp.Run( "MacroTest.xls!Sheet1.func1" );
ってのがあるから、標準モジュールだけじゃなくて、シートの関数も他のシートからも呼べるんだよね
マネてやってみたんだけどうまくいかん

249デフォルトの名無しさん (ワッチョイ a7da-cT+3)2019/02/17(日) 18:52:24.20ID:EkiBf8gr0
いや、普通に、シートを指定するんじゃ駄目のかな。
>>206はThisworkbookに続けて関数名書いてるけど。
クラスモジュールもそうやって指定するでしょ?

250デフォルトの名無しさん (スプッッ Sdff-isAZ)2019/02/17(日) 18:53:32.60ID:X48frccGd
???
lngEle?なんかよりi,j,kの方がよっぽど良いだろ。
どんなスコープの場合でも特別な意味の無いループ変数だよ。
世界中で、さらにいうと他言語でも共有されてる価値観だろ。
まあ、ローカル以外で使われることは無いけど。

251デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 19:03:59.23ID:l7X7saNL0
シートモジュール特有の制約があるのかもしれないけど調べるのめんどい

252デフォルトの名無しさん (スプッッ Sdff-isAZ)2019/02/17(日) 19:07:37.68ID:X48frccGd
>>238
根本的に考え方が分かっていない。
まず、色んな所から呼び出したいものは標準モジュールに書く。
そして、そいつを色んな所から利用するように設計する。

君の場合はButtonClear_ClickをSheet1からもSheet2からも使いたいんだからButtonClear_Clickの中身を別関数にして、Sheet1のButtonClear_Clickからその関数を呼び出すようにする。

253デフォルトの名無しさん (アウアウウー Sa4b-mBMX)2019/02/17(日) 19:09:51.42ID:vi4O111wa
vbaerは他の言語やらんから非常識なコードを悪気なく書いてしまうんだよな

254デフォルトの名無しさん (ワッチョイ 87b5-5sVJ)2019/02/17(日) 19:12:06.36ID:Rm6p2g7t0
>>252
ちょっと違うんだなあ

sheet1にPrivate Sub ButtonClear_Click()
ってかいてるでしょ。 この処理はシート1に対してする処理なのです
それをシート2から、ある特定のタイミングでしたいので、こうなっている

標準モジュールにあるものはもちろん呼べるけど、疑似的にもそうしないといけないのかな

255デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 19:19:24.91ID:l7X7saNL0
>>254
Worksheets(“シート名”).Range() = 処理

256デフォルトの名無しさん (ワッチョイ a7da-cT+3)2019/02/17(日) 19:20:23.75ID:EkiBf8gr0
試したら、Sheet2.ButtonClear_Clickで動くわ。
もちろん、Privateは削除でね。

>>252
一般的にはそうだけど、
実際には出来るんだから、思い込みだよ。

257デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 19:22:02.36ID:l7X7saNL0
ていうかsheet1にコードを書いたとしてもsheet2がアクティブになってればそっちに書き込まれるからね

258デフォルトの名無しさん (ワッチョイ 87b5-5sVJ)2019/02/17(日) 19:22:44.45ID:Rm6p2g7t0
>>256
Worksheets("sheet1").ButtonClear_Click
みたいな仰々しいことしなくても良かったのね。 ありがと。 あとでやってみる

259デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 19:33:19.37ID:l7X7saNL0
>>258
それは入れる物が間違ってる

260デフォルトの名無しさん (スプッッ Sdff-isAZ)2019/02/17(日) 19:50:26.47ID:X48frccGd
>>254
違わない。
設計の話をしている。
シート2からも呼び出すんだからシート1に対して行う処理であっても変わらん。

というか、基本的な所で噛み合ってないな。
どんな所に書いてもいきなりブックやシートの省略はしないのが基本だぞ。
Withを使うかオブジェクト変数で受けるのが基本だ。

261デフォルトの名無しさん (ワッチョイ 87b5-5sVJ)2019/02/17(日) 19:56:06.48ID:Rm6p2g7t0
>>256
おかしいなあ。 オブジェクトが必要ですっていうエラーが出てきて動かない

262デフォルトの名無しさん (ワッチョイ 5fe7-dKms)2019/02/17(日) 19:56:59.16ID:9z/u7JpJ0
「ちょっと違うんだなあ 」は草

263デフォルトの名無しさん (ワッチョイ 475f-Zj1S)2019/02/17(日) 20:15:00.10ID:jhLaQWBk0
>>261
君面白いねえ

264デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 20:26:28.38ID:l7X7saNL0
>>261
Sheet1.Select

265デフォルトの名無しさん (ワッチョイ a7da-cT+3)2019/02/17(日) 20:36:24.20ID:EkiBf8gr0
>>261
これでtestって出ない?

[シート1]
Sub ButtonClear_Click()
 MsgBox "test"
End Sub

[シート2か標準モジュール]
Sub ButtonClear_Click()
 Sheet1.ButtonClear_Click
End Sub

266デフォルトの名無しさん (ワッチョイ 87b5-5sVJ)2019/02/17(日) 20:39:08.27ID:Rm6p2g7t0
>>264-265
sheet1.Selectをしなくても、セルへの代入だけなら出来た.。 シート2のボタンを押しても、シート1のセルに書き込まれる
でも、Cells(10,10).Selectみたいなセルの選択をするときは、sheet1.selectをしておかないとエラーになる

267デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 20:43:50.21ID:l7X7saNL0
>>266
書き込みたいシート名を指定する
Worksheets(“シート名”).cells(1,1) =

268デフォルトの名無しさん (ワッチョイ a7da-cT+3)2019/02/17(日) 20:44:14.77ID:EkiBf8gr0
>>266
こうやって書けば。

Worksheets("Sheet2").Cells(10, 10).Value = "test"

269デフォルトの名無しさん (ワッチョイ 87b5-5sVJ)2019/02/17(日) 20:46:06.79ID:Rm6p2g7t0
>>267-268
いやだから、書き込みだけなら、問題なく出来るって書いたじゃん
裏でも出来る
でも、セルの選択とかが入ると、シートをSelectして動かないとダメ

270デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 20:47:37.46ID:l7X7saNL0
>>269
そりゃそうでしょ

271デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 20:53:21.26ID:l7X7saNL0
つーかエラーメッセージ全部貼って見せて

272デフォルトの名無しさん (ワッチョイ 4769-QWHq)2019/02/17(日) 21:43:11.83ID:de8FYcuQ0
vbaの関数ってデフォルトが参照渡しなんすね
やらかすとこだった

273デフォルトの名無しさん (ワッチョイ 478e-TQkV)2019/02/17(日) 21:45:56.53ID:kxT8s3Mp0
お前らオブジェクトのこと全然わかってないんだな
馬鹿ばっか

274デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/17(日) 21:57:57.43ID:l7X7saNL0
>>273
答えplz

275デフォルトの名無しさん (アークセー Sx7b-a/B5)2019/02/17(日) 23:04:18.50ID:t0Nzx7bGx
こんなスレ見てたら頭おかしなルで

276デフォルトの名無しさん (ワッチョイ 478e-TQkV)2019/02/17(日) 23:11:53.07ID:kxT8s3Mp0
>>274
継承されたわけでもないオブジェクトから別のオブジェクトのメソッドをどうやって呼び出すかわからんのか?
馬鹿は死ねよ。

277デフォルトの名無しさん (アウアウウー Sa4b-mBMX)2019/02/17(日) 23:38:23.26ID:vi4O111wa
言い過ぎでは?
繊細な人だったら傷付くよ

278デフォルトの名無しさん (アークセー Sx7b-a/B5)2019/02/17(日) 23:57:36.39ID:t0Nzx7bGx
シート1内外から呼べるPublicな共通関数を作って、クリックイベントハンドラのコードと他モジュールのコードの双方から呼ぶようにすれば良いだけでは
イベントハンドラを直接コードユーザにコールさせようとするのはおかしい

279デフォルトの名無しさん (ワッチョイ bf8c-O/Qv)2019/02/18(月) 00:01:45.68ID:WfgOED4y0
>>272
ByRefもByValも付けずに宣言するとそれはByRefになるって事をかな?
であれば既にやらかしてるのを気づかずにいる可能性があるから過去のモジュールを点検した方がいい

280デフォルトの名無しさん (アウアウウー Sa4b-mBMX)2019/02/18(月) 00:02:49.20ID:5bMGA+jIa
いやよく考えるとイベントハンドラを呼ぶのはおかしいがシート2クラスのメソッドを呼ぶだけなら別におかしくはなかった
それだけでは共通化する理由にはならない

281デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/18(月) 00:59:55.76ID:hC76sm/R0
>>276
へーシートもオブジェクトなのか
全然意識してなかったわ
勉強になったよありがと
でもお前口悪いから友達いなさそうw

282デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/18(月) 01:23:07.51ID:hC76sm/R0
シートモジュールに構造体宣言してハマった記憶がある
そういうことだったのか

283デフォルトの名無しさん (ワッチョイ a761-9BuZ)2019/02/18(月) 01:23:55.49ID:5t9ctY5m0
頭が悪い 顔が悪い 目が悪い 口が悪い
性格も悪い 手癖も悪い 足腰も最近悪い
酒癖も悪い 女癖も悪い 寝つきも悪い
そんな俺でもその返事の仕方は失礼なんじゃないかな?
とは思うけど。
もしや高度なツンデレさんなのかな?
と、解釈して

次の方 ( ゚д゚)ノどうぞ

284デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/18(月) 06:33:10.39ID:hC76sm/R0
きっと彼の親はVBAに殺されてしまったんだよ

285デフォルトの名無しさん (アークセー Sx7b-a/B5)2019/02/18(月) 08:08:58.79ID:MgpZvmd8x
シートもオブジェクトなのか、ってのはちょっと驚いたな
シートどころか自作フォームも含めてGUIで見て触れるもののほぼすべてがオブジェクトだぞ

286デフォルトの名無しさん (ワッチョイ 8788-5sVJ)2019/02/18(月) 08:18:13.27ID:8se8rGxR0
なんか、バカばっかりだなあ
>>269に他のシートにもアクセスできるって書いてあるだろ。何がオブジェクトだよ
ただ、セルのセレクトは出来ないって

287デフォルトの名無しさん (ワッチョイ ff6f-DcjB)2019/02/18(月) 08:58:38.38ID:AsxIQPE70
前にやってたユーザサポート業務を思い出した

288デフォルトの名無しさん (スプッッ Sdff-isAZ)2019/02/18(月) 12:38:44.05ID:UyrImbcld
>>286
バカはお前。
そのセルのセレクトができないと言ってる元の命令がオブジェクトがどういう階層になってるか分かってない典型的な例。

そういう人のコードだから、セレクトなんて必要無いだろうなと先読みしてるんだろう。
何しろセレクトすることなんて極めて殆ど書くことが無い(必要となることが無い)処理だからな。

289デフォルトの名無しさん (ワッチョイ e7ce-1ffV)2019/02/18(月) 13:13:11.83ID:qW3BE+Gz0
ブックもシートもセルもボタンもシェイプもみんなオブジェクトだよ

WindowsはOSそのものがオブジェクトの塊
そういうふうに設計されてる

290デフォルトの名無しさん (ブーイモ MMcb-O/Qv)2019/02/18(月) 13:49:41.69ID:uzxEynMwM
Selectionはイミィディエイトからはよく使う

291デフォルトの名無しさん (ワッチョイ ff7c-wP4P)2019/02/18(月) 16:12:57.29ID:JTiYKdtz0
化石観たいな臭いレスでも良いけど
もうちょっと面白いレスが観たいな
VBAネタもう飽きた

292デフォルトの名無しさん (ワッチョイ a7e3-dCfb)2019/02/18(月) 16:21:45.06ID:luqjRhnP0
https://japan.cnet.com/article/20087747/

「Microsoftにとって、(Officeのような)ウェブベースのアプリケーションサービス
を提供することは願ってもないことだろう。これにより、エンドユーザーや違法コピー
の問題をもっとしっかりコントロールできるようになる。しかも、大量にメディアを
用意したり、それを流通させるコストも不要になる」
--Garcia on Slashdot

293デフォルトの名無しさん (ワッチョイ a761-dCfb)2019/02/18(月) 16:23:02.33ID:L3SsO4kg0
>>292
誤爆してしまった。
スマソ。

294デフォルトの名無しさん (ワッチョイ e7e6-Ayov)2019/02/18(月) 17:39:58.04ID:xGyDNRFK0
VBAスレにまで来てVBAネタ飽きたって、こんなとこくる暇があったら病院行った方が良いんちゃう?

295デフォルトの名無しさん (ワッチョイ 4769-QWHq)2019/02/18(月) 21:13:51.18ID:25ajLZ330
vbaおそすぎい…

296デフォルトの名無しさん (アークセー Sx7b-a/B5)2019/02/18(月) 21:25:29.27ID:Y1NxofRZx
Selectメソッドは記録マクロの記述のためだけに存在する命令と言ってもいいくらいのものだからな
実際に実務でSelectメソッドを書いたことは殆どない
特定のセル範囲(特に複数セル)が選択された状態を作り出すことに実務上の意味があるならば書かざるを得ないんだろうけど

297デフォルトの名無しさん (ワッチョイ a7e6-yQ/S)2019/02/18(月) 21:53:14.97ID:eiV6jRN10
どうしてセレクチオンしないの〜!

298デフォルトの名無しさん (ワッチョイ 2735-cT+3)2019/02/18(月) 22:15:32.75ID:aFs+DxuY0
>>296
コードの最後に
cells(1,1).select
って書いておくのが僕

299デフォルトの名無しさん (ワッチョイ a7da-cT+3)2019/02/18(月) 22:31:21.38ID:R8eupock0
カーソル位置の初期化によく使うけどな。Select

300デフォルトの名無しさん (オッペケ Sr7b-GpPJ)2019/02/18(月) 22:37:53.94ID:hG18nYywr
application.gotoを使う

301デフォルトの名無しさん (アークセー Sx7b-a/B5)2019/02/18(月) 22:51:42.46ID:Y1NxofRZx
スクロールの有無を選べるApplication.Gotoの方が小回りが効くわな

302デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/18(月) 23:52:49.47ID:hC76sm/R0
SelectよりActivateの方がしっくりくる

303デフォルトの名無しさん (ワッチョイ 7fdd-/KMh)2019/02/19(火) 00:02:24.54ID:mTnWFuG30
>>302
違いってなんだっけ?

304デフォルトの名無しさん (ワッチョイ 2735-cT+3)2019/02/19(火) 00:21:46.10ID:XTzrMDQC0
selectは複数できる
acrivateは1つだけ

selectしたcellsはselectionで取得でき、
activateしたセルはActiveCell

また、
ActiveCellはsheetではなくapplicationのメンバ
Application.ActiveCell.Select

↓はできない
sheets(1).activeCell.Select

今色々試しただけだから、間違ってたらゴメン

305デフォルトの名無しさん (ワッチョイ 5fea-/KMh)2019/02/19(火) 08:36:38.55ID:9CovpibD0
>>304
Oh,thx.

306デフォルトの名無しさん (ブーイモ MM6b-blJ9)2019/02/19(火) 11:46:22.25ID:9gUKp59aM
WebBrowserのフォームに文字列変数に入れたHTMLを反映させるのってどうすれば良いですか?

307デフォルトの名無しさん (スプッッ Sdff-isAZ)2019/02/19(火) 12:39:59.48ID:oemf1bOsd
>>306
説明が分かりにくい。

WebBrowserのフォーム
→フォームにWebBrowserコントロールを貼り付けたもの?

文字列変数に入れたHTML
→指定したURL?

フォ―ムにWebBrowserコントロール貼り付けて、指定したURLを表示させたいってこと?

308デフォルトの名無しさん (スプッッ Sdff-isAZ)2019/02/19(火) 12:42:06.27ID:oemf1bOsd
それともHTMLのソースコードを元にブラウザ表示させたいってこと?

309デフォルトの名無しさん (ワッチョイ 2735-cT+3)2019/02/19(火) 13:02:37.15ID:XTzrMDQC0
>>306
input type="text"を変更したいんでしょ
メールアドレスに「123」を入れる例
めっちゃめんどくさいけどガンバレ

Private Sub UserForm_Activate()
WebBrowser1.Navigate ("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

310デフォルトの名無しさん (JP 0H4f-mnSR)2019/02/19(火) 13:06:28.07ID:DYfM7cdrH
質問じゃないけどcsv取り込みでQueryTable使ったら感動した
ググるとほとんどLine Inputでやってるんだもんなぁ

311デフォルトの名無しさん (アウアウウー Sa4b-Ayov)2019/02/19(火) 13:10:41.92ID:mzDqOD0La
ExcelでJavaScriptが使えるみたいだけど、どんなことに使えるのでしょうか?

312デフォルトの名無しさん (ワッチョイ 2735-cT+3)2019/02/19(火) 13:21:57.84ID:XTzrMDQC0
>>310
便利なんか?
住所の番地ってどうにかできるんかね
1-1が日付扱いになってしまう

>>311
jsがどうこうではなく、vbaが化石すぎる
jsは慣れれば超楽に書ける。これから覚える人は大分楽できるんじゃないかな
ただ、jsはところどころじゃあくなので気をつける必要がある
具体的にはundefined

313デフォルトの名無しさん (アウアウウー Sa4b-Ayov)2019/02/19(火) 13:30:09.72ID:mzDqOD0La
>>312
おぉ!レスありがとう😊
そっかぁvbaは化石か…
今職場で必要だから、業務を通して勉強してるんだよね。
JavaScriptは少し勉強してたけど、会社が受け入れてくれるかな。

314デフォルトの名無しさん (ワッチョイ 8702-5sVJ)2019/02/19(火) 13:35:17.78ID:XJA9DtkM0
>>296
広範囲のソートとかどうすんの?

315デフォルトの名無しさん (ワッチョイ 2735-cT+3)2019/02/19(火) 13:44:22.98ID:XTzrMDQC0
>>313
幾つか忘れていた

jsのメリット
・jsはwebでも標準的な言語
・イラレのスクリプトもjsで動かす事もできる。ほとんど使わないけど
・googleSpreadsheetのマクロはjs

ただ、化石言語にもいいところはある。今までのノウハウがweb上に山程ある
そして仕様変更も20年なかったから、全コードがそのまま使える
(他の言語はバージョン違いでエラーが発生したり、全く動かなかったりする)

結局やることはエクセルのスクリプトなので、vbaでも十分ちゃ十分、
jsのノウハウが積み上がるまでは、vbaの方が楽出来ると思う

316デフォルトの名無しさん (アウアウウー Sa4b-Ayov)2019/02/19(火) 13:55:09.79ID:mzDqOD0La
>>315
なるほどなるほど。
詳しく説明してくれてありがとう!
たしかにvbaは歴史があるから、調べてるのは楽だよね。
JavaScriptはしばらく家で勉強した方が良さそうだねw
時期をみて上司に提案してみるよ!

317デフォルトの名無しさん (アウアウウー Sa4b-nFDO)2019/02/19(火) 14:12:13.94ID:yAUMSA3na
Java script は
VBA → VB.Net → ASP.net って勉強して行く過程で勉強することになるから
そんなに慌てなくてもいいよ

318デフォルトの名無しさん (ドコグロ MM1f-ngFe)2019/02/19(火) 14:15:00.77ID:D8b3v+FoM
>>317
ドヤ顔のところ申し訳ないけど、ASP.NET(最新のものではなくVBerが知っている方のASP.NET)も化石だよ

319デフォルトの名無しさん (ドコグロ MM1f-ngFe)2019/02/19(火) 14:16:57.12ID:D8b3v+FoM
ちなみに最新のASP.NETと呼ばれるものはVBer達がよく知っているASP.NETとは全く互換性がない
それどころか.NET Frameworkすら切り捨てた

320デフォルトの名無しさん (ワッチョイ 2735-cT+3)2019/02/19(火) 14:24:40.78ID:XTzrMDQC0
>>319
知らなかった、昔のASP.NETの印象しかない。名前が完全に足引っ張ってる

321デフォルトの名無しさん (ブーイモ MM6b-blJ9)2019/02/19(火) 15:20:23.15ID:oSkNfL9QM
>>307
>>309
説明不足すみませんでした
ユーザーフォームにwebBrowserのコントロールを張り付けて、そこにURL指定ではなくて直接htmlの文章を書き込みたいです。

322デフォルトの名無しさん (ワッチョイ 2735-cT+3)2019/02/19(火) 15:44:15.07ID:XTzrMDQC0
>>321
かなりめんどくさいことをしている気がする
やりたい事はこれじゃないんじゃないか

Private Sub UserForm_activate()
'多分一回呼ばないとダメ
WebBrowser1.Navigate ("https://example.com")
End Sub

Private Sub UserForm_Click()
html = "<div>foo</div>"
WebBrowser1.Document.body.InnerHtml = html
End Sub

323デフォルトの名無しさん (ワッチョイ 8702-5sVJ)2019/02/19(火) 16:06:51.67ID: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

みたいにしたいのですが、どうしたら一番スマートに出来るでしょう?

324デフォルトの名無しさん (JP 0H4f-mnSR)2019/02/19(火) 16:25:56.81ID:DYfM7cdrH
>>323
四角形を描画するメソッドは知ってる?

325デフォルトの名無しさん (JP 0H4f-mnSR)2019/02/19(火) 16:32:07.86ID:DYfM7cdrH
>>323
ごめん勘違い
GetCursorPos()

326デフォルトの名無しさん (JP 0H4f-mnSR)2019/02/19(火) 16:34:56.56ID:DYfM7cdrH
>>323
またまた勘違い
座標の指定はむりじゃね
それぞれの四角形の位置関係に規則性はないんでしょ

327デフォルトの名無しさん (JP 0H4f-mnSR)2019/02/19(火) 16:46:08.58ID:DYfM7cdrH
Topとか名前を付けないで配列の要素番号に対応づけるとか

328デフォルトの名無しさん (ブーイモ MMcf-blJ9)2019/02/19(火) 19:15:58.92ID:C6whiypoM
>>322
それです!ドストライクです!!
エスパーさん手間を掛けて本当にすみませんでした。
二日考えてダメだったんですけど一回何か表示させる必要があったんですね。

あと次回は自力で出来るように頑張ります〜!!
ありがとうございました!

329デフォルトの名無しさん (ワッチョイ 071f-BmB6)2019/02/19(火) 19:40:34.45ID: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に入れる方法ですかね?

330デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/19(火) 20:09:29.49ID:3o3WGLUD0
>>329
多次元配列は最後の要素しか拡張できないから、左の要素はUbound(Split(1行目,”,”))で最初に確定させるしかない
右の要素はredim preserveで拡張できるから普通にループで増やしていけば良い

331デフォルトの名無しさん (アークセー Sx7b-a/B5)2019/02/19(火) 20:17:18.51ID:f2qQz3/xx
>>323
クラスにしたらいいんじゃないの
vbaで引数付きコンストラクタの実現は難しいけど、
四つの座標情報を引数に取るプロパティ関数を用意して、Rect構造体のプロパティを持たせるようにすればそれらしいことができるのでは

332デフォルトの名無しさん (ワッチョイ 8702-5sVJ)2019/02/19(火) 20:41:15.17ID:XJA9DtkM0
>>331
VBAでもクラスって出来たんですね。 ちょっとググってみました
ありがとう。 これは知らなかった

333デフォルトの名無しさん (ワッチョイ 5f2f-dPPD)2019/02/19(火) 21:21:04.93ID:eXSGnhOj0
>>323
構造体でできなくはない
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
改行多すぎらしいので:で詰めて書いてる

334デフォルトの名無しさん (ワッチョイ 5f2f-dPPD)2019/02/19(火) 21:25:35.60ID:eXSGnhOj0
>>329
エクセルでCSV開いてシートをそのまま2次元配列に突っ込めば良いんじゃないか

335デフォルトの名無しさん (ワッチョイ 5f4f-nFDO)2019/02/19(火) 21:47:03.10ID:LH3y88CS0
>>319
え?
そうなの?
それは知らなかった。

ちなみに最新はASP.netのcore2.1だと思うんだけど
VisualStudioでASP.Net Coreプロジェクトを作る際、
.Net Coreと.Net Freamworkのどちらのプラットフォームを選択するか聞いてくるけどあれは何なの?

336デフォルトの名無しさん (アウアウエー Sa1f-ngFe)2019/02/19(火) 22:14:11.03ID:+ssFN3TXa
>>335
ASP.NET Core 3.0以降ではFull .NETが切り捨てられることが公式に明言されてる
3.0はまだPreviewだけどね

337デフォルトの名無しさん (ワッチョイ 877d-yQ/S)2019/02/19(火) 22:33:29.04ID: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」の上か下かという質問です。

338デフォルトの名無しさん (ワッチョイ 2735-cT+3)2019/02/19(火) 22:37:52.77ID:XTzrMDQC0
定義は一番最初にまとめて全て書くと管理しやすい
個人的にはそもそも書かないけどな〜

339デフォルトの名無しさん (ワッチョイ 071f-BmB6)2019/02/19(火) 22:45:04.21ID:VgLhyIar0
>>330
自分でも調べてたけど、「最後の要素しか増やせない」って同じこと書いてありました。これは
例えば、行数読んだ結果が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のが良いですかね?

340デフォルトの名無しさん (スプッッ Sdff-BmB6)2019/02/19(火) 22:50:47.62ID:VJWnLClRd
>>337
VBは上にまとめ
C#は使う時
他の言語はしらん。あくまでイメージ。

スコープは短くが理想だから長くなって下部に変数が初登場ならFunctionとかCallで余分そうなものは排除。

だからそのループも逃がす

341デフォルトの名無しさん (ワッチョイ bf8c-O/Qv)2019/02/20(水) 00:08:08.78ID:Hgznwu9O0
>>339
あなたの用途に合ってるのは2次元配列じゃなくて配列の配列。
ReDim arr(0 To n)
arr(i) = 別の配列  ` i : 0〜n
みたいなことができる

「別の配列」のところに、csvの一行分を処理して配列を返す関数を当てはめればいい。
もちろんクラス化してもいいけどさ

342デフォルトの名無しさん (ワッチョイ 7f2c-Ioh3)2019/02/20(水) 03:34:25.29ID:B2QSVSiS0
>>329-334
Ruby では普通に、2次元配列に入る

require "csv"

p CSV.read( "test.csv" )

結果
[["id", "first name", "last name", "age"],
["1", "taro", "tanaka", "20"],
["2", "yumi", "adachi", "21"]]

343デフォルトの名無しさん (JP 0H4f-mnSR)2019/02/20(水) 07:38:24.67ID:5mnmpgTAH
クラスって要素名を予め宣言しないといけないからcsvの要素が変わると対応できない?
教えてエロい人

344デフォルトの名無しさん (アークセー Sx7b-a/B5)2019/02/20(水) 07:54:07.56ID:KjQRkkj7x
要素名で名前解決する処理がないなら、レコード値を配列プロパティで受け渡すだけで良いと思う
名前解決が必要なら要素宣言しないといけないね

345デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)2019/02/20(水) 11:17:04.40ID:Aqbfj0bAp
教えてください。
エクセルのマクロです
PDFファイル(100ページくらいある)を、エクセルに、全ページをたて一列に貼り付けたいのですが、
どう書けばいいでしょうか

346デフォルトの名無しさん (ドコグロ MM1f-ngFe)2019/02/20(水) 11:58:45.20ID:EgtCXVwuM
RPAを買ってコピペを自動化するのが手っ取り早いよ

347デフォルトの名無しさん (ワッチョイ e7ce-1ffV)2019/02/20(水) 12:07:33.49ID:crzgHpZv0
なぜPDFを貼り付けるのか
そのまま印刷すればええやん

そのPDFは1つのファイルの中に100ページあるの?
1ページだけのPDFファイルが100個あるの?

バラバラのPDFファイルを1つに結合したいだけならフリーウェアでできるよ

348デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)2019/02/20(水) 12:28:15.94ID:Aqbfj0bAp
>>347
印刷のためじゃなく、PDFをシートにはり、横にエクセルでコメント入れたい。

349デフォルトの名無しさん (JP 0H4f-mnSR)2019/02/20(水) 12:36:44.12ID:5mnmpgTAH
コメントならPDFファイルでも入れられるよ

350デフォルトの名無しさん (ワッチョイ 2735-cT+3)2019/02/20(水) 12:37:09.49ID:HgkG/6H60
>>345
PDFを画像に分割→エクセルに貼り付け
って流れになる
PDFから直接どうこうは止めたほうが良い、PDFを触るのはかなりめんどくさい

PDFを画像に分割するソフトがあると思うから、まずはそれを探して試してみて
どういう形式で画像が出て来るかが分かれば、後はvba簡単に書けると思う

>>349
そういやそっちの方が早いね

351デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)2019/02/20(水) 12:38:58.44ID:Aqbfj0bAp
>>349
大量のコメントや式です

352デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)2019/02/20(水) 12:39:49.65ID:Aqbfj0bAp
>>349
大量のコメントや式です

353デフォルトの名無しさん (スッップ Sd7f-TQkV)2019/02/20(水) 12:41:03.23ID:zcHFtFOnd
>>345
「教えてください」で始まる質問をするのは馬鹿しかいない法則

354デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)2019/02/20(水) 12:53:11.56ID:Aqbfj0bAp
分割するとは?
100ページのドキュメントだから100個のファイルを作成するということでしょうか。

355デフォルトの名無しさん (ワッチョイ 2735-cT+3)2019/02/20(水) 12:55:03.75ID:HgkG/6H60
そういう事

356デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)2019/02/20(水) 13:15:01.09ID:Aqbfj0bAp
分割しないで、ページを読み込み、貼り付けはできないのでしょうか?

357デフォルトの名無しさん (JP 0H4f-mnSR)2019/02/20(水) 13:17:35.13ID:5mnmpgTAH
100in1で出力すればいけんじゃない?

358デフォルトの名無しさん (スッップ Sd7f-TQkV)2019/02/20(水) 13:27:36.70ID:zcHFtFOnd
エクセル方眼紙の厚かましい馬鹿は死ね

359デフォルトの名無しさん (JP 0H4f-mnSR)2019/02/20(水) 13:27:47.31ID:5mnmpgTAH
PDFを画像にするっていうのはプリンタで印刷するのと同じイメージだから基本1ページ1ファイルね

360デフォルトの名無しさん (ワッチョイ 2735-cT+3)2019/02/20(水) 13:48:22.42ID:HgkG/6H60
>>356
できるけどめんどくさいんだって。
自分用ですら>>350の手順踏む
この件は誰もやらんって断定するから諦めたほうが良い

361デフォルトの名無しさん (JP 0H4f-mnSR)2019/02/20(水) 13:51:25.06ID:5mnmpgTAH
pdfをtxtにできるサイトがあるね

362デフォルトの名無しさん (エムゾネ FF7f-TQkV)2019/02/20(水) 14:19:25.05ID:3CKo6tJGF
そもそもスレタイ読めない馬鹿は死ね

363デフォルトの名無しさん (ワッチョイ e7ce-1ffV)2019/02/20(水) 14:49:29.70ID:crzgHpZv0
どうしてもVBAとExcel上でやりたかったら
100ページのPDFを100枚の画像に変換するのはフリーウェアで一発でできる
画像をワークシートに並べるだけならVBAで簡単に書ける

上司の命令とかで他の選択肢がないなら、俺ならこうする

364デフォルトの名無しさん (アウアウクー MM7b-0464)2019/02/20(水) 16:49:36.00ID:RE4oCyjZM
>>345
>エクセルのマクロです
なにがどうエクセルのマクロなのか全くわからなくて面白かった

365デフォルトの名無しさん (ワッチョイ 2735-cT+3)2019/02/20(水) 17:37:12.40ID:HgkG/6H60
>>362>>364
エクセルのマクロだけでいけるとおもったんやろ
実際出来なくはないと思うけどすげーしんどいって事にまで気が回らなかったことは仕方ない

366デフォルトの名無しさん (ワッチョイ 4794-7Bqt)2019/02/20(水) 17:59:23.96ID:lkHSh4f40
「○○したいんですけど教えて下さい」
「なんでそんなことしたいの?バカなの?」

何でこんな回答いちいちすんだろ
答えてくてウズウズしてる自称プロが自分のわからない質問来てカリカリしちゃってるのか?

367デフォルトの名無しさん (ワッチョイ 071f-BmB6)2019/02/20(水) 18:50:33.54ID:fho/sw2r0
なんでそんなめんどくさいことするの?
〇〇でよくね?

とかよく見るけど、質問者が聞いてる事だけ教えればいいのにと思う。

368デフォルトの名無しさん (ワッチョイ c701-mnSR)2019/02/20(水) 19:09:49.05ID:W87kh7t10
できない。

以上。

369デフォルトの名無しさん (ワッチョイ 2735-cT+3)2019/02/20(水) 19:09:49.63ID:HgkG/6H60
>>366
大正解
vbaと実務の範囲を分かってない未熟者

>367
それを言うと
「〇〇はやりたくないんですw」
という回答が帰ってくるのがもう過去何度も

370デフォルトの名無しさん (アウアウウー Sa4b-mBMX)2019/02/20(水) 19:19:56.14ID:xmZEnq49a
QAに集中したいならteratailかstackoverflow.jpがオススメですよ

371デフォルトの名無しさん (ササクッテロル Sp7b-nJZM)2019/02/20(水) 19:30:07.27ID:Aqbfj0bAp
1ページ目が貼り付けられるけど、ページを指定できないのかな

372デフォルトの名無しさん (ワッチョイ a7da-cT+3)2019/02/20(水) 21:05:48.46ID:Wi/z/KN10
>>311
htmlに書かれているJavaScriptを実行したい時とか。

373デフォルトの名無しさん (ワッチョイ 475f-Zj1S)2019/02/20(水) 22:38:30.49ID:jH2rY7Fc0
めんどくさいっていうか、AcrobatOLE使えないと無理じゃない?
Excelだけで完結できる手法あるの?

374デフォルトの名無しさん (オッペケ Sr7b-A2tD)2019/02/20(水) 22:49:49.45ID:pZJkKCoer
>>367
質問者が気付いてない、知らないだけの場合もあるから

375デフォルトの名無しさん (ワッチョイ a7da-cT+3)2019/02/20(水) 22:57:03.31ID:Wi/z/KN10
上司から言われてるだけというケースもあるだろうな。

376デフォルトの名無しさん (アークセー Sx7b-a/B5)2019/02/20(水) 23:14:04.77ID:zOoel5SRx
手順固定で指示する糞上司っているよね
その手順がボトルネックになって糞の塊のようなツールが出来上がったりする

377デフォルトの名無しさん (ワッチョイ 6a7c-5UjA)2019/02/21(木) 01:06:52.19ID:wp9rEEne0
>>373
ハンドアセンブルを覚える。
バイナリで書き出す。

378デフォルトの名無しさん (ワッチョイ 7d01-Y1hu)2019/02/21(木) 05:02:12.65ID:fo0B5AuF0
>>376
組織はそれが普通。趣味で仕事やりますというわけには行かない

379デフォルトの名無しさん (ブーイモ MMc9-0USI)2019/02/21(木) 07:46:17.08ID:X1BgxDGFM
昭和の労働集約的な企業の紹介乙

380デフォルトの名無しさん (ワッチョイ 6a98-Y1hu)2019/02/21(木) 08:00:03.08ID:WrVB68JS0
趣味で作り上げたとしても説明してレビュー受けないといけない。その労力って結構きついしいっそ言われたまま作り上げた方が精神的にラクね

381デフォルトの名無しさん (アウアウウー Sa21-eq4B)2019/02/21(木) 08:15:00.93ID:Uwc+mrjba
>>376
固定するのは百歩譲って良いんだけど説明も了解もなく決める人には困るね
より良い方法を提案する機会がないままルールとして決まってしまう

382デフォルトの名無しさん (JP 0H2e-AaBj)2019/02/21(木) 08:24:52.09ID:hsBre2j/H
マニュアル化できるレベルの仕事しかできないって自虐だろ

383デフォルトの名無しさん (スップ Sd0a-er5G)2019/02/21(木) 12:40:21.42ID:tE5CGhgad
1.質問に回答する。
2.質問者から、「その場合だと〜が上手くいきません。」と返事。
3.その場合は〜すれば良いと回答する。
4.質問者から「それだと〜」...
5.2-4を何度か繰り返す。
6.質問者に「そもそも君はその処理で何をやりたいんだ?」と聞く。
7.質問者の返事を聞いて、結局質問者の設計が糞だったと知る。
8.1-7をを何度となく経験してると、質問を見た時に設計の糞さ加減がかなりの確度で予想できるようになる。
9.質問者の聞いてることだけ回答すると糞設計のせいでドツボに嵌まるので聞いてることだけ回答するのは辞めようという結論になる。
10.質問者は自分の糞設計に気付かないので、質問にだけ回答すれば良いのにと思う。

384デフォルトの名無しさん (ワッチョイ c594-uPuZ)2019/02/21(木) 16:01:26.14ID:EV12A9vO0
こうやって質問者をひとくくりで決めつけちゃうような視野が狭い人が一番の癌なんだよな

バカほどなんでも決めつけて単純化させようとする
勝手に単純化させた結論を赤の他人にいきなり押しつけるから当然理解されない
理解されないことを相手がバカだからと決めつけていきなり罵り出す
頭がおかしい人なのかな?と放置されると論破して黙らせたと思い込んで悦に浸り出す
そしてプロ回答者としての自信を増して増長して居座る

385デフォルトの名無しさん (ドコグロ MMb1-bAbS)2019/02/21(木) 16:10:32.99ID:7HScUEGsM
大抵の事務仕事は本来単純なことをわざわざ難しくして仕事を作っているだけなのは事実だね
VBAや最近だとRPAのような小手先の自動化ツールのは、本質的なプロセスの見直しに対するモチベーションを削いでいる面もある

386デフォルトの名無しさん (ワッチョイ 6935-dS/9)2019/02/21(木) 16:23:50.23ID:YsIQ3BIo0
営業はそれが売上に繋がってると信じてやまないので、
どうにもなんないのよ〜

387デフォルトの名無しさん (スップ Sd0a-er5G)2019/02/21(木) 18:36:57.10ID:tE5CGhgad
>>384
お前が碌に回答したことが無い初心者なだけだろ。
いろんな所で回答してる奴らは皆同意する。

388デフォルトの名無しさん (ドコグロ MMb1-bAbS)2019/02/21(木) 18:47:24.87ID:7HScUEGsM
>>387
同意するわ
明らかに知識の乏しい初心者が妙に具体的に手段を特定して助けを求めてきた場合、
「そんなことはどうでもいいから目的を教えろ」と対応するのが最も確実で効果的で手っ取り早い

389デフォルトの名無しさん (ワッチョイ 6935-rusg)2019/02/21(木) 18:56:23.16ID:YsIQ3BIo0
>>383
>8.1-7をを何度となく経験してると、質問を見た時に設計の糞さ加減がかなりの確度で予想できるようになる。
この辺りになると回答でイライラする事が無くなるゾ

390デフォルトの名無しさん (ドコグロ MM12-ZgJD)2019/02/21(木) 18:57:24.28ID:ZuxKbWfpM
>>384
お前が決めつけててワロタ

391デフォルトの名無しさん (ワッチョイ 6d1f-Ty0B)2019/02/21(木) 19:18:39.73ID: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次元配列でシート丸ごと持ってきてから入れてく感じにしたんだけど、ここにいる人達はどう書く?

392デフォルトの名無しさん (ワッチョイ b501-eSdf)2019/02/21(木) 19:30:43.16ID:UHF1Q6o+0
データ取得は別プロシージャにして配列につっこむ

393デフォルトの名無しさん (ワッチョイ 6935-rusg)2019/02/21(木) 19:43:21.62ID:YsIQ3BIo0
caiiってcallの事か
>>392が綺麗と思うけど、大抵>>391ぐらいで終わる

394デフォルトの名無しさん (ワッチョイ 89c5-T+SP)2019/02/21(木) 19:53:49.02ID:dFUlMofS0
>>391
おまえプロさんか?
まだプロさん予備軍やったら気いつけや
そこからプロさんに堕ちるんはあっちゅう間やで

395デフォルトの名無しさん (ワッチョイ c594-uPuZ)2019/02/21(木) 19:57:47.93ID:EV12A9vO0
>>387
さすがプロ回答者の鏡
嫌なら別に回答者なんてやらなくてもいいんだよ?
質問者をひとくくりに見下すようなひねくれ者になってまでプロ回答者をやり続けてる目的ってなに?
こんなとこで他人を見下してなきゃ自尊心保てないとかそんな感じ?

396デフォルトの名無しさん (ワッチョイ 6935-rusg)2019/02/21(木) 19:58:58.69ID:YsIQ3BIo0
>>395
回答も質問もしないならさっさと消えて

397デフォルトの名無しさん (ワッチョイ 6a2f-oRCO)2019/02/21(木) 20:03:08.56ID:mRRRBv2X0
>>384
こうやって回答者をひとくくりで決めつけちゃうような視野が狭い人が一番の癌なんだよな


バカほどなんでも決めつけて単純化させようとする
勝手に単純化させた結論を赤の他人にいきなり押しつけるから当然理解されない
理解されないことを相手がバカだからと決めつけていきなり罵り出す
頭がおかしい人なのかな?と放置されると論破して黙らせたと思い込んで悦に浸り出す

398デフォルトの名無しさん (アークセー Sxbd-ki5U)2019/02/21(木) 20:08:15.12ID:pV/9VR1fx
質問に対する回答よりも糞みたいな煽り合いに熱中する奴ってなんなの

399デフォルトの名無しさん (ワッチョイ b501-eSdf)2019/02/21(木) 20:14:11.51ID:UHF1Q6o+0
質問者は基本的に馬鹿
「インターネットは開くんですけどxxシステムが開きません」と言われてTraceやらブラウザ設定やらやった挙句、LANケーブルが挿さってないだけでインターネットはキャッシュでした、っていうようなオチが山ほどある
奴らの言葉を鵜呑みにしてはいけない

400デフォルトの名無しさん (ワッチョイ a569-K3Le)2019/02/21(木) 20:40:34.06ID:8KPV6qY80
ループから抜けるときにブレイクとかコンティニューないのこれ?

401デフォルトの名無しさん (ワッチョイ 6935-rusg)2019/02/21(木) 20:44:24.69ID:YsIQ3BIo0
>>400
exitがある
Sub foo()
For i = 1 To 1000
Debug.Print i
If i > 100 Then
Exit For
End If
Next
End Sub

402デフォルトの名無しさん (ワッチョイ 89c5-T+SP)2019/02/21(木) 20:49:56.47ID:dFUlMofS0
>>399←こいつホンマもんのプロさんやんwww
Traceてwwwwwwww

403デフォルトの名無しさん (ワッチョイ b501-eSdf)2019/02/22(金) 00:25:53.24ID:9R98EKTp0
>>402

404デフォルトの名無しさん (ワッチョイ 6a7c-RjxB)2019/02/22(金) 00:44:27.12ID:EpE2F9dV0
混沌とした質問ではなくてある程度整形された質問ならお互いに健全かもしれないね。
「例えば質問のためのテンプレ埋めてもらう」とかだけでもやり取りの回数減るんじゃないかな。
テンプレの内容はよくわからないけど、例えば「配列が解るか、オブジェクトが解るか、APIが解るか」とか書いてもらえれば質問者のレベルか解りやすいから罵ることもないだろうし
全体の流れの一部として困ってるのか、単純に言語仕様で困ってるのかだけでも質問者に必要なのがコンサルなのか解答なのか切り分けしやすいと思う。

405デフォルトの名無しさん (アウアウエー Sa52-bAbS)2019/02/22(金) 00:57:28.09ID:nGlWTBX9a
【目的】
【何がわからないのか】
【どうなることを期待しているのか】
【何故それが必要だと考えたのか】
でいいよ
質問者のレベルなんてレスの内容見りゃわかるだろ

406デフォルトの名無しさん (ワッチョイ 5e68-rusg)2019/02/22(金) 01:31:51.52ID:1cZDvNG50
>>405
>【目的】
>【何故それが必要だと考えたのか】
これは無くてもいいかも
多分あんまり良い情報は返ってこない気がする

>【何がわからないのか】
これも無くて良いかもしれないけど、
まぁ一応質問スレなので

後は最初の状態が欲しい
初めと終わりがあれば何とでもなる
それと反復頻度。一回だけなら一回だけ用の雑コードで済ますし、毎日ならもうちょい丁寧に書く
ってわけで以下になっていると楽

【作業前の状態】
【終了時の状態】
【何がわからないのか】
【作業の頻度(一回だけ or 何度も)】

407デフォルトの名無しさん (ワッチョイ f1ce-ZT00)2019/02/22(金) 05:05:38.47ID:+/kCrfoP0
データ量も欲しいなあ
1万件なら雑コード、100万件なら処理速度も意識してコード書く

408デフォルトの名無しさん (JP 0H2e-eSdf)2019/02/22(金) 09:18:19.59ID:OJD9m6ZlH
あんまり敷居を高くすると質問者が減るよ

409デフォルトの名無しさん (アークセー Sxbd-ki5U)2019/02/22(金) 09:36:13.35ID:tzlpYPDLx
質問者が減れば珍回答で恥をかくリスクも減って回答者のプライドが保たれるので問題ない

410デフォルトの名無しさん (JP 0H2e-eSdf)2019/02/22(金) 09:46:06.70ID:OJD9m6ZlH
>>409
そう考えてるのはお前だけだよ

411デフォルトの名無しさん (ワッチョイ 6a90-rusg)2019/02/22(金) 09:53:52.37ID:HFM6F1Kc0
まぁプロ回答者どもが罵り合いやってますが、質問者の方はそんなの気にせず
どんどん質問してくださいな w

412デフォルトの名無しさん (ワッチョイ 5e68-rusg)2019/02/22(金) 10:30:26.16ID:1cZDvNG50
>>408
どうすればいいか提案してくれ

413デフォルトの名無しさん (ワッチョイ c594-uPuZ)2019/02/22(金) 16:26:24.07ID:brEIpzdG0
このスレの本質はプロ回答者選手権だからな
プロ回答者の敵はプロ回答者
質問者など餌に過ぎない
その餌を誰が一番上から踏み潰すかを競い合う

ちなみにプロ回答者にもなると質問に答えたりしない

414デフォルトの名無しさん (ワッチョイ 5e68-rusg)2019/02/22(金) 16:41:48.96ID:1cZDvNG50
>>413
なるほど!
まさに>>413さんのような方ですね

415デフォルトの名無しさん (ワッチョイ 9e8c-0USI)2019/02/22(金) 16:46:43.90ID:8DxZ0bMn0
なるほど
プロ回答者ってのは「質問スレにおける回答活動」のプロって意味か

416デフォルトの名無しさん (アウアウウー Sa21-/vCN)2019/02/22(金) 20:37:47.33ID:O594Y42ea
まぁ別に目的の記述は無くてもいいけど
何を目的にしているかの記述があれば
代替案考えてくれる人もいるだろうし
欲しい解答が得られやすい場合もあるわな

逆に余計なこと言って欲しくないのなら
書かないのも有りだと思うけど
解答者がゲスパーして答えるのも
また有りだと思うし

417デフォルトの名無しさん (アウアウウー Sa21-/vCN)2019/02/22(金) 20:44:37.13ID:O594Y42ea
>>400
ループから抜けるのは>>401の人が言う通り
Exitを使えばいいけど、次のループに行くような
.Netで言うContinueはないので
分岐でループしているロジックの最後に持って行くしかないんじゃないかな?

418デフォルトの名無しさん (ワッチョイ 39da-dS/9)2019/02/22(金) 21:01:06.12ID:Pvmgb/R80
ここの質問を見ると、よほど変なもん作らされてるんだろうなって思う。
何に使うのかわからないようなのが多くて、
実務で使いそうなのがあまり出てこない。

419デフォルトの名無しさん (ラクッペ MM6d-K3Le)2019/02/22(金) 21:23:19.91ID:yyymEZ9cM
実務では文字列解析とデータベースからの検索程度で難しくは無いんだけど
適当に組んだせいか妙に遅いのが悩み
高速化するテクニックとかないかな

420デフォルトの名無しさん (ワッチョイ f1ce-ZT00)2019/02/22(金) 21:42:30.22ID:+/kCrfoP0
>>419
VBAを捨てる

421デフォルトの名無しさん (ワッチョイ a6da-dS/9)2019/02/22(金) 22:11:55.73ID:moZ6n3ck0
>>419
早いpcに買い替える

422デフォルトの名無しさん (ワッチョイ 39da-dS/9)2019/02/22(金) 22:45:12.67ID:Pvmgb/R80
二重Forループ
 ↓
VLOOKUP
 ↓
高速VLOOKUP
 ↓
SQL

これより速いのって、やっぱアセンブラ?

423デフォルトの名無しさん (ワッチョイ 39da-dS/9)2019/02/22(金) 22:46:15.97ID:Pvmgb/R80
アドバンスフィルタが抜けてた。

424デフォルトの名無しさん (ドコグロ MM0a-bAbS)2019/02/22(金) 23:22:12.68ID:Ig/cWVtXM
>>422
インデックスを張ってSQLでJOIN
オンデマンドなトランザクションじゃなくて単発の巨大なバッチならHiveとか使うのもいい

425デフォルトの名無しさん (ワッチョイ 8aa3-5+1H)2019/02/23(土) 01:23:52.97ID:CTQXI+x50
エラーがわかりにくいのがいちばんのストレス
そのほかにも可変長引数とかジェネリクスとかwithの糞文法とか短絡評価未搭載とかインターフェイスが歪んだ設計になるとか色々遅れすぎ
所詮底辺が一発ツールで使う言語

426デフォルトの名無しさん (アークセー Sxbd-ki5U)2019/02/23(土) 01:28:03.84ID:M/apCBqcx
短絡評価がないせいでネストを深くせざるをえないときがあるんだよね

427デフォルトの名無しさん (ワッチョイ 11b0-0RHA)2019/02/23(土) 04:42:29.90ID:GIBqdFBY0
短絡的なVBerは多いのにな

428デフォルトの名無しさん (ワッチョイ ea4f-/vCN)2019/02/23(土) 07:16:01.49ID:F2VDrfwR0
>>425
その辺は仕方ない
C#やRubyやってる人がJavaは糞だって言ってるのと大差ない

429デフォルトの名無しさん (ワッチョイ 3968-rusg)2019/02/23(土) 09:04:33.17ID:Cm202fZQ0
>>425
エラーチェックは本当にな
これでforが無いって言われる。本当にないのはもちろnendif
さすがにもう迷う事は無いけど、
初心者の頃は散々苦しめられた

Sub foo()
For i = 1 To 10
If True Then
Next
End Sub

430デフォルトの名無しさん (ワッチョイ 9e8c-0USI)2019/02/23(土) 09:20:01.07ID:CvvsLWYy0
エラーってコードのエラーのことか
実行時のことかと思った

431デフォルトの名無しさん (ワッチョイ 3968-rusg)2019/02/23(土) 09:21:13.09ID:Cm202fZQ0
あぁ、実行時エラーの可能性もあるか
あれはactiveにしてないsheetのcellをselectした時はハマったけどそれ以外は特に・・・

432デフォルトの名無しさん (ワッチョイ 9e8c-0USI)2019/02/23(土) 09:21:56.77ID:CvvsLWYy0
唯一(?)の短絡評価である Select Case のリストはクソだと思いながらたまに使う

433デフォルトの名無しさん (ワッチョイ b501-eSdf)2019/02/23(土) 10:29:43.91ID:AFk0uxx90
短絡評価ってなんですか?

434デフォルトの名無しさん (アウアウエー Sa52-bAbS)2019/02/23(土) 10:35:04.36ID:sW0ZRaO0a
>>433
お前がGoogleの採用選考を受けても学歴で足切りされて職務経歴の中身すら見てもらえないだろ?
結果が決まってるのに余計な評価をするのはリソースの無駄だからだ
そのように、評価が確定した時点で残りの評価を省いて結果を出す戦略を短絡評価という

435デフォルトの名無しさん (ワッチョイ 9e8c-0USI)2019/02/23(土) 10:49:47.77ID:CvvsLWYy0
>>434
GoogleはOr評価かもしれないよ

436デフォルトの名無しさん (ワッチョイ b501-eSdf)2019/02/23(土) 11:44:31.84ID:AFk0uxx90
>>434
お前バカだな
Googleは学歴より経歴重視だよ

437デフォルトの名無しさん (ドコグロ MM12-bAbS)2019/02/23(土) 12:14:20.39ID:yEreZVJRM
>>436
低学歴にも凄い経歴の奴はいるが、高学歴の中にはもっと沢山いるんやで
採用のための人的リソース最適化問題に対する戦略として、学歴フィルタが有効であることは十分に証明されている

438デフォルトの名無しさん (ワッチョイ b501-eSdf)2019/02/23(土) 13:07:59.71ID:AFk0uxx90
>>437
履歴書と職務経歴書って同封して送られてくるんだから同時に見ればいいじゃん
それとも30秒くらいの時間を惜しんで職務経歴書読まずにお祈りするの?
大した戦略だねw

439デフォルトの名無しさん (ドコグロ MM12-bAbS)2019/02/23(土) 15:21:22.50ID:yEreZVJRM
>>438
学歴なら人が見る必要すらないでしょ
書類選考のコストは一桁違うかと

440デフォルトの名無しさん (ワッチョイ ea01-ZgJD)2019/02/23(土) 16:24:43.18ID:UPmGtBeI0
>>438
たかが30秒と言う奴は10,000件あったら何時間かかるかを考えてからレスしろ

441デフォルトの名無しさん (ワッチョイ b501-eSdf)2019/02/23(土) 18:43:00.90ID:AFk0uxx90
Googleはそもそも学位が必要ない時点でお前らズレてんだよ

442デフォルトの名無しさん (ワッチョイ c55f-65GJ)2019/02/23(土) 19:03:21.30ID:FI/m1MnA0
うんむ

443デフォルトの名無しさん (ワッチョイ 39da-dS/9)2019/02/23(土) 19:33:38.12ID:to9UN42C0
ただの例にここまで突っ込むか?

444デフォルトの名無しさん (ワッチョイ 9e8c-0USI)2019/02/23(土) 20:37:03.99ID:CvvsLWYy0
短絡評価の例としてはわかりやすかった

445デフォルトの名無しさん (ワッチョイ 8aa3-5+1H)2019/02/23(土) 22:13:21.58ID:CTQXI+x50
配列をインラインで生成する方法でもあればいいのに

446デフォルトの名無しさん (ワッチョイ b501-W5xD)2019/02/23(土) 23:20:45.04ID:E54ZDPfM0
>>400
ブレイクは >>401
Continueは、Nextの前に例えば CONTINUE:とラベル付けて、Goto CONTINUE で代替可。
これで何も過不足ないし、意図を読めないやつは(周りに)いないので、しょっちゅう使ってる。

447デフォルトの名無しさん (ワッチョイ b501-eSdf)2019/02/24(日) 04:42:51.56ID:ZjoVn9Sx0
goto使うと負けた気分になるけどネスト深くなるくらいなら使う

448デフォルトの名無しさん (ワッチョイ 9e8c-0USI)2019/02/24(日) 10:14:59.06ID:PMakJCH00
>>445
そういう関数を作れば解決する話では?

449デフォルトの名無しさん (ワッチョイ f1ce-ZT00)2019/02/24(日) 11:16:37.13ID:x1+EfWpB0
昔から言われてるけどGoToとかExitみたいな無条件ジャンプはできるだけ使うべきじゃない
ループから抜ける条件が複数ある時は、条件判定部分を関数にして外に出せばたいがい解決する

450デフォルトの名無しさん (ワッチョイ 5d04-viXF)2019/02/24(日) 11:20:53.15ID:UtSvB3y70
>>449
3重構造のFor文とかって、いちいち全部のFor文に条件を書くんか?

451デフォルトの名無しさん (ドコグロ MM15-bAbS)2019/02/24(日) 11:27:07.38ID:cR8EPyISM
下向き限定なら許す
バカみたいな脱出フラグ使われるよりよっぽどマシ
上向きgotoは死ね

452デフォルトの名無しさん (ワッチョイ 5d04-viXF)2019/02/24(日) 11:31:30.55ID:UtSvB3y70
>>446
VBAにはなんでContinueがないんだろうな
これ、ほんとめちゃ不便だわ。 これのためにもgotoは使ってるわ。てか、必須になっている

453デフォルトの名無しさん (ワッチョイ 5d04-viXF)2019/02/24(日) 11:34:47.34ID:UtSvB3y70
Forの3重構造の場合、例えば、i, j, kで回したとき、一番中の処理で、
i=10000
j=10000
k=10000
とか設定したら、全部抜けるという技は使ったことはあるが、Next k の次に処理があってNext jとかってなってるときは
やはりgoto を使うので、結局こういう技は使わなくなった

454デフォルトの名無しさん (ワッチョイ 3968-rusg)2019/02/24(日) 12:03:06.64ID:laz54YR/0
for、特に二重ループから抜ける時はgotoで良い
if flg then exit for
こんなもん何個もあったら余計見づらいし間違う

>>449
気持ちはわかるけど、どうしても>>450になって余計に見づらい

>>45
20年前の言語で全く進化してないからな
python2.x→3.xの悪夢を見た者としてはこれはこれで良い

455デフォルトの名無しさん (アークセー Sxbd-SaAU)2019/02/24(日) 14:56:48.98ID:eghZe4V2x
Case (i) ⊇ Case (j) ⊇ Case (k)....っていう感じの線形の包含関係が無条件に成り立たない限り、3次元以上のループ管理はややこしくなるだけだよな

456デフォルトの名無しさん (スップ Sd0a-er5G)2019/02/24(日) 15:43:11.74ID:Jr9LmcmNd
>>429
それに苦しめられたのはお前が悪い。
きちんとインデントする自分なりのルールがあればそんなことには最初からならない。

457デフォルトの名無しさん (スップ Sd0a-er5G)2019/02/24(日) 15:50:41.15ID:Jr9LmcmNd
三重のル―プで条件によって全部から抜けるって処理自体あんまり無いだろ。
設計が悪いんじゃないの?

458デフォルトの名無しさん (ワッチョイ 3968-rusg)2019/02/24(日) 16:01:32.16ID:laz54YR/0
>>456
>それに苦しめられたのはお前が悪い。
どう見てもvbaのエラーチェックがしょぼすぎる
少なくとも>>429みたいなエラーチェックはあり得ない。あっても修正される

>>457
殆ど無いが、エクセルはそもそもがセルが行列の二次元+シートの三次元
開いてるブックを含めれば四次元だけど、さすがにこれは無い
全シートもあんまりないけどな

全セル(usedrange)に処理をかけて特定条件で抜けるというのは何度かあるな
ただまぁ別に抜けんでもそんあに変わらないというのもあるけど

459デフォルトの名無しさん (ワッチョイ c594-uPuZ)2019/02/24(日) 16:43:43.47ID:EsuDtWv80
エラーがわかりにくいという話に
エラーを出すおまえが悪いとマウント取りに行くプロ回答者

マウントがとりたくてやってるのか本当にただのバカなのかどっちなんだろ

460デフォルトの名無しさん (ワッチョイ 9e8c-0USI)2019/02/24(日) 17:14:34.21ID:PMakJCH00
まあでも多重ループから一気に抜ける方法がExit Function/Sub しかないんだから
ループを含む部分をサブルーチンとして切り出す以外あるまいよ

461デフォルトの名無しさん (アウアウウー Sa21-eq4B)2019/02/24(日) 17:42:50.42ID:RNHs4bDba
ループを回す以上はループを回す理由があるはず
その理由をわかりやすい関数名にしてループを切り出す
途中で抜けたければExitする

462731 (ワッチョイ 11e6-Vd0N)2019/02/24(日) 17:45:18.70ID:DRTFUInr0
いや、doとfor組み合わせれば二重ループ、三重ループからも抜けれるよ。
実用性は置いといて。

463デフォルトの名無しさん (ワッチョイ 39e6-rusg)2019/02/24(日) 17:54:50.07ID:+Nxplz4k0
>>454
N88さわってたからループからgotoするのは違和感あるわ

464デフォルトの名無しさん (ワッチョイ b501-W5xD)2019/02/24(日) 18:03:52.89ID:vPp3qwU80
>>459
ただのバカだと思うよ。
あの場合は明らかにエラーメッセージがおかしい。

でも、エラーチェックしてると2つ以上の原因(またはどちらかが間違い)が考えられる場合がよくある。
その時どうメッセージ出すかは、作る人(仕様)次第。

ちなみに、
If xxx Then Exit For
If xxx Then _
Exit For
If xxx Then
Exit For
End If
それぞれ意見はあるだろうが、無駄に行増やしたくないが、マルチステートメントもな… なので、自作では2番目をよく使う。(もちろん仕様で決まってるならそれ優先。賛否について議論はしない)

465デフォルトの名無しさん (ワッチョイ ada2-uPuZ)2019/02/24(日) 18:39:00.05ID:L3+XvQB40
いつまで経ってもほったらかしにされてるVBAが悪い
Pythonがどうたら言う話はどうなった

466デフォルトの名無しさん (ワッチョイ 9e8c-0USI)2019/02/24(日) 19:22:57.41ID:PMakJCH00
資産が多すぎて移行不可

467デフォルトの名無しさん (スップ Sd0a-er5G)2019/02/24(日) 22:11:47.76ID:Jr9LmcmNd
>>464
最後の奴を使う。
インデントで明らか。
というか、そんなエラーを出すこと自体無い。

が、もちろんスタイルの問題だから一番最初の奴を使おうが2番目のを使おうが問題無い。
エラー出してもすぐに分かるならな。

ちなみにその最後の奴ならIfとEndIfを書いてからExit Forを書く。For Nextの場合も中身は後だ。
染み付いてるんでね。
別にそういう書き方をすべきと言ってるんじゃない。
エラーにすぐ気付くなら何も問題は無い。

468デフォルトの名無しさん (ワッチョイ 0aa2-uGSY)2019/02/25(月) 05:22:32.65ID:+5CiRMIi0
PythonAという新しい言語が誕生します

469デフォルトの名無しさん (ブーイモ MMc9-5UjA)2019/02/25(月) 09:04:42.27ID:8UCufaEGM
VBAって遅い?
セルにもの入れると遅くなるって以外で全般的に。

470デフォルトの名無しさん (ワッチョイ 3968-rusg)2019/02/25(月) 09:16:19.92ID:RXoXH9qp0
>>469
遅い
どうしてもエクセルが枷になる
大規模な計算をしたいならvbaは避けたほうが無難

471デフォルトの名無しさん (ブーイモ MM8e-0USI)2019/02/25(月) 10:41:49.47ID:8lMUk5exM
純粋な数値計算部分は遅くはないんだけどね
シートアクセスが遅いのはまあ

472731 (ワッチョイ 11e6-Vd0N)2019/02/25(月) 12:13:02.41ID:lRskRR3f0
>>469
ようするにVBの部分の話か?
変数の大ニュースとかループとか、配列のメモリ確保とか

473デフォルトの名無しさん (スップ Sd0a-er5G)2019/02/25(月) 12:31:17.59ID:iOBpdHSUd
確かに遅いんだけど、遅いと言ってる奴の大半はそいつのコードに問題があるような気がする。
コード変えたら100倍速くなったとかざらだし、VBAが遅いせいでと感じることは殆ど無い。
遅い場合でも処理を考えたら仕方ないと思える場合が殆ど。

474デフォルトの名無しさん (スップ Sd0a-er5G)2019/02/25(月) 12:42:50.70ID:iOBpdHSUd
>>471
純粋な数値計算部分が遅いと思うよ。
だからAPI使ってマルチスレッドのコード書いても処理が追い付かなくなる危険性があるわけで。
ただ、そんなの遅いと感じるようなものじゃないし、遅さが気になったら自分のコ―ドを疑った方が良い。

475デフォルトの名無しさん (オイコラミネオ MMb5-W5xD)2019/02/25(月) 13:56:48.78ID:avG/zv9MM
裏で動かせるなら、処理遅くても他の作業してればエエねん。
終わったら、アイコン点滅して教えてくれればエエねん。

476デフォルトの名無しさん (ワッチョイ 0aa2-uGSY)2019/02/25(月) 17:45:36.59ID:+5CiRMIi0
javascriptとvbaをネストする方法ってありませんか?
Dim ie As InternetExplorer
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate ("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関数を使ってしかページ移動ができません。
ちなみに対象ページは↓です
https://kakaku.com/specsearch/0010/

477デフォルトの名無しさん (ワッチョイ f1ce-ZT00)2019/02/25(月) 19:16:52.45ID:fA1JAyF+0
>>476
kakaku.comなら「この検索結果を友達に知らせる」から直リンの情報が得られて、そこにページ番号も書かれてるからVBAだけで全データを取得できる

478デフォルトの名無しさん (アークセー Sxbd-SaAU)2019/02/25(月) 19:23:27.43ID:v0J7eUlyx
javascriptでページ情報を適当な外部ファイルにダンプして後でvbaでまとめて読み込めば良いだけでは?

479デフォルトの名無しさん (ワッチョイ 3968-rusg)2019/02/25(月) 19:42:45.75ID:RXoXH9qp0
変なページはキーボードマクロでやったほうが手っ取り早い場合も

480デフォルトの名無しさん (ワッチョイ 0aa2-uGSY)2019/02/25(月) 19:47:45.89ID:+5CiRMIi0
>>477
こんな方法があったんですね!
ありがとうございます
getの形で見ることができるんですね
これならfor文でまわせそうです

>>478
javascriptの知識がvbaの知識より薄くてできません・・・

>>479
その方法もありですね
勉強になります
ありがとうございます

481デフォルトの名無しさん (アウアウウー Sa21-eq4B)2019/02/25(月) 19:50:39.60ID:lqq1zerAa
for i = 0 to 10
ie.navigate "javascript: page(" & i & ")"
vba_code_here()
next

482デフォルトの名無しさん (ワッチョイ 0aa2-uGSY)2019/02/25(月) 20:05:06.80ID:+5CiRMIi0
>>481
これでもいけますね!
ありがとうございます
自分でも試してたつもりだったんですが&の端がシングルクオーテーションだったからだめだったんだと思います。
これでもネストできそうです。ありがとうございます。

483デフォルトの名無しさん (ワッチョイ 6a7c-RjxB)2019/02/25(月) 22:06:28.97ID:U7AKD+aj0
フォームに張り付けたMediaPlayerプレイヤーのコントロールのプロパティが勝手に変わる謎のエラーが頻発。
どうもフォームのサイズを変更するAPIがイタズラしているらしい。
こまかく切っていってようやくまさかの原因が解ったが対処方法わからずに対処療法してしまったがそれでも半日あまりを費やした。
よくわからないサンプルコード使うと謎のエラーが出てハマることを覚えた。
プログラマーってすごいな、これ毎日やってたらほんと禿げるわ。

484デフォルトの名無しさん (ワッチョイ 3968-rusg)2019/02/25(月) 22:14:43.73ID:RXoXH9qp0
>>483
>よくわからないサンプルコード使うと謎のエラーが出てハマることを覚えた。
これやると一番時間を無駄にする
・サンプルコードをざっと眺めて全体の流れを把握
・APIの仕様をしっかり読む
・一からテストコードを書く
・APIもう一回読み直しながら、もう少し詳細に作り直し
・本番環境で書く

こんな感じ。仕様を把握してから書いたほうが絶対に早い

485デフォルトの名無しさん (ワッチョイ 8aa3-5+1H)2019/02/25(月) 22:46:07.98ID:TP8zPbuZ0
>>448
オーバーロードってあったっけ?それに、ジェネリクスがないから全部の定義されてる型について生成しなきゃいけないから地獄なんだよ!リテラルで配列を生成できたらいちいちDimしなくてもいい

486デフォルトの名無しさん (ワッチョイ 8aa3-5+1H)2019/02/25(月) 22:51:30.74ID:TP8zPbuZ0
ちなみに、望むシグニチャーはこんな感じ
' T = Generic
Public Function ArrayOf(/* vararg */ element As T) As Array<T>
どうせVBAは浮世離れしすぎてて書けないけどな!

487デフォルトの名無しさん (ワッチョイ 6a2f-+yoR)2019/02/25(月) 23:00:26.05ID:F8HPsJ9/0
ジェネリックはないがヴァリアント型つかえば良いのだよ

無いものねだりしてもしょうがない
問題解決のためにあるものを使うだけ

488デフォルトの名無しさん (ワッチョイ 7d83-viXF)2019/02/26(火) 06:28:56.69ID:QryMFy3y0
>>429
これ。面白いな。試していないが、頭から見て行ってまずForが出て来るのにForがないって言われるの?w

VBAも構文を修正するのはいろいろと問題があるだろうけど、こういうペリフェラルな部分では改良できるところは
いくらでも残ってるよねえ

489デフォルトの名無しさん (ワッチョイ 7d83-viXF)2019/02/26(火) 06:39:06.54ID:QryMFy3y0
構文チェックくらいなら、どっかサードパーティが作ってアドオンとか出来ないのかな
xlsファイルの中からプログラム文ってテキスト抽出って出来ないんだっけ

490デフォルトの名無しさん (ドコグロ MM15-ZgJD)2019/02/26(火) 06:56:12.34ID:Dl2cSn2NM
>>488
If〜Thenでブロック作るからNext出て来たらForがないと見なされる
C言語とかはEnd IfとNextの両方が } なので発生しないけどイメージとしては
for(i = 0; i <= 10; i++)
 if(true){
next
 }
みたいな感じになってる

491デフォルトの名無しさん (ドコグロ MM15-ZgJD)2019/02/26(火) 07:22:50.54ID:Dl2cSn2NM
>>489
やれるやれないという意味ならやれる
そもそも*.basとか*.clsとかにエクスポートしたらテキストファイルだし
セキュリティの設定はいるけどCOM経由ならそんなに難しくない
ただ>>429みたいなケースでわかりやすいメッセージを出すのは思ったより難しい

492デフォルトの名無しさん (ブーイモ MMc9-0USI)2019/02/26(火) 07:28:56.02ID:wxY2HVgtM
>>487の言うとおりだ
生成もジェネリックに出来ないが使う方の関数だってジェネリックは出来ない。
つまりVariant を避けてると型別定義地獄になるって事だ

493デフォルトの名無しさん (ワッチョイ 662c-pE6h)2019/02/26(火) 12:32:40.78ID:5MxkS3P70
>>476-482
wget は簡易クローラーだから、これで複数ページをダウンロードすれば?
その後、vba で処理すれば?

まあ、適度に時間をおきながら、アクセスしなよ。
頻繁にアクセスすると、営業妨害で逮捕されるかも

494デフォルトの名無しさん (アウアウウー Sa21-ofTD)2019/02/26(火) 17:27:28.56ID:8+gQOZAja
win10(64bit)にoffice2013(32)入れたら動作おかしくなったので
新しいoffice買ってきた

495デフォルトの名無しさん (アークセー Sxbd-SaAU)2019/02/26(火) 21:19:16.14ID:bIfQynSTx
bitsadmin.exeやPowerShellを使う手もあるな

496デフォルトの名無しさん (ワッチョイ 8aa3-5+1H)2019/02/26(火) 21:29:55.31ID:7VOH1icT0
Variantか…型安全をぶち壊してる気がするけど…

497デフォルトの名無しさん (ワッチョイ 9e8c-0USI)2019/02/26(火) 21:52:08.87ID:3hFiWozk0
>>496
いいんだよ

型安全な汎用プログラムを書けない時点で、個別のプログラムを型安全にする気は失せるというものだ

498デフォルトの名無しさん (アウアウウー Sa21-eq4B)2019/02/26(火) 21:57:39.80ID:tGZ/aMnha
>>493
有料のRPAツールを使ってもダメなんでしょうか?

499デフォルトの名無しさん (ワッチョイ 6a2f-+yoR)2019/02/26(火) 23:46:14.88ID:VNg9bOSA0
暗黙の型変換が拡大縮小の両方に効く時点で型安全なんてあり得ないわけで

500デフォルトの名無しさん (ワッチョイ 3968-rusg)2019/02/27(水) 03:06:02.10ID:s/3R2a1B0
vbaで型安全ってなんのギャグだよ

Sub foo()
Dim bar As Long
bar = 1 & "0"
msgbox bar
End Sub

501デフォルトの名無しさん (アークセー Sxbd-SaAU)2019/02/27(水) 06:45:27.86ID:OKB4dgT5x
>>500
これって 1 & "0" のところが 1 + 0 と評価されて出力が 1 になるのか?

502デフォルトの名無しさん (JP 0H2e-eSdf)2019/02/27(水) 09:24:25.27ID:94mgNWr4H
数値を“”で括って連結させるって普通はやらないよな
もはやクレーマーの域

503デフォルトの名無しさん (ワッチョイ 592b-nbQA)2019/02/27(水) 09:27:38.25ID:ev0DPtJU0
>>501
ならない。

---------------------------
Microsoft Excel
---------------------------
10
---------------------------
OK
---------------------------

504デフォルトの名無しさん (ワッチョイ a58e-19KH)2019/02/27(水) 10:08:05.65ID:TCTVEEoa0
>>502
アホはお前

505デフォルトの名無しさん (JP 0H2e-eSdf)2019/02/27(水) 10:14:24.05ID:94mgNWr4H
>>504
自己紹介かな?

506デフォルトの名無しさん (ワッチョイ a58e-19KH)2019/02/27(水) 10:21:18.29ID:TCTVEEoa0
>>505
本当、馬鹿は食いつきがいいな。エラーも起こさずに動くのが問題なんだよ。
馬鹿には難しいか?

507デフォルトの名無しさん (アウアウクー MM7d-0RHA)2019/02/27(水) 10:48:04.11ID:hD6s3+cfM
&演算子が勝手に文字列に変換するのは利便性考えたらわかるし
Long型の変数に文字列代入する時に暗黙のキャストするのもわからなくはない

けど警告ぐらいは出してほしいね

508デフォルトの名無しさん (JP 0H2e-eSdf)2019/02/27(水) 10:48:12.18ID:94mgNWr4H
>>506
それはエラーであってほしいというお前の願望だろ

509デフォルトの名無しさん (ワッチョイ 7d88-viXF)2019/02/27(水) 11:32:27.96ID:WN1Wln/+0
VBAにも当然、厳密な構文ルールは存在するだろう

数字 & 文字列は文字列にするってのがルールじゃね。 一度覚えたらそれでいい

510デフォルトの名無しさん (ブーイモ MM0a-0USI)2019/02/27(水) 11:45:10.68ID:K1qNq431M
& が + に解釈されたらたまったもんじゃない

511デフォルトの名無しさん (スップ Sd0a-er5G)2019/02/27(水) 12:38:47.93ID:JcvtiT+vd
>>497
Variantは意識して使う。
型安全も意識する。
当然、暗黙の型変換でどうなるのかも意識して組んでいれば、そうそう問題になることもあるまい。

512デフォルトの名無しさん (スップ Sd0a-er5G)2019/02/27(水) 12:41:38.23ID:JcvtiT+vd
どんな言語でもツボは有るわけでね。
押さえてコードを書けない奴がアホなだけだろ。

初めて触った初心者じゃあるまいし警告なんて全く必要無い。

513デフォルトの名無しさん (スッップ Sd0a-19KH)2019/02/27(水) 13:03:51.61ID:aJqXXkY2d
>>509
代入先が数値だろ

514デフォルトの名無しさん (ワイモマー MM0a-uGSY)2019/02/27(水) 13:08:23.01ID:OA+HeXxoM
同じマクロを使っている複数の文書があって、マクロの一部を修正したいんですが、
別ファイルのモジュール内の変更を行うマクロは VBA を使って書けますか?

または、別ファイルのモジュールを削除(開放)してインポートする形でも構いません。

実際はワードでやりたいことですがワードVBAスレがなさそうなのでこちらで質問しました。
Normal を書き換えて対応するというのはできない前提です。

515デフォルトの名無しさん (スッップ Sd0a-19KH)2019/02/27(水) 13:17:59.19ID:aJqXXkY2d
>>514
スレ一覧よく見てみろ。そういういい加減で他人にすぐ聞くからできないことだらけなんだよ。

516デフォルトの名無しさん (ブーイモ MM0a-0USI)2019/02/27(水) 13:19:02.81ID:K1qNq431M
ByRef x As Variant

517デフォルトの名無しさん (JP 0H2e-eSdf)2019/02/27(水) 13:19:50.19ID:94mgNWr4H
>>514
書けるよ

518デフォルトの名無しさん (ブーイモ MMc9-5UjA)2019/02/27(水) 14:41:22.10ID:+oDGw9vfM
>>503
Option Explicit付けてもエラーにならないのかな?

519デフォルトの名無しさん (ワッチョイ 7d88-viXF)2019/02/27(水) 15:47:12.82ID:WN1Wln/+0
>>510
お前は何を言ってるんだ?
& は文字の連結子だろ。 だから、文字としての1と0を連結したんだよ
>>513
代入先は数値だな。 文字処理をしてそれがVariantだからそれから数値変換したんだな
文字処理が優先なんだろ

520デフォルトの名無しさん (ワッチョイ 7d88-viXF)2019/02/27(水) 15:48:15.94ID:WN1Wln/+0
>それがVariantだから
すまん。これはなし

まあ変な構文ではある

521デフォルトの名無しさん (ブーイモ MM0a-0USI)2019/02/27(水) 16:29:49.69ID:K1qNq431M
>>519
だから連結じゃなく加算と解釈されたらたまったもんじゃない
と言っている

522デフォルトの名無しさん (ドコグロ MM12-ZgJD)2019/02/27(水) 17:58:08.46ID:HrTieKXOM
>>507
& 演算子は文字列同士の連結だから
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とかやってると両方が文字列の時にはあ?ってなことになったりする

523デフォルトの名無しさん (アウアウクー MM7d-0RHA)2019/02/27(水) 18:25:55.24ID:hD6s3+cfM
>>522
>"2" + "1" ⇒ "21"
&、-と合わせて考えるとめちゃくちゃ気持ち悪いなこれ

524デフォルトの名無しさん (アウアウウー Sa21-eq4B)2019/02/27(水) 18:25:56.15ID:U+okKr8Fa
出力する時以外に文字列と他の型を演算させる需要ってあるか?
すごい変なプログラム書いてそう

525デフォルトの名無しさん (アウアウクー MM7d-0RHA)2019/02/27(水) 18:31:15.76ID:hD6s3+cfM
>>524
Cells(1,1) + Cells(1,2)
とか気軽に書いて文字列セルなのに気づかず発狂するがいい

526デフォルトの名無しさん (アウアウウー Sa21-eq4B)2019/02/27(水) 18:45:49.28ID:U+okKr8Fa
>>525
セルの値同士の計算をダイレクトにやろうとする発想にまず疑問を感じる

527デフォルトの名無しさん (スップ Sd0a-er5G)2019/02/27(水) 18:48:38.08ID:JcvtiT+vd
だから、型を意識してコード書かない奴は駄目なんだ。
あと、Cells(1,1) + Cells(1,2)じゃなくて、Cells(1,1).Value + Cells(1,2).Valueとすべき。

528デフォルトの名無しさん (オイコラミネオ MMb5-W5xD)2019/02/27(水) 18:53:54.71ID:sssEi30aM
>>524
セル値が16進で、その値で計算させるとかかな。
昔はよく使ってたが、最近は使わなくなったな…

529デフォルトの名無しさん (ワッチョイ 3968-rusg)2019/02/27(水) 19:19:30.96ID:s/3R2a1B0
>>527
いや、そこじゃない
cellsのデフォルトプロパティがvalueな事ぐらい皆分かっている
valueの型がヤバイんだ

530デフォルトの名無しさん (ワッチョイ ea01-ZgJD)2019/02/27(水) 19:31:13.45ID:zqU1UpTE0
>>527
> だから、型を意識してコード書かない奴は駄目なんだ。
そんなのわかってるからいちいちマウント取りに来なくていいよ
世の中には変数宣言すらしないやつとかもいるし使い捨てコードとかもある

531デフォルトの名無しさん (ワッチョイ b602-PZ49)2019/02/27(水) 19:35:36.50ID:kQabADAE0
本当によくできたプログラムっていうのは変数がどんどん減っていくものだよ

532デフォルトの名無しさん (ワッチョイ 11b0-0RHA)2019/02/27(水) 19:49:19.80ID:J+jPuAvg0
やっぱVBAってクソだわ

533デフォルトの名無しさん (ワッチョイ 6a90-rusg)2019/02/27(水) 19:52:19.85ID:Vhp/GCq70
>>532
と罵りたいだけが為にここに来るんだろ?  プ

534デフォルトの名無しさん (ワッチョイ 11b0-0RHA)2019/02/27(水) 20:02:27.43ID:J+jPuAvg0
やっぱVBAスレってクソだわ

535デフォルトの名無しさん (ワッチョイ 89c5-T+SP)2019/02/27(水) 20:17:03.40ID:INBREE+00
クソレスすんなプロさん

536デフォルトの名無しさん (ワッチョイ 9e8c-0USI)2019/02/27(水) 21:22:24.52ID:rA0fzWNE0
>>531
デバッグはやりづらくなるけどな

537デフォルトの名無しさん (ワッチョイ 7d88-viXF)2019/02/27(水) 21:48:46.20ID:WN1Wln/+0
まあやっぱり、1 & "0" とか  "2" + 1
とかが出てきたら、エラーで落とすのが普通だろうなあ
で、プログラマはそこで、Val関数で数値にするとか逆に文字列にするとか
やっぱり型変換、確認をプログラムの中に入れながら作るのが本来の筋だと思うわ
そもそもの構文を変えないのであればね

538デフォルトの名無しさん (アウアウエー Sa52-bAbS)2019/02/27(水) 22:04:09.28ID:6/kMoeDHa
どうでもいいよ
所詮VBAだし

539デフォルトの名無しさん (ブーイモ MM0a-xRI1)2019/02/27(水) 23:43:00.80ID:APPBNRQYM
>>538
そういうこと

540デフォルトの名無しさん (ワッチョイ 1feb-IBRN)2019/02/28(木) 00:41:55.86ID:ULaFt4eB0
質問です。お願いします。

public sub shuukei()
'集計してシートに書き出してそそのシートのコピーを別ファイルとして保存
end sub

こういうコードを作りましたが、少しでも速く処理されるようにもっと工夫したいと思っています。
そこで、少し書き直しては速度に変化があるか確認したいのですが、コードの実行速度を
測る方法がわかりません。教えていただけないでしょうか?

public sub jikantest()
  '計測スタート
  call shuukei
  '計測終り
  msgbox かかった時間
end sub


こんな感じでいちいち確認したいです。

541デフォルトの名無しさん (ワッチョイ ffdd-r++/)2019/02/28(木) 00:46:39.13ID:3O1mZe4/0
>>540
dim st as single, ed as single
st = timer
(処理)
ed = timer
debug.print ed - st & "sec"

いつもこんな感じでやってる。

542デフォルトの名無しさん (ワッチョイ 9f2f-8MIE)2019/02/28(木) 00:47:31.02ID:CZa6uBrL0
Debug.Print Now でもしとけ

543デフォルトの名無しさん (ワッチョイ 1feb-IBRN)2019/02/28(木) 00:51:18.30ID:ULaFt4eB0
>>541
ありがとうございました!

544デフォルトの名無しさん (ワッチョイ 9f7c-sBsz)2019/02/28(木) 01:23:05.26ID:8R6HTxA70
変数の型はトレースの時だけでもシンタックスハイライトして欲しい。
それか左辺に合うように強制キャストで。

545デフォルトの名無しさん (ワッチョイ f7da-3oSp)2019/02/28(木) 02:06:55.62ID:u4sOxAKE0
>>540
早くなってもわかりにくいのはやんない方がいいぞ

546デフォルトの名無しさん (ワッチョイ 1feb-IBRN)2019/02/28(木) 06:51:30.57ID:ULaFt4eB0
お恥ずかしい質問ですが、もうひとつお願いします。

私は、変数の中身でもなんでも、とにかく確認したいときはmsgboxを使うんです。
そのほうが楽だし。

でも、こういう場所で回答するような人のほとんどは、>>541-542さんのように、
debug.なんとか ってのを使いますよね?
よくわからないけど、debugって、msgboxとは違って、どこかのウィンドウに表示させるってことだけ
は知っています。
そして、msgboxよりも、そっちの方がなんとなく本格派っぽいことも感じてます。

みなさん、どうしてmsgboxよりそっちを使うんですか?本当にそっちが便利なんですか?

547デフォルトの名無しさん (ワッチョイ 9701-j5yB)2019/02/28(木) 06:56:12.35ID:PI/gJuny0
>>546
msgboxだと毎回画面が出ちゃうから

548デフォルトの名無しさん (ワッチョイ d74f-nvQ/)2019/02/28(木) 07:04:09.83ID:TTqJ1VR80
Debugって俺も使ったことないんだが、過去何行くらいまで遡れるの?
それとその結果ってファイルに出力できる?

549デフォルトの名無しさん (ワッチョイ 9fa2-IBRN)2019/02/28(木) 07:09:57.92ID:syDDbQ630
自分はstopとローカウルィンドウ派だな

550デフォルトの名無しさん (ワッチョイ ffdd-r++/)2019/02/28(木) 07:10:06.15ID:3O1mZe4/0
>>546
OK押すのメンドいし、押したら消えるし。
Printならイミディエイトウィンドウにどんどん溜まっていくから比較しやすいし。
VBE上でCtrl+Gで呼び出せる。
コード書くときは常に表示してるな。
他にもいろいろ便利に使えるからGGってみて。

551デフォルトの名無しさん (アウアウウー Sa9b-fNI3)2019/02/28(木) 07:28:40.77ID:/X5EyKzha
debug.printなら開発画面を見ない他の使用者が
気付かないで済む

552デフォルトの名無しさん (ドコグロ MM6b-dMaL)2019/02/28(木) 08:31:53.34ID:3CdGs56rM
>>540
ちょっと本格的にやるなら…
https://blogs.yahoo.co.jp/yangzh_jp/26557113.html
注意!
中にも書いてあるけど使用時にコードを改変するから使うならバックアップはちゃんと取ること

553デフォルトの名無しさん (スップ Sd3f-IK5z)2019/02/28(木) 12:28:10.25ID:wbPQJw42d
>>531
そうとも限らない。
速度の為に変数増やすこともあるから

554デフォルトの名無しさん (スップ Sd3f-IK5z)2019/02/28(木) 12:32:41.06ID:wbPQJw42d
>>548
そんなに大量には残らないね。
1000行くらいか?
大量に残したいときは普通テキストファイルに書き出すだろ。

555デフォルトの名無しさん (アウアウウー Sa9b-zhdC)2019/02/28(木) 12:33:37.47ID:qWkUq+5ha
>>553
まああくまで傾向だな
システム開発に絶対はないから大まかに語るしかない

しかしまあプログラマって柔軟性がないから何か意見を言ったら必ず特殊な状況を想定して反論しようとする人が出てきて面倒くさいな

556デフォルトの名無しさん (JP 0H4f-j5yB)2019/02/28(木) 13:23:20.67ID:qor22oN3H
柔軟性がある人は出世するからね

557デフォルトの名無しさん (ブーイモ MMbf-0snV)2019/02/28(木) 13:59:45.70ID:TjDXn6TQM
>>555
後々のテスト工程考えてるからじゃない?
そこまで考慮しなくても…となる気持ちは分かる

558デフォルトの名無しさん (アウアウクー MM0b-VAd9)2019/02/28(木) 14:20:36.03ID:x4ZPjfd7M
考慮すべき場面とするべきでない、しても意味がない場面の判断ができないとも言える

559デフォルトの名無しさん (JP 0H4f-j5yB)2019/02/28(木) 14:36:57.48ID:qor22oN3H
だから日本は開発が遅いんだよ
アジャイルでやれ

560デフォルトの名無しさん (ワッチョイ f7ce-uydA)2019/02/28(木) 14:57:38.31ID:7AaSmpPf0
想定される状況なんか結局は本人にしか分からないし、説明すんのもめんどくさい
まあ本人が気付いてないこともあるけど

561デフォルトの名無しさん (ドコグロ MM6b-dMaL)2019/02/28(木) 17:57:19.76ID:3CdGs56rM
>>555
決めつけで語って指摘されたら逆ギレかよ w

562デフォルトの名無しさん (ワッチョイ 9fa3-+f+8)2019/02/28(木) 18:42:40.55ID:jqfgz8pY0
ーーここまで型変換関数なしーー

身内が意味がわかるっていうなら変換関数抜きにしてもいいかもしれない、けどコンテキスト的に関数噛ませたい

563デフォルトの名無しさん (アークセー Sx0b-Yt/p)2019/02/28(木) 18:45:13.08ID:OctLDBwCx
Debug.Assertも割とよく使う

564デフォルトの名無しさん (ワッチョイ f7ce-uydA)2019/02/28(木) 21:21:18.29ID:7AaSmpPf0
Variant使わなきゃいい

565デフォルトの名無しさん (ブーイモ MM1b-9NtP)2019/02/28(木) 22:12:12.40ID:TWIU4lxdM
>>564
いやいやいやいや
ByRef As Variant
の意味論がわかってないだろ

566デフォルトの名無しさん (アークセー Sx0b-Yt/p)2019/02/28(木) 23:20:59.71ID:JVzuLoidx
Variant型がないとそれはそれで不便
実行時にならないと変数の保持データの参照型やデータ構造が決定できないような関数を定義するときには必須
Object型では限界があるし、多態性とか考えたら特に

567デフォルトの名無しさん (アウアウエー Sadf-hSmr)2019/03/01(金) 00:53:35.24ID:oijdm3qva
VBAにもInterfaceがあるの知らない人かな

568デフォルトの名無しさん (スップ Sd3f-IK5z)2019/03/01(金) 08:24:19.03ID:KSyELWIpd
だから意識して使うぶんには良いんだよ。
Variant配列で高速化は良くやるだろ。
あるいはあえていろんな型を受け付ける関数を作る場合とか。

俺はInteraceはあまり使わんね。
同じプロパティを持ったクラスを複数作ってグループとして使う場合でもそこまでしなくて良いだろと考える。

569デフォルトの名無しさん (アウアウウー Sa9b-zhdC)2019/03/01(金) 08:58:16.79ID:IB7Yh9y1a
プログラムの基本的な良い習慣を実践すればVariantなんてそう使うことはない
使うとしてもシートIOなど僅かな用途だけだから業務ロジックまで影響することはまずない

570デフォルトの名無しさん (ワッチョイ 9f90-W5e4)2019/03/01(金) 09:03:46.13ID:BWIoX5Sk0
プロ雑談者どものくだらん蘊蓄語り合いなんぞどうでも良いから質問者の方々は
遠慮なさらずにどうぞ〜

571デフォルトの名無しさん (ブーイモ MM3b-sBsz)2019/03/01(金) 12:55:03.48ID:3XNO5Z9qM
コードって色々書く場所あると思うんですけど、ある程度共通の切り分けってあるんですか?
フォームにはあまりややこしいものはかかないで標準モジュールを使うとか。
逆にフォームで書けるものは複雑でもそこで終わらせたほうがいいとか。
今迷ってるのはシート1のデータを加工してシート2のデータにマージさせる場合どこに書けばいいんだろうってことです。
そのシートごとに別けるとバラけて解りにくくなるしみたいな感じです。

572デフォルトの名無しさん (ドコグロ MMdb-hSmr)2019/03/01(金) 13:04:09.15ID:SCR8DJeBM
所詮VBAだしどうでもいいよ
VBAの可読性・保守性を高める唯一の指針があるとしたら、極力VBAを書かないでワークシートの機能を活用することかな

573デフォルトの名無しさん (JP 0H4f-j5yB)2019/03/01(金) 13:26:59.89ID:HgS5037SH
>>571
標準モジュールに Sub MergeSheet1To2 とか作ってCallすれば、他人が処理部を見なくても「このボタンを押すとマージされるんだなぁ」と想像ができる。
自分はフォーム内は処理に使うデータのチェックくらいにしてる。

574デフォルトの名無しさん (ワッチョイ 9f01-IBRN)2019/03/01(金) 14:04:11.91ID:+h/xS+gL0
フォームモジュールって細々としたイベントのプロシージャであふれちゃって見にくい
だからできるだけ標準モジュールに切り分けてる
例えばフォーム上の複数のTextBoxに全く同じ入力規則を設けたい時なんかは
TextBox・KeyCode・Shiftを引数とするプロシージャを標準モジュールに書いて使い回ししてる
さっきもそういうの書いてた

575デフォルトの名無しさん (アウアウウー Sa9b-zhdC)2019/03/01(金) 17:47:45.49ID:jYXMQwAma
>>571
シート1 IOクラス
シート2 IOクラス
コンバータークラス
マージサービスクラス

576デフォルトの名無しさん (スップ Sd3f-IK5z)2019/03/01(金) 18:53:01.98ID:KSyELWIpd
>>571
そのフォームで完結させたい時はフォームに全部書く。
汎用的なのは標準モジュール、汎用的でなくてもいろんな所から使い回す場合も標準モジュールだな。
シートモジュールにはシートのイベントプロシージャ以外書かないのが基本だけどそのシートのイベントプロシージャと一緒にしたい理由でシートモジュールに書くこともある。

意味論というか、何処に書くかは内容で決める。その方が後でコード見る時に視認性も良くなる。

577デフォルトの名無しさん (アウアウウー Sa9b-fNI3)2019/03/01(金) 20:10:20.22ID:9ceAGmrya
俺ならスコープで書く場所変えてる

578デフォルトの名無しさん (ワッチョイ d783-nvQ/)2019/03/01(金) 20:18:09.30ID:S/p2I5Nx0
シート1だけでしか使わない関数はシート1
その関数の中で使う関数で他でも使う汎用関数は標準モジュール
シート1のデータを加工ってあるが、それが将来にでも他のシートでも使いそうならその加工関数は汎用化して
標準モジュール。 シート1でしか使わないのならその加工関数はシート1に書く

579デフォルトの名無しさん (ワッチョイ 9f7c-L+km)2019/03/01(金) 21:39:17.32ID:41cCIQF20
上級者の人がどう使っているかなんとなく解ったような気がします。とりあえず
【クラスモジュール】汎用性のある関数
【標準モジュール】 大きな処理
【シートモジュール】【フォーム】極力使わないが他と絡まない短いコードなら完結しても良い
という感じで試してみようと思います。
あとは関数名の最後に呼び出しする関数がある場所を付けてみようと思います。
何をやりたいかで構成も変わると思うのでそこらへんも加味しながら試してみます。
参考になりました、ありがとうございます!

580デフォルトの名無しさん (アウアウクー MM0b-VAd9)2019/03/01(金) 22:34:27.56ID:KieDV9lDM
ここに上級者なんていないぞ

581デフォルトの名無しさん (ワッチョイ bf8c-9NtP)2019/03/01(金) 22:48:58.94ID:eQhW3/JV0
>>579
関数名の最後になにを付けるって?

582デフォルトの名無しさん (アウアウウー Sa9b-zhdC)2019/03/01(金) 23:05:06.38ID:jYXMQwAma
また一人、道に迷ってしまった
やっぱりVBAで勉強するのは非推奨ダナ

583デフォルトの名無しさん (ワッチョイ ffda-3oSp)2019/03/01(金) 23:30:05.02ID:zWZoP6hm0
>>546
俺もmsgbox。
イミデは、知らないうちにウインドウが消えちゃうから。
プロパティもそう。
何で勝手に消えるんだろ。

584デフォルトの名無しさん (アークセー Sx0b-Yt/p)2019/03/02(土) 01:21:31.95ID:Po9hNmd9x
>>579
汎用性のある関数を記載する場所だけど、VBAの仕様ではクラスモジュールではなく標準モジュールの方が都合が良いよ
何故なら自作のクラスモジュールに記述した関数を呼び出す場合、その自作クラスのオブジェクトのインスタンスを生成した後にそのオブジェクトのメソッドとして書くという手間が要る
つまりマシンメメモリの無駄食いになるしコーディング量も増える
標準モジュールならば関数名を書くだけで呼べるので余程気楽

適当にググったときに出てくる、OOP原理主義のJavaプログラマあたりが言うところの「汎用性のある関数はクラスに」っていう考え方は、VBAには当てはまらないので注意だよ

585デフォルトの名無しさん (ワッチョイ f7ce-uydA)2019/03/02(土) 02:50:08.40ID:eoNuxzNL0
>>572
ワークシートなんて可読性最悪じゃん
セルには数式が1つしか書けないし条件付き書式も内容を確認するのが面倒

条件付き書式が設定されてる範囲を視覚化する方法ってないよな?俺が知らないだけ?

586デフォルトの名無しさん (ワッチョイ 9fa2-IBRN)2019/03/02(土) 03:08:30.41ID:vHLv5v7t0
>>585
数式タブ→数式の表示

587デフォルトの名無しさん (アークセー Sx0b-Yt/p)2019/03/02(土) 09:24:48.87ID:Po9hNmd9x
>>572
>>585
可読性を高める唯一の方針とは言わんが、正直下手に変数にブックレベル以上の参照スコープを持たせて値やオブジェクトを操作するくらいならワークシートの機能を使った方がよくねって場面はいくらでもあるな
エラーとかでプログラムが停止したときにセル値と違って変数に格納された参照ポインタは揮発するし

588デフォルトの名無しさん (アウアウウー Sa9b-zhdC)2019/03/02(土) 09:34:34.03ID:heck9gfNa
ワークシート関数の何が良いかというと副作用がないことだよ
ぶっちゃけ重要なのはそこだけ
それ以外ではセル内にだらだら式を書くと醜いなどデメリットしかない

なのでVBAで普通に副作用がない関数を書けばいい
副作用のない関数ならVBAからもセル内式からも使いやすい
しかもセル内式と違って見やすく管理しやすい

589デフォルトの名無しさん (アークセー Sx0b-Yt/p)2019/03/02(土) 09:47:47.22ID:Po9hNmd9x
VBAの方が見やすくて管理しやすくてワークシート関数は見にくいって図式が成り立つかどうかは正直処理を書くやつのスキル次第だけどな

ワークシート関数は必ず内部スコープが()で括られるリスト形式だから、処理構造が簡潔に可視化できるメリットがあるとも言えるわけだし

590デフォルトの名無しさん (ワッチョイ bf8c-9NtP)2019/03/02(土) 10:15:37.68ID:VydunwR60
自分は>>572とほぼ正反対のやり方でやってきた
シートは使い捨てのデータとちょっとした設定情報を置いたり、あとは結果を出力する場所としてしか使わないな。
使い捨てのは別だけど、ツールとして繰り返し使うブックのシートに関数はほぼ書いてない。

591デフォルトの名無しさん (アウアウウー Sa9b-zhdC)2019/03/02(土) 10:26:10.19ID:heck9gfNa
>>589
セル内数式はネスト入るとすぐに醜くなるじゃん
それに式に名前をつけて管理できないのもメンテナンス性を悪化させてる

592デフォルトの名無しさん (アウアウエー Sadf-hSmr)2019/03/02(土) 10:34:03.78ID:1SfH4HCRa
>>591
式に名前を付けたければ単一値ならセルに名前付けりゃいいし、ベクトルならテーブルにしてカラム名付けりゃいい
VBAで関数自作してもいい
VBAの中でループぶん回すよりは遥かに見通し良いわ

593デフォルトの名無しさん (アウアウウー Sa9b-zhdC)2019/03/02(土) 10:46:06.68ID:heck9gfNa
>>592
そもそもセル名前自体が管理しにくいので論外
セル名と数式の関係性がパッと見てわからないし
セル名と数式がひも付けられて管理されてると言われなきゃ後任が気付かない
VBA関数ならこの関数名はこの定義って誰でも一目でわかる

本来の出力でない余計なカラムはノイズになって邪魔
名前で管理したい項目が増えたらノイズだらけになってなにを説明したい表なのかわからなくなる

594デフォルトの名無しさん (ワッチョイ 7f0d-+O5F)2019/03/02(土) 10:57:15.96ID:ZJ+HN4z+0
visual studioに慣れ切ってしまってるのでVBAエディタがマジで苦手・・・

595デフォルトの名無しさん (ドコグロ MMdf-hSmr)2019/03/02(土) 11:26:41.59ID:PSsyx6QoM
>>593
VBAでワークシート関数を作るのは否定しないよ
最悪なのはワークシート関数(VBA含む)でできることをVBA内でループ回す馬鹿

596デフォルトの名無しさん (アウアウウー Sa9b-zhdC)2019/03/02(土) 11:40:34.50ID:heck9gfNa
>>595
こ文脈でループを回すの意味がわからないしどっから出てきて何を意味してるんだ?

597デフォルトの名無しさん (ワッチョイ f7da-3oSp)2019/03/02(土) 13:55:25.27ID:WupyvY1Q0
話変わるがセルのコピーとか移動したときに条件付き書式が壊れてやたら重くなって直すの苦労したことある

598デフォルトの名無しさん (ワッチョイ 9f2f-nxCI)2019/03/02(土) 15:18:36.62ID:EfeqCtIS0
お前らまず、
ワークシートの機能を活用する
というのをどういうことかちゃんと合わせてから話してくれるか

599デフォルトの名無しさん (アークセー Sx0b-Yt/p)2019/03/02(土) 18:22:41.70ID:BmvnLX83x
>>598
ワークシートの機能ってのはワークシートの機能一般のことでしかないだろ
ワークシートの特定の機能を想定して話をしてるんじゃない
ワークシートの機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話

600デフォルトの名無しさん (ワッチョイ ffda-3oSp)2019/03/02(土) 19:24:09.91ID:PK2Geudt0
ワークシートって言いすぎww
Withでまとめたくなってきたわ。

601デフォルトの名無しさん (JP 0Hdf-lo0V)2019/03/02(土) 19:30:50.79ID:6n8BrDHBH
With ワークシート
.の機能ってのは
.の機能一般のことでしかないだろ
.の特定の機能を想定して話をしてるんじゃない
.の機能を使えば事足りる処理をわざわざVBAのスクラッチでやろうとするのは車輪の再発明の極みだという話
End With

602デフォルトの名無しさん (ワッチョイ bf8c-9NtP)2019/03/02(土) 20:23:41.79ID:VydunwR60
ワークシートの機能って単独のワークシート関数で実現できることなの?
それをVBAでやるのは確かに馬鹿らしい。
そうじゃないならVBAのほうがいいな。

603デフォルトの名無しさん (ワッチョイ 9f2f-nxCI)2019/03/03(日) 01:17:47.50ID:5kU0Dorz0
>599
だからワークシートの機能一般ってなんのことを言ってるの?
セルの計算式?
計算式用のワークシート関数?
Application.WorksheetFunction?

604デフォルトの名無しさん (ワッチョイ f7b0-VAd9)2019/03/03(日) 03:16:39.28ID:1gVEOeax0
VBA以外のExcelで出来ること全てだろ
理解力低過ぎないか?

605デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/03(日) 11:57:08.93ID:XBWTxj+a0
なんでVBAを外すのか分からない
このスレにいる連中ならワークシートにはイベントも含まれるという感覚の方が普通でしょ

606デフォルトの名無しさん (ワッチョイ ffda-3oSp)2019/03/03(日) 12:44:05.38ID:87SKey7q0
シートを方眼紙だと思っている人の視点での機能一般だろう。
ここの人たちは、クラスモジュールの1つくらいの感覚かもしれんが。

607デフォルトの名無しさん (ワッチョイ 377c-vuRV)2019/03/03(日) 14:18:18.29ID:ilhG1tLW0
そこはかとなく臭うというか湧き出るダサさが嫌い

608デフォルトの名無しさん (アウアウウー Sa9b-fNI3)2019/03/03(日) 18:57:15.36ID:dGd12yAna
EXCELの全ての機能のうちVBAを除いた残りってことじゃね

609デフォルトの名無しさん (アークセー Sx0b-yUTo)2019/03/03(日) 19:26:33.74ID:2dKZwCIHx
エクセルのオブジェクトモデルでメソッドが提供されてるような機能をわざわざVBAでスクラッチするなって意味もあるんじゃね
ListObjectオブジェクト(テーブル)の存在や機能を知らずに、同一列内のセル数式ほコピーの機能を自作するような話だろ

610デフォルトの名無しさん (ブーイモ MM3b-hSmr)2019/03/03(日) 20:55:07.59ID:C10iXUczM
初心者です。わかる方いましたらお教えください。

IE.Visible = False
として、
IE.Quitが何らかの理由で実行されなかったり、それを書かなかった場合
どうなってしまうんでしょうか…?
バックグラウンドでずっとフワフワといるんでしょうか?
見方もよくわからないタスクマネージャーで見てみるとアプリケーションとしてはたぶん起動されていませんでした…
IE.Visible = Falseとした場合はもしかして特に閉じる指示が必要ないのでしょうか…?

611デフォルトの名無しさん (ワッチョイ f7ce-uydA)2019/03/03(日) 21:00:52.17ID:sl8Y8jOC0
>>610
バックグラウンドでずっと動き続ける、が正解

ちゃんと起動してないのはコードがおかしいかタスクマネージャの見方がおかしい
そこをTrueに変えるだけでちゃんとIEのウィンドウが表示されるか確認

612デフォルトの名無しさん (ブーイモ MM3b-hSmr)2019/03/03(日) 21:44:32.70ID:C10iXUczM
>>611
Trueに変えるだけで表示はされたので、タスクマネージャーの見方がおかしかったようです
ちゃんとバックグラウンドなんとかの欄では起動されていました
ありがとうございました…

613デフォルトの名無しさん (ワッチョイ 3791-IK5z)2019/03/04(月) 09:46:01.18ID:TvaJY4yu0
関数使うかVBA使うかも内容で決める。
関数だと物凄く重くなることがある。
Sumproductとかを多用した場合とか、複数シートの集計を1日の集計としてさらに1ヶ月分の集計するとか。
自動計算を切れば良いんだけど、運用で微妙だね。
それに昔、銀行の仕事で大量のデ―タとSumproductのせいで1回の計算でさえいつまでたっても終わらないことがあった。
その時はVBAに書いたら5秒で終わった。

614デフォルトの名無しさん (ブーイモ MM1b-9NtP)2019/03/04(月) 10:53:05.90ID:RuY9YBtCM
ワークシート関数を関数と表現するのってUSBメモリをUSBと呼ぶのと同様にアレな感じ

615デフォルトの名無しさん (ワッチョイ 178e-4jKm)2019/03/04(月) 10:55:32.34ID:TFGUk6BN0
その違和感を持てる知識がない頭が残念な人なんだろ

616デフォルトの名無しさん (JP 0H4f-j5yB)2019/03/04(月) 11:15:22.83ID:gwy/L6iPH
WorksheetFunctionプロパティで呼ぶもの(sumとかvlookupとか)がワークシート関数
VBAでしか使えないもの(CIntとかInstrとか)がVBA関数
上記と自作関数をまとめて関数

617デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/04(月) 11:25:35.49ID:vFn2j9Kt0
>VBA関数
標準関数だろう
エクセルの場合はVBA標準関数とでも言うべきか

>自作関数
ユーザー定義関数という名称がある

まぁ俺は関数としか呼ばんけどな、ハハハ
vbaでワークシート関数使う時はそう呼ぶ

618デフォルトの名無しさん (JP 0H4f-j5yB)2019/03/04(月) 11:45:46.92ID:gwy/L6iPH

619デフォルトの名無しさん (ワッチョイ 3791-IK5z)2019/03/04(月) 14:30:16.31ID:TvaJY4yu0
関数とVBAと対比させてるのに勘違いする奴がいるとはとても思えないが。
いたらそいつはアホだよ。

620デフォルトの名無しさん (ワッチョイ 178e-4jKm)2019/03/04(月) 14:32:37.46ID:TFGUk6BN0
>>619
馬鹿が恥の上塗りに来ましたよ、と

621デフォルトの名無しさん (ワッチョイ 3791-IK5z)2019/03/04(月) 14:57:43.98ID:TvaJY4yu0
>>620
あらら、アホが恥の上塗りに来たよw

622デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/04(月) 15:02:35.15ID:vFn2j9Kt0
vbaだし何でもええやろ
どうせ大事に至ることはない、争う程の事ではない

623デフォルトの名無しさん (ワッチョイ 178e-4jKm)2019/03/04(月) 15:28:20.01ID:TFGUk6BN0
>>621
馬鹿はVBAに関数がないと思っているのか?
馬鹿は早く死ねよ

624デフォルトの名無しさん (ブーイモ MM1b-9NtP)2019/03/04(月) 16:20:08.03ID:RuY9YBtCM
「文脈上USBメモリのことであるとわかるときはUSBでいい」

「そもそもそんな呼び方普段からするなよ」

625デフォルトの名無しさん (アウアウクー MM0b-VAd9)2019/03/04(月) 18:20:48.65ID:FDpjfwBmM
わかるかどうか判断するのは読み手側だからな
書く側が勝手に略すのは読ませる気がないんだろう

626デフォルトの名無しさん (ワッチョイ 37e6-W5e4)2019/03/04(月) 23:23:23.24ID:dF1M3atd0
そういえばCD-ROM2をロムって呼んでたやついたな

これSUPER CD-ROM2だから

627デフォルトの名無しさん (ワッチョイ 178e-XA5H)2019/03/05(火) 00:24:00.61ID:YDI1bFmR0
ID:TvaJY4yu0みたいな馬鹿がメンテできなくなるVBAを作る

628デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/05(火) 00:37:29.46ID:yUBkGE+g0

629デフォルトの名無しさん (アウアウエー Sadf-vuRV)2019/03/05(火) 03:34:27.88ID:VDry4yCPa
馬鹿には無理

630デフォルトの名無しさん (ワッチョイ d709-nvQ/)2019/03/05(火) 05:56:45.90ID:pou1Iepn0
>>628
見てきたけど、なんかすげえめんどくさそう。出来ることも見新しいことってほとんどないじゃん
普通のWin32APIとかやったことあるのか。そっち勉強した方が遥かにまし。 VBAでもやれるから

631デフォルトの名無しさん (アウアウエー Sadf-hSmr)2019/03/05(火) 07:48:42.24ID:VSxyPtP8a
いやMacとかOffice Onlineで使えることに意味があるんだろ
まあOffice Online使うくらいならGSuite使うという企業が殆どだろうけどw

632デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/05(火) 08:12:27.21ID:yUBkGE+g0
>>628
はこういう事だった
誰も使ってないのね
https://qiita.com/y__na_ka_ya_ma/items/2575e79248978ff7828d

>>629
自己紹介乙

>>630-631
もちろんやれることは同じ
jsで書ける事自体がメリット
googleSpreadsheetのマクロを移植する時に使える
一生に一回もないと思うけどな

633デフォルトの名無しさん (アークセー Sx0b-yUTo)2019/03/05(火) 08:56:53.06ID:K5flI6jox
Win32APIとOffice JavaScriptAPIどっちを勧めるかと聞かれたら今なら後者かな
後者の案件あるのか知らんが

634デフォルトの名無しさん (アウアウウー Sa9b-zhdC)2019/03/05(火) 12:20:11.68ID:IGhfqt8ja
そもそも全くの別物を比較してどうすんねん

635デフォルトの名無しさん (エムゾネ FFbf-IK5z)2019/03/05(火) 12:44:55.98ID:bZMGULjeF
>>623
日本語が理解出来ないようだな。
VBAと関数を対比させているんだからここで関数と言ってるのは"VBAの関数"のことでは無いと解釈するのがまともな日本人だ。


>>624
???
それは日本語として変だ。
USBメモリはUSBでは無い。
VBAの関数は関数ではある。
そもそもの例が適当でないわけだ。

>>625
文脈や、やり取りでVBAの関数なのかワークシート関数なのかを判断する必要があるのは>>66>>142>>172も一緒だ。
お前らと違って普通の日本人は文脈ややり取りから判断出来てるんだよ。
>>614のようなことを言い出すのはお前らのような頓珍漢な奴らだけだよ。

636デフォルトの名無しさん (エムゾネ FFbf-IK5z)2019/03/05(火) 12:47:21.71ID:bZMGULjeF
>>142>>186>>448
も文脈で判断するな。

637デフォルトの名無しさん (エムゾネ FFbf-IK5z)2019/03/05(火) 12:51:32.81ID:bZMGULjeF
>>634
正にその通り。
Win32APIではじめて出来ることがjsで出来るなら分かるけどね。

638デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/05(火) 13:01:00.32ID:yUBkGE+g0
>>634
あぁやっぱりそうだよね
知識不足かと思って調べてしまったわ

639デフォルトの名無しさん (ワッチョイ 178e-4jKm)2019/03/05(火) 13:14:26.63ID:YDI1bFmR0
ID:bZMGULjeF

マジモンのアスペルガーのキチガイ

640デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/05(火) 13:18:51.34ID:yUBkGE+g0
jsアドインもう少しぐらい使われてるのかと思ったけど、
誰も使ってないようで安心した

641デフォルトの名無しさん (ワッチョイ 377c-nl/e)2019/03/05(火) 13:32:20.37ID:YOwkwz810
Excel Python API とかも Excel.js Office.js とかと同じ扱いになる悪寒

642デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/05(火) 13:36:30.59ID:yUBkGE+g0
>>641
ゲェッ
vbaはこの手軽さが最強の武器なのに、VSからアドイン作成とかあまりに残念すぎる

643デフォルトの名無しさん (ワッチョイ 3791-IK5z)2019/03/05(火) 20:23:23.29ID:ruLmgCaM0
>>639
これだからアホは困る。
お前、出版社にはクレーム入れるなよw

https://www.amazon.co.jp/gp/aw/s/ref=nb_sb_noss?k=Excel+関数

644デフォルトの名無しさん (ワッチョイ 3791-IK5z)2019/03/05(火) 20:34:12.08ID:ruLmgCaM0

645デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/05(火) 20:39:11.81ID:yUBkGE+g0
逆引き系辞典はネットあると本当に使わない

646デフォルトの名無しさん (ワッチョイ ff2c-hSmr)2019/03/05(火) 21:11:49.71ID: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
このあとすぐに書き込みに参ります

647デフォルトの名無しさん (ワッチョイ ff2c-hSmr)2019/03/05(火) 21:26:50.63ID:WmyrgrGT0
オレンジの部分がIE.Busy = Trueという風に教科書通りになっていないのですがこれで大丈夫なのでしょうか
上手いことちゃんとなっているか調べようとやってみましたが私には難しかったです

そして水色の部分なのですが、フレーム数を取得してその数だけ念の為回しておくという感じでしょうか
フレームがいくつかあると取得のたびにIE.BusyがTrue,Falseに切り替わると聞いたのでそのためで合っていますか
それよりもさっき調べて出てきた

'完全にドキュメントが読み込まれるまで待機する
Do Until IE.document.ReadyState = "complete"
DoEvents
Loop
ではダメなのでしょうか、別物でしょうか

ざっとみておかしい部分はありますか?
図々しくすみません

Excel VBA 質問スレ Part59 	->画像>13枚

648デフォルトの名無しさん (ワッチョイ ff2c-hSmr)2019/03/05(火) 21:32:38.87ID:WmyrgrGT0
どういうマクロかと言うと、IEを開いてリンクボタンをいくつか押して文字を引っ張ってきてIEを閉じるというのを何度か繰り返すものです。
リンク先を正しく閉じられていないまま次の回転に入っていることが稀にあるのです

649デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/05(火) 21:58:09.97ID:yUBkGE+g0
>>646
別物だな

>>646はvbaオブジェクトのプロパティ
WebBrowserControl.ReadyState
https://docs.microsoft.com/ja-jp/office/vba/api/access.webbrowsercontrol.readystate

>>647はwebのapi
Document.readyState
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

650デフォルトの名無しさん (ワッチョイ 9f34-0snV)2019/03/05(火) 23:41:58.62ID:b71Efr460
IE11からreadystateもbusyも使えなくなったとかどこかで見た
利用出来ないという意味ではなくて使い物にならないという意味で

なので移動後に表示されるタブ見つけたら、とか移動後に表示される文字列を見つけたらという条件で対処してるわ

651デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/05(火) 23:46:48.59ID:yUBkGE+g0
ここでもIEかよ・・・

652デフォルトの名無しさん (ワッチョイ bf8c-9NtP)2019/03/05(火) 23:57:28.83ID:AE45wcOz0
逮捕されないように気をつけろ

653デフォルトの名無しさん (ワッチョイ 9701-gWFi)2019/03/06(水) 00:08:19.97ID:qZfNBEKA0
>>646
・ IE.Busy = Trueという風に教科書通りになっていない
「if A then B」自体が既に「AがTrueならB」っていう意味だから、更に「= True」は冗長

・ フレーム数を取得してその数だけ念の為回しておくという感じでしょうか
作者はそのつもりだったんだろうけど、Whileの条件が真になった瞬間に全ループが終わるだろうから無意味
その後何かがFalseになってもEnd Subになる

・完全にドキュメントが読み込まれるまで待機する
偶にIEの受信が終わってもDocumentが読み込み終わってない時があるから、付けたほうがいい
フレームの件も、フレーム毎にdocument.ReadyStateを待つことで解決できる(ことが多い)

>>649
VBAは短絡評価出来ないから、IE.documentが取得できないとreadyStateプロパティが見れずに参照エラーが起きるよ
先にIEを待ってから、安全策としてdocument.readyStateも確認すると安定してDOMが使える

654デフォルトの名無しさん (ワッチョイ d701-9DxJ)2019/03/06(水) 00:12:35.24ID:M8vFX/4l0
csvを読み込む手法はいくつかありますが以下のような場合どの方法が最適でしょうか
1行1レコードになっていない(セル内改行あり)
csvが複数ありそれをすべて読み込んで集計処理がしたい
普段はデータインポートやopenで1行づつ読み込んでいましたが1行≠1レコードだと難しいのかと考えています

655デフォルトの名無しさん (ワッチョイ ff2c-hSmr)2019/03/06(水) 00:17:18.56ID:0oqXehnm0
>>649
長文でわかりにくい環境にも関わらず教えて下さってありがとうございます
参考にして、これから開きたいリンク先のウィンドウタイトルと同じタイトルを持ったウィンドウがすでにあれば閉じるという風に書いてみます
下の方に書いてくれたコードも試してみます
本当にありがとうございました
また下らない質問者したらすみません

>>650
会社のパソコンが古いのでしばらくは大丈夫そうです
ですが重要なことなので覚えておきますありがとうございます

656デフォルトの名無しさん (ワッチョイ 9701-gWFi)2019/03/06(水) 00:29:35.50ID:qZfNBEKA0
>>655
既存のウインドウを触るのは初心者にとっては結構大事だよ
閉じれてないのはQuitメソッドの前に次の処理が入ってしまってるだけだと思うから、
処理が終わったと思われる場所に自分でコードを挿入したらどうだろう

657デフォルトの名無しさん (ワッチョイ 9701-gWFi)2019/03/06(水) 00:33:49.27ID:qZfNBEKA0
>>654
改行が含まれてるセルは""で括られてるという認識でいいなら、
丸ごと文字列として読み込んだ後に正規表現で""内の改行を全部改行コードに書き換えるのが良いと思う

658デフォルトの名無しさん (ワッチョイ 9701-gWFi)2019/03/06(水) 00:36:57.21ID:qZfNBEKA0
>>657訂正
改行を全部改行コードに書き換える

改行コードを全部書き換える

659デフォルトの名無しさん (オッペケ Sr0b-9DxJ)2019/03/06(水) 00:54:59.22ID:jXlQSKwgr
>>657
試してないので想像ですが1ファイル数mb程あるので一括読み込みで取得出来るんでしょうか…?
変数に入るのか、pc動作的にどうなのかが気になりますが…一度試してみます

660デフォルトの名無しさん (ワッチョイ 9f7c-sBsz)2019/03/06(水) 01:00:18.09ID:wqRC+Uom0
>>654
replace(str,vbcrlf,"うんこ")

661デフォルトの名無しさん (ワッチョイ 9701-gWFi)2019/03/06(水) 01:08:03.42ID:qZfNBEKA0
>>659
文字列型に格納すればいいと思います
確か数Gbぐらい格納できたはず

662デフォルトの名無しさん (JP 0H4f-j5yB)2019/03/06(水) 07:35:28.45ID:3ub5rlP9H
IEってBusy以外にステータスも見てないとループ抜けちゃわなかったっけ

663デフォルトの名無しさん (ラクッペ MMcb-Z6MB)2019/03/06(水) 07:51:07.24ID:9ZQV49QQM
抜けた気がする
要素がありませんってよく怒られた

664デフォルトの名無しさん (スプッッ Sd3f-IK5z)2019/03/06(水) 08:14:30.41ID:OZZFIuGOd
両方見てても抜ける時が有る。
滅多に無いけど。

例えばClickで遷移する場合に、抜けてからBusyになることがあった。
Submitに比べてClickは単純に文字通りClickするだけなので遷移しないページも有るから必ずBusyになると想定されていないと想像してる。
それ以降Clickの時は最初にSleepを入れるようにしてる。

665デフォルトの名無しさん (スプッッ Sd3f-IK5z)2019/03/06(水) 08:20:35.12ID:OZZFIuGOd
>>654
別に方法は色々あると思うけど1行ずつ読み込んでも良いんじゃない?
1行ずつでも条件に合うまで1レコードとしなければ良い。
1レコードの最後にも改行は有るんだろ。

もし1行ずつ読むなら1レコード内に複数改行が有る可能性を考慮すること。

666デフォルトの名無しさん (ワッチョイ ff2c-Im2K)2019/03/06(水) 08:57:22.69ID:Uli2bEJM0
>>654
Ruby では、列をダブルクオートで囲むと、その中にカンマや改行を含める事もできる。
他の仕様も含め、詳しくはRFC4180を参照

require 'csv'

p CSV.parse_line( "a,\"あ\nい\"" )
# => ["a", "あ\nい"]

\n は改行

列区切りはカンマで、外側の"〜" は文字列を表すための囲み。
内側の\"〜\" は、"〜"内での"〜"を表すため、\ でエスケープしている。列囲みを表す

a の部分は、\"〜\"で囲まなくてもよい

667デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/06(水) 09:17:24.17ID:R/1sU7PR0
rubyって・・・
もう完全に終わってる言語なんだからそんなもの勧めないでよ

668デフォルトの名無しさん (ブーイモ MM1b-9NtP)2019/03/06(水) 09:47:16.43ID:HGc0sPl8M
Twitterで紹介されてたこれ一度試してみたけど機能してたよ

https://www.excelspeedup.com/readcsv/

669デフォルトの名無しさん (ワッチョイ bfab-GrE3)2019/03/06(水) 11:28:25.04ID:p4qnJjw30
下記リンク先のページ下部にあるユーザ定義関数がVBAとして正しく書けてるかチェックして貰えませんか
https://peltiertech.com/loess-smoothing-in-excel/

670デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/06(水) 11:39:12.31ID:R/1sU7PR0
>>669
どういう計算をしてるかは知らんけど、コード上は問題ない

671デフォルトの名無しさん (ワッチョイ bfab-GrE3)2019/03/06(水) 15:05:39.78ID:p4qnJjw30
多分スレチだろうと思いますが、>>669をLibreoffice最新版に実装したところ戻り値に=LOESS(x,y,z,n)で指定したyの配列がそのまま表示されたのでコードどこか間違ってるか仕様変更したのを俺が見落としてるのかなと思って聞きました
ありがとうございました

672デフォルトの名無しさん (ワッチョイ 9fa3-+f+8)2019/03/06(水) 15:12:15.84ID:n2VNtnMC0
>>666
市ね

673デフォルトの名無しさん (ワッチョイ 9701-SKB1)2019/03/06(水) 21:16:11.63ID: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

674デフォルトの名無しさん (アウアウウー Sa9b-fNI3)2019/03/06(水) 21:30:16.04ID:o9MkSJEKa
>>673
ifの条件がおかしい

675デフォルトの名無しさん (ワッチョイ 377c-u5eM)2019/03/06(水) 21:31:48.30ID: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 みたいな感じで入れてからセルに貼り付けると希望の結果になりますがめちゃくちゃ時間がかかります(大量データに使いたいので)
他にやり方があれば教えてください

676675 (ワッチョイ 377c-u5eM)2019/03/06(水) 21:34:55.08ID:LIhekGiK0
例のA列は↓の間違いです、すいません
1 2019/3/6
2 20:04
3 \10,000

677デフォルトの名無しさん (アウアウウー Sa9b-fNI3)2019/03/06(水) 21:37:03.61ID:o9MkSJEKa
画面表示を止めても遅い?

678デフォルトの名無しさん (アークセー Sx0b-yUTo)2019/03/06(水) 21:54:06.80ID:ZuXoITq7x
>>673
列インデックスで加算ループをしている途中で列削除をしてるから、削除した回数分だけ参照参照列の位置がおかしくなるのでは
例えば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を引いてインデックス調整するようにしたりか

679デフォルトの名無しさん (アークセー Sx0b-yUTo)2019/03/06(水) 21:56:07.90ID:ZuXoITq7x
>>673
改めて見たらIfの条件もおかしいね
And条件にしないと

680デフォルトの名無しさん (ワッチョイ 178e-4jKm)2019/03/06(水) 22:13:28.72ID:0dxLNo3Q0
馬鹿過ぎるのが問題

681デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/06(水) 22:23:00.33ID:R/1sU7PR0
>>675
textプロパティ

Sub foo()
Range("c1").Value = Range("a1").Text
End Sub

範囲で代入は出来なかったので、適当にforeachで回してくれ
Range("c1:d2").Value = Range("a1:b2").Text

682デフォルトの名無しさん (ワッチョイ 377c-2g28)2019/03/06(水) 22:36:44.70ID:LIhekGiK0
>>677
止めた状態で遅いです

>>681
セルに直接入力していくと更に遅くなると思います

683デフォルトの名無しさん (ワッチョイ 37e6-W5e4)2019/03/06(水) 22:56:49.85ID:xGO4PHc60
CSVで書き出せばTEXTが得られるぞ

684デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/06(水) 23:08:59.57ID:R/1sU7PR0
>>682
あぁtext使ったって書いてたね、ゴメン
配列でも無理なら高速化はどうだろうか
https://15g.jp/post-314/

高速化でも配列でも重いなら、
もうアクセス辺りに移行した方がいいかも

685デフォルトの名無しさん (ワッチョイ bf68-W5e4)2019/03/06(水) 23:09:20.80ID:R/1sU7PR0
>>683
csvは勝手に変換されるのが鬼門すぎる

686675 (ワッチョイ 377c-2g28)2019/03/06(水) 23:48:56.32ID:LIhekGiK0
やっぱりTextプロパティ使う以外無理そうですかね…

687デフォルトの名無しさん (ワッチョイ 1e68-uGU8)2019/03/07(木) 00:01:59.48ID:UepKFInK0
後は>>683かな
住所の"1-1-1"みたいなものがなければ行けると思う。
後はダメ元でgoogleスプレッドシートに移植してマクロ組んで見るとか

688デフォルトの名無しさん (ワッチョイ a701-ZBQD)2019/03/07(木) 00:20:00.91ID:UmWyYgm40
>>686
textの取得だけループでまわして、
二次元配列に直して代入するとかは?

689デフォルトの名無しさん (ワッチョイ a3e6-uGU8)2019/03/07(木) 00:26:34.58ID:bl5ieqXF0
>>688
遅いって書いてあるだろ。もっと上をお望みなんだよ

690デフォルトの名無しさん (ワッチョイ a701-ZBQD)2019/03/07(木) 00:44:39.67ID:UmWyYgm40
>>689
直接入力が遅いって言ってるから、入力だけ一括でやれば?と思ったんだが

691675 (ワッチョイ a37c-DZHv)2019/03/07(木) 00:46:43.69ID:zt2fCEgu0
>>687
他のファイルは使えない状況なんです…

>>688
その処理がすごく時間がかかるので他の手段を探していました

諦めます
今回の事でRangeのValueやFormulaみたいにTextも配列に入れられるようにしてくれと心から思いました
色々考えてくれたみなさんありがとうございました
もしいい方法思い付いたらいつでも待ってます

692デフォルトの名無しさん (ワッチョイ a701-ZBQD)2019/03/07(木) 01:15:09.98ID:UmWyYgm40
描写と計算止めてCopyメソッドで10万行×30列を列ごとにコピペしたら一瞬で終わったが・・・
っていうかこれ以上増やそうとするとリソース不足でエクセルが悲鳴を上げるし、どういうデータをコピーしたいんだろ

693デフォルトの名無しさん (ワッチョイ a701-ZBQD)2019/03/07(木) 01:18:31.96ID:UmWyYgm40
あ、書式変わるのか・・・上のレスは忘れてください

694デフォルトの名無しさん (ワッチョイ cbb0-fHMV)2019/03/07(木) 02:33:57.63ID:cMWEbvvB0
コピーしてテキストとして貼り付けじゃダメなのか?

695デフォルトの名無しさん (アウアウウー Sac3-tGXB)2019/03/07(木) 02:58:39.40ID:Wb+CU65ma
早い遅いは個人の感覚でしかないとおもう

696デフォルトの名無しさん (ワッチョイ df67-Ly0m)2019/03/07(木) 07:14:54.02ID:RImgiSgC0
>>691
>>684 の Application.ScreenUpdating = False
は効かないのか。 画面描画が止められるよ。やってないから適当なこと言ってるかもしらんが
画面描画以外で時間がかかるってどんなだよ。 ちょっと想像できんがなあ
なんでだろう

697デフォルトの名無しさん (スッップ Sd32-hyvy)2019/03/07(木) 07:24:21.94ID:ldY6B6U1d
>>691
valueで配列コピペした後に、セルに対してそれぞれ書式設定を手動もしくはマクロですれば?
書式は列ごとくらいは揃ってると思うし。
それもバラバラってことだと、そもそも集計の仕方が悪過ぎる。

698デフォルトの名無しさん (ワッチョイ a701-DUKr)2019/03/07(木) 07:28:16.03ID:IFVQ3Zq/0
>>674 >>678
ありがとうございます!
意図するようになりました。
-1で減らしていく発想は本当になかったのでいい勉強になりました。
このたびは本当にありかございました。

699デフォルトの名無しさん (スッップ Sd32-hyvy)2019/03/07(木) 07:44:13.43ID:ldY6B6U1d
>>696
684じゃないけど、複雑に関数組んだりとか遅い関数が大量に入っててかつデータ数がエクセル上限近くで再計算に時間がかかるとか、あとセル上で反復計算やソルバー使ってたりするとある。
ただ684は書式がバラバラなセルを扱ってる時点で、複雑な計算をしてるとは思えないけど。

700デフォルトの名無しさん (ワッチョイ df67-Ly0m)2019/03/07(木) 07:52:53.03ID:RImgiSgC0
>>699
>>675をもう一度見て来いよ。 これだぞ。そんなややこしいことしている話ではないと思うが

>表示形式が混在したセルを見た目通りのまま表示形式が文字列の別のセルにコピーするいい方法ありませんか

701675 (スフッ Sd32-tsl5)2019/03/07(木) 08:38:04.86ID:QURDMn8Xd
再描画等定番の部分は止めています
セル数は100万ぐらい、列数、行数分回してTextプロパティを1セルずつ配列に入れる処理だけです
シートへの貼り付け処理ではなくこの取得部分に時間がかかります
同じ回数回すAや、Format関数、worksheetfunction.textを使った場合その半分以下の時間ですが望みの結果を得る方法はわかりませんでした…

702デフォルトの名無しさん (ワッチョイ f2a2-ouaW)2019/03/07(木) 10:57:17.39ID: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"

データが多すぎて無理?

703デフォルトの名無しさん (ワッチョイ f2a2-ouaW)2019/03/07(木) 10:58:23.63ID:QGzmAmpt0
アー、見た目が同じまま、「文字列」なのか・・・
すんません無視してください

704デフォルトの名無しさん (アウアウクー MM07-fHMV)2019/03/07(木) 11:39:04.19ID:OUaGUe4hM
>>675
A1:A3をコピーしてメモ帳とかに貼り付け
全選択してコピーしてB1:B3に貼り付けでできた
VBAだけで完結させる方法は知らん

705デフォルトの名無しさん (エムゾネ FF32-ekDA)2019/03/07(木) 12:41:45.56ID:g1Ak82VsF
勘違いしてる奴が多いが、自動計算を止めたり描画を止めるのは初心者が速度アップのためにやる方法で、>>675のように速度アップの為に考えて組まれている場合には効果が無い。

上級者はこういう場合に描画止めたりしないよ。
考えずに組んで面倒くさい場合にやる奴はいるかもしれんけど。

706675 (スフッ Sd32-tsl5)2019/03/07(木) 12:42:12.66ID:QURDMn8Xd
>>702
あとからNumberformatを適用させるんでなく配列に入れる時点で適用させる手を考えたんですが、
適用させるのにworksheetfunction.textを使うと書式に「マイナス値は[赤]」みたいな色設定があるとなぜか1004エラーが出るし、Format関数使うと表示形式が標準の時なぜか値が「標準」という文字列になってしまいます
速度的にはtextプロパティ使うよりずっと速いんですが…もう訳がわからない

707デフォルトの名無しさん (エムゾネ FF32-ekDA)2019/03/07(木) 12:46:54.74ID:g1Ak82VsF
>>675
他に方法があるか探る時間が無いので何とも言えんが、DB処理にするか、マルチプロセスで上手いことすれば早くなると思う。

708デフォルトの名無しさん (エムゾネ FF32-ekDA)2019/03/07(木) 12:50:28.91ID:g1Ak82VsF
よく考えたらDB処理は駄目な気がする。
表示部分を扱え無さそうだ。

709デフォルトの名無しさん (ワッチョイ ebce-2wIc)2019/03/07(木) 18:02:24.90ID:6oCjCAip0
メモ帳にコピペすると書式が全部消えて見た目通りの文字列になる
メモ帳アプリの実体はエディットコントロールそのものだから、ユーザーフォームにエディットコントロールを貼っただけの作業場所を作って、そこ経由でコピペしてみたら?

710デフォルトの名無しさん (ワッチョイ 12a6-/DyH)2019/03/07(木) 18:03:18.10ID:hp531q160
UserForm1にTextBox1とCommandButton1、TextBox2とCommandButton2の計4つが配置され
UserForm2には入力フォームが配置されています。

CommandButton1からUserForm2を呼び出した時は、TextBox1に記入
CommandButton2からUserForm2を呼び出した時は、TextBox2に記入

させるには、どうすれば良いですか?

711デフォルトの名無しさん (エムゾネ FF32-ekDA)2019/03/07(木) 18:34:04.34ID:rXPjoswtF
>>709
これ、本当?
だったらクリップボード弄って高速化できるかもしれない。

712デフォルトの名無しさん (ワッチョイ cbda-/kwh)2019/03/07(木) 18:34:43.55ID:qs1KmWLa0
複雑な処理でデータ量が多いなら遅くても仕方ないんじゃね?
どうせエクセルだし、専門職じゃないし、大した会社じゃないし、給料安いし

713デフォルトの名無しさん (アークセー Sxc7-sOih)2019/03/07(木) 19:03:35.19ID:qo/Sl71gx
>>710
やり方はいくつもある
一番簡単な方法を書くと、

Userform1側の各ボタンのクリックイベント内に、任意のセルや標準モジュール上のPublic変数等にコマンドボタンのオブジェクト名をコピーする処理を書く(Me.ActiveControl.Nameでフォーム上でフォーカスされているコントロールオブジェクトの名前を取れるのでこれを使う)

Userform2側のイベントコードではそのコピーされたボタン名を読み取って書き込み先のテキストボックスを判定するようにする

714デフォルトの名無しさん (アウアウエー Saaa-CO8P)2019/03/07(木) 19:11:06.28ID:ximLdO0ya
>>710
コマンドボタンのクリックイベントプロシージャで、グローバル変数に呼び出したボタン番号を格納→ユーザーフォーム2のコンストラクタでグローバル変数で分岐させる方法

もしくはコマンドボタンのクリックイベントプロシージャでユーザーフォーム2のマルチページコントロールのプロパティを変更する(value=1,2)方法もある

715675 (ワッチョイ a37c-DZHv)2019/03/07(木) 21:34:32.55ID:zt2fCEgu0
セル範囲をコピーしてクリップボードから直接二次元配列に入れるようにしたら何十秒もかかってたのが0.5秒になりました
ただ、クリップボードから切り出す時にうっかりセルの値に手を加えてしまわないかが心配です
単純にVbCrLfで行を区切って、VbTabで列を区切ってるんですがそれで問題ないんでしょうか?

716デフォルトの名無しさん (ワッチョイ ebce-2wIc)2019/03/07(木) 22:48:37.99ID:6oCjCAip0
>>715
セル内改行を使ってなければそれで大丈夫

717デフォルトの名無しさん (ワッチョイ a37c-DZHv)2019/03/08(金) 00:03:05.83ID:+kJkkfKW0
>>716
セル内改行入れてみたら…またこんな落とし穴が…

718デフォルトの名無しさん (ワッチョイ 12a6-/DyH)2019/03/08(金) 02:12:12.40ID:k3BFo3Xw0
>>713
>>714
プロジェクトが大きくなるにつれグローバル変数は神経を使うので
極力さけたかったのですが
Form1.ActiveControl.Name、でいけそうですね

719デフォルトの名無しさん (アウアウエー Saaa-CO8P)2019/03/08(金) 03:08:04.26ID:Tjqa7GxLa
システムの大規模化が想定されるならユーザーフォームでユーザーフォームを呼び出すのは危険w
ユーザーフォーム間の依存性を高めてしまうw
ここはユーザーフォームを呼び出すクラスを作った方がいいw
クラスを介して情報を渡せば安全だし再利用性も高まるw

720デフォルトの名無しさん (ワッチョイ 1201-ouaW)2019/03/08(金) 08:00:14.88ID:IUpgvQZO0
やっぱりuserformからuserform呼ぶのってよくないのか
こういうのってクラスモジュール使えるんだろうなって思ってたんだけど
余り使ったことなかたんで、ちゃんと勉強してみよう
参考書ぽちってきたわ
JavaとかC#を多少触ってきたからオブジェクト指向の概念は分かってるんだけど
VBAでの効果的な使い方をマスターしたいわ

721デフォルトの名無しさん (アークセー Sxc7-sOih)2019/03/08(金) 08:01:46.46ID:aYiBhvGax
引数付きコンストラクタすら簡単に実装できない言語で呼び出し用クラス作る方がきついと感じてしまうね、個人的には

722デフォルトの名無しさん (ワッチョイ 1201-ouaW)2019/03/08(金) 08:08:56.71ID:IUpgvQZO0
普通のコンストラクタには引数渡せないんだ
まぁその辺の限界も含めて一度勉強しておいたほうがいいとは思ってる
できることと出来ないことを知った上で、クラスを使う選択肢を持つことができればいいかなって

723デフォルトの名無しさん (ドコグロ MM32-DUKr)2019/03/08(金) 08:15:50.67ID:nNie5CZRM
VBAでクラスとか言ってるのはたいてい知ったかだからスルーしていい
VB.NETとかC#知ってたらストレスしかたまらん

724デフォルトの名無しさん (アウアウエー Saaa-/Er5)2019/03/08(金) 08:23:55.15ID:URVXf1I+a
そもそもVBAにクラスが欲しくなるような規模の要件を押し付けている時点で業務設計が破綻してる

725デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/08(金) 08:24:18.53ID:wvJFI7ubd
こういう場合にクラス使うの?
何か違うと思うんだが。

VBAでも見た瞬間にクラス使おうと思う場合もあるんだが、そういうことは少ないな。>>323のような話なら見た瞬間にクラスだなと思うんだけどね。

726デフォルトの名無しさん (アウアウエー Saaa-/Er5)2019/03/08(金) 08:43:43.11ID:URVXf1I+a
>>725
ワークシート上でデータが常に単なる二次元の表として見えているために、
その行をエンティティとして見るような発想になりにくいんだろうね
別にそれが悪いとは思わないが

727デフォルトの名無しさん (ドコグロ MM97-/Er5)2019/03/08(金) 08:55:03.19ID:GpWg6Xx2M
逆にいうと、ワークシート上で人間が無理なく扱えるようなデータ構造にならざるを得ないから、
生え抜きのVBerが作りがちな酷いDB設計になりにくい
そういう良い意味でデータ構造に無理が利かないので、クラスでデータ構造を抽象化したくなるケースが少ないのだと思われる

728デフォルトの名無しさん (エムゾネ FF32-ekDA)2019/03/08(金) 12:25:06.22ID:3iX4ejeoF
DBとして扱うならクラス使うことも考えるよ。
でも、DBとして扱うことも多くない。
DBならAccessにしちまうんで。

729デフォルトの名無しさん (ブーイモ MM0e-4aR2)2019/03/08(金) 16:46:49.91ID:YR0R2o1EM
いまAccessを使う理由って何?
無料版のSQL Server のスペックの方が上だろう。
移行が大変だから?

730デフォルトの名無しさん (ワッチョイ b78e-mXZC)2019/03/08(金) 16:53:49.99ID:84JrbWWM0
エンジンだけで比べてる頭の不自由な人かな?

731デフォルトの名無しさん (ドコグロ MM97-/Er5)2019/03/08(金) 16:53:54.67ID:GpWg6Xx2M
フォーム中心のまともなデータベースアプリが比較的簡単に作れるという点では意味がある
まあ今ならPowerApps使えばいいと思うけど

732デフォルトの名無しさん (アークセー Sxc7-sOih)2019/03/08(金) 17:59:29.39ID:uRP/bscvx
PowerApps使うならPowerShellかJScript使わないとな
まぁVBAは要らんわ

733デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/08(金) 18:55:16.76ID:aTSUMsKkd
???
会社のPCに既にAccessがインストールされているのにもかかわらず、
Excelで扱うような程度のものをDBとして扱いたい時に、SQL Serverインストールはじめちゃう人?

全てにおいてセンスねーわ。

734デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/08(金) 18:56:25.33ID:aTSUMsKkd
まだSQLiteの方が理解出来るわ。

735デフォルトの名無しさん (ブーイモ MM0e-4aR2)2019/03/08(金) 19:18:32.09ID:rErY3KdLM
>>733
正直君の意見はよくわからん
Management Studioすごく便利だよ
それにExcel からADOやODBCでつつく際のIFは大して変わらないんだからSQL Serverの方がパフォーマンスいいじゃん

736デフォルトの名無しさん (ワッチョイ a37c-DZHv)2019/03/08(金) 19:24:33.31ID:+kJkkfKW0
うちの会社そういうの入れる時はそれを使う理由説明して了解得るのに手間がかかる

737デフォルトの名無しさん (スププ Sd32-wUBi)2019/03/08(金) 19:46:50.70ID:iqA0OhOAd
まあ普通はセキュリティ部門にリクエストして審査通らんと入れるのは無理だわな
VBAも原則禁止だから毎回例外申請してるわ

738デフォルトの名無しさん (ワッチョイ cbda-/kwh)2019/03/08(金) 21:38:31.98ID:quBQyQDX0
環境申請が必要な業務を未経験者にさせるほどうちの会社はブラックじゃない

739デフォルトの名無しさん (ワッチョイ b78e-mXZC)2019/03/08(金) 21:38:33.69ID:84JrbWWM0
>>735
馬鹿はエンジンしか見ていない

740デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/08(金) 22:23:14.58ID:AVEVGkz60
具体的な事を言えよ

741デフォルトの名無しさん (ワッチョイ b78e-mXZC)2019/03/08(金) 23:50:58.19ID:84JrbWWM0
>>740
馬鹿には理解できんのか?

742デフォルトの名無しさん (ワッチョイ a701-rbBm)2019/03/09(土) 02:13:50.44ID:zk58FQoZ0
会社がoffice365に切り替わってAccess使えるようになった俺歓喜

743デフォルトの名無しさん (アウアウウー Sac3-tGXB)2019/03/09(土) 02:15:54.88ID:w2C0D7DGa
accessはスレチ

744デフォルトの名無しさん (ワッチョイ de8c-91/d)2019/03/09(土) 04:02:18.85ID:83GbxNdW0
accessって開発続いてるの?
Excelを強化してAccessを見放すように思えてしょうがない

745デフォルトの名無しさん (ワッチョイ b7f1-IjB2)2019/03/09(土) 04:12:29.83ID:676zsyfX0
accessはウンコです

746デフォルトの名無しさん (ワッチョイ ebdc-Ly0m)2019/03/09(土) 07:26:22.26ID:j4uu9hgX0
Acccessとか。 いつの時代の遺品だよって感じだな
使いにくかったしなあ

747デフォルトの名無しさん (ワッチョイ 1201-DUKr)2019/03/09(土) 07:48:05.33ID:ABNsWlsO0
>>744
>>731も書いてるけどExcelとAccessって用途が違うから当面なくならないと思うよ

748デフォルトの名無しさん (ワッチョイ 7234-pA/6)2019/03/09(土) 08:34:58.65ID:nDxlP6J/0
SQLとOracleとAccess使うと書き方混乱する

749デフォルトの名無しさん (ワッチョイ 16da-/kwh)2019/03/09(土) 09:22:46.51ID:Z89d69KF0
シート上に複数のテキストボックスを配置して、
KeyDownイベント + vbKeyRightとかvbKeyTabで、
テキストボックス間を移動出来るようにすると、
カーソルがたまに見えなくなるんだけど、回避策ない?
見えないだけで、存在はしているので、
文字は打てるんだけど、文字まで透明になっちゃう。
テキストボックスを何回か適当にクリックすると、
突然見えるようになる。

750デフォルトの名無しさん (ワッチョイ 16da-/kwh)2019/03/09(土) 09:24:00.36ID:Z89d69KF0
↑あと、わざわざ画面更新を止めたりはしていない。

751デフォルトの名無しさん (ワッチョイ 16da-/kwh)2019/03/09(土) 09:29:10.33ID:Z89d69KF0
↑あ、別のPCで開いたら再現しなくなった。
もしかして、グラフィックボードの問題?

752デフォルトの名無しさん (ワッチョイ a701-rbBm)2019/03/09(土) 10:19:05.53ID:zk58FQoZ0
>>751
ボードと言ってるのはたぶんドライバのことだと思うけど、その可能性はあるよね。
いくつかバージョン違いを落としてきて試してみればいい。
とりあえずは、各メジャーバージョンが上がったばかりのは除いて、それぞれ最終リビジョンのを集めてきてかな

753デフォルトの名無しさん (ワッチョイ 1e90-R+To)2019/03/09(土) 21:56:21.30ID:QAZD12fZ0
excel vbaとaccess vba
どちらの方が実用的ですか?

754デフォルトの名無しさん (ドコグロ MMea-/Er5)2019/03/09(土) 22:00:31.82ID:BnoVO+GEM
>>753
目糞鼻糞
今時ローカルで完結する業務要件なんかほとんどない

755デフォルトの名無しさん (ワッチョイ 1e90-R+To)2019/03/09(土) 22:03:03.09ID:QAZD12fZ0
両方できて当たり前ですか?

756デフォルトの名無しさん (ワッチョイ b769-F75Q)2019/03/09(土) 22:06:43.06ID:vJsfVwnQ0
触り始めればすぐ覚えるよ
触る機会がexcelのほうが多いってだけ

757デフォルトの名無しさん (ドコグロ MMea-/Er5)2019/03/09(土) 22:20:16.59ID:BnoVO+GEM
>>755
Excelだけでいいよ
今時AccessやるくらいならSalesforceでも覚えなさい

758デフォルトの名無しさん (ドコグロ MMea-DUKr)2019/03/09(土) 22:33:56.74ID:u5Pk3KZwM
Accessに親でも殺されたのか? w

759デフォルトの名無しさん (オイコラミネオ MM0f-rbBm)2019/03/09(土) 22:36:15.94ID:M4mulWlpM
>>755
超小規模ならExcel
テーブルの規模が大きくなってくるとAccess
Accessの何がいいかって言うとオレはレポートだと思ってる。あれを使いたいがために、オレはdbアプリ(フロントエンド)はAccess一択。
テーブルの規模がさらに大きくなってきたら、テーブルだけをoracle、SQLServerなりに移行。
そもそもAccessは大規模用ではないが、わかって開発すれば大規模用に寄せていくことはできる。

760デフォルトの名無しさん (アウアウエー Saaa-/Er5)2019/03/09(土) 22:42:40.73ID:ouuI5dEha
>>758
シンプルに、需要がない

761デフォルトの名無しさん (オイコラミネオ MM0f-rbBm)2019/03/09(土) 22:43:14.91ID:M4mulWlpM
>>759
Access一択は語弊があるけど、Accessだけで完結できるならAccess押し。
あとは顧客要望で、webなりc#なり様々

762デフォルトの名無しさん (ワッチョイ 1201-DUKr)2019/03/09(土) 22:52:20.46ID:ABNsWlsO0
>>760
需要の無いものをMSがわざわざ開発して売ってるのかw
無職の妄想乙

763デフォルトの名無しさん (アウアウエー Saaa-/Er5)2019/03/09(土) 23:38:00.61ID:ouuI5dEha
>>762
実際ほとんど放置されてるでしょ
そもそもAccessってノンプログラミングで専用アプリ風のDBアプリが作れるのがメリットなのであって、そこは全く否定するつもりはないけど
プログラミングするんなら他にもっと優れた選択肢はいくらでもあるよ

764デフォルトの名無しさん (ワッチョイ cbda-/kwh)2019/03/09(土) 23:47:17.35ID:c6PO5ulL0
With Access ってやりたくなってきたな

765デフォルトの名無しさん (ワッチョイ 1e68-uGU8)2019/03/10(日) 00:26:33.47ID:AZoiY/Tr0
中小企業は普通にエクセル・アクセス
使える人間が多いのが最大のメリット。事務員だけでも割とどうにかなる

エクセルvbaは死ぬほど使う
アクセスはvbaじゃなくSQLを覚えたほうが良い
でもSQL覚えるのって結構たいへんなんだよよねぇ

766デフォルトの名無しさん (ワッチョイ a37c-DZHv)2019/03/10(日) 00:34:07.81ID:/SA1VNEE0
とりあえずVBAはどっちでも同じだから、あとはどういう環境を用意されることが多いかと考えると圧倒的にExcelに縛られることが多いので実用で考えるとExcelだろうか
Accessでやる方が楽な時でもExcelでやらされることが多いし

767デフォルトの名無しさん (ワッチョイ 1e68-uGU8)2019/03/10(日) 00:37:17.38ID:AZoiY/Tr0
Accessは大抵前任者なりシステムなりが作っている場合が多いから、ほとんど触る事が無い
エクセルは事ある毎に0から作ったり改修する事多いからvbaはめっちゃ役に経つ

768デフォルトの名無しさん (ワッチョイ cbda-/kwh)2019/03/10(日) 00:45:32.25ID:/1sFaTiS0
素人が作って不正統計したりするのもexcel

769デフォルトの名無しさん (ワッチョイ a701-rbBm)2019/03/10(日) 00:54:56.33ID:W5FlChvZ0
>>765
複雑になってくるとSQL知識は必要になるけど、クエリーデザイナ(QBEグリッド?)でほとんどできてしまう。
昔oracleでSQLゴリゴリ書いてたあとAccessのクエリーデザイナ見て「これ考えたやつ天才やな」とマジで思った。
選択も更新も削除も書けて、テーブル連結も表現できて、革命やなと。

770デフォルトの名無しさん (ワッチョイ 8361-Xz5k)2019/03/10(日) 01:10:02.43ID:HL2UVho30
accessで帳票画面作りが便利過ぎて
Excelにもレポートつけて欲しい
方眼紙神Excel化しまくり

771デフォルトの名無しさん (ワッチョイ 1201-DUKr)2019/03/10(日) 04:21:41.33ID:RhjsjUYS0
>>763
お前がAccess知らんだけだろw

772デフォルトの名無しさん (アウアウエー Saaa-/Er5)2019/03/10(日) 07:28:22.90ID:m5XGUhg5a
>>771
そもそも今時ローカル限定のDBなんてほとんど役に立たなくね?
ちなみに、https://support.office.com/ja-jp/article/ビデオ-access-web-アプリを作成する-10855ec0-3a12-4e6c-a67c-c88267f00a3c
> 重要 Microsoft では、SharePoint で Access Web App を作成および使用することはお勧めしなくなりました。 代わりに、Microsoft PowerApps を使用して、Web およびモバイル デバイス用にコードなしのビジネス ソリューションを作成することを検討してください。

だそうだよ

773デフォルトの名無しさん (ワッチョイ 16da-/kwh)2019/03/10(日) 08:09:35.64ID:8TH6z4a90
Salesforceて。
クエリの自由度がAccess以下じゃん。

774デフォルトの名無しさん (ドコグロ MM97-/Er5)2019/03/10(日) 08:13:57.05ID:jNouaRswM
>>773
仮にそうだとしてもAccessより圧倒的にスキルの需要が高いのは事実だよね
それは何故だと考える?

775デフォルトの名無しさん (ワッチョイ 1201-DUKr)2019/03/10(日) 08:46:12.12ID:RhjsjUYS0
>>772
まじでAccessに親でも殺されたのかよw
必死にググって探してきたんだろうけど見てて恥ずかしいぞ

776デフォルトの名無しさん (ワッチョイ a701-rbBm)2019/03/10(日) 08:48:28.53ID:W5FlChvZ0
>>772
ローカル?
Accesswebアプリ?
だから、知らないやつは黙っとけと。
自分の周りで需要がないから、どこもそうだとは限らないって考えられないのか?
MSが推奨してても、そうならなかったこともあるだろうに(いちいち書かない)。

777デフォルトの名無しさん (ワッチョイ a701-rbBm)2019/03/10(日) 09:03:35.58ID:W5FlChvZ0
>>774
sfは使ってる側だが、Accessと比べてる意味がわからん。
それぞれメリットデメリットがあって、顧客の要望にどちらがよりふさわしいかだぞ。
Accessのときもあるし、そうでないときもある
office365が広がって、Accessで作るメリットは開発側も、アプリ導入側も確実に増えてきた。
例えば、visualstudioで作るなら開発側は買わないといけない(小規模会社以外は)
これだけ書いてわからないとしても、スレ違いもあるからこれ以上議論しない。Accessスレでも、くだらないから議論しない

778デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/10(日) 09:43:54.35ID:Cor3H27v0
ここは顧客のためにアプリ開発してるような人が来るスレじゃない、というのが前提にあるんじゃないの?
だから話がずれてしまう

779デフォルトの名無しさん (アウアウウー Sac3-tGXB)2019/03/10(日) 10:10:19.51ID:LxD//o4za
個人商店で売上管理する程度か、ソフト会社でシステム管理任されてるかでは違いすぎるわな

780デフォルトの名無しさん (ドコグロ MM97-/Er5)2019/03/10(日) 10:21:42.56ID:jNouaRswM
顧客の要望笑さんのように目の前の要件だけ片付けてトンズラできる立場なのか、
将来も含めて面倒見ないと行けない立場なのかでも全然違うわな
後者ならさすがにAccessは正当化できないわ

781デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/10(日) 10:22:42.48ID:Cor3H27v0
スキルレベルの話というより、制約条件が自分要因なのか顧客要因なのかが大きい。
こんな場所で顧客要因の話なんか相応しくないだろ、ってことだ。

782デフォルトの名無しさん (ラクッペ MM97-F75Q)2019/03/10(日) 10:42:00.95ID:U7oWyg8EM
とにかく安く作れと命令されればこうもなろう!

783デフォルトの名無しさん (ワッチョイ a3e6-uGU8)2019/03/10(日) 10:45:41.83ID:9Z3HOdWo0
winformやwpfがaccessより優れていればよかったんだがな

784デフォルトの名無しさん (ワッチョイ 1e68-uGU8)2019/03/10(日) 11:17:38.37ID:AZoiY/Tr0
>>783
分かる。なんか色々解決した気がする
Silverlightも死産だった

785デフォルトの名無しさん (ワッチョイ 16da-/kwh)2019/03/10(日) 11:28:51.41ID:8TH6z4a90
>>774
そりゃググればいくらでも情報出てくるAccessとは比較にならんからな。

786デフォルトの名無しさん (アークセー Sxc7-sOih)2019/03/10(日) 11:34:33.33ID:UR1GQMqix
えっと、、、ここExcel VBAのスレですよね?

787デフォルトの名無しさん (ワッチョイ b78e-mXZC)2019/03/10(日) 11:44:50.15ID:z6hGNEnV0
馬鹿はAccessのエンジン部分だけしか見ていない

788デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/10(日) 12:00:46.26ID:Cor3H27v0
どうせくだらないオレオレ都合を一般化してるんだろ

789デフォルトの名無しさん (アークセー Sxc7-sOih)2019/03/10(日) 13:42:15.79ID:UR1GQMqix
Access VBAは提供機能の環境結合度がExcel VBA以上に強いイメージを持ってるんだけど、Office365になってもバージョンアップによる互換性の問題は変わらない感じ?

790デフォルトの名無しさん (ブーイモ MM32-ehMm)2019/03/10(日) 15:38:12.98ID:DYQTDh8PM
GUIをExcel、データストアをAccessとするアプリをVBAで作るのが最強ってことですね

791デフォルトの名無しさん (ワッチョイ a701-rbBm)2019/03/10(日) 16:10:54.47ID:W5FlChvZ0
>>789
提供機能の環境結合度が何を言ってるかわからないが、昔作ったやつの改造質問が時々来て、軽く動かす範囲において互換性に問題があったことはない。
互換性問題でお客様から問い合わせ来たこともない。mdbの話し。

>>790
違います(indeed風w)
それぞれで無理なく完結できるならわざわざ分けない。そもそも「GUIをExcel」とするほどの優位はない。
データストア(テーブル)をシートでゴニョゴニョできる範囲ならExcelでやってもいい。デカくなるとAccess。

最近経験したのは、Accessのグラフが昔のママだったので、新しいグラフを使うためにExcelに結果出力することにした
(ながっ。Accessスレ過疎ってるけど、そっちで書いたとここに書けば何人か見に行ってくれると思う)

792デフォルトの名無しさん (ワッチョイ 7335-uGU8)2019/03/10(日) 16:46:27.59ID:QRthXdOt0
Excelでも
VBAでも
質問スレでもない
でもどうせ平日は質問もないし、土日はこういう流れokみたいにしてもいいんじゃないかな

793デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/10(日) 17:36:22.03ID:hFpGjFbxd
どうでも良いけどセンスね―奴が多いな。

Salesforceってw
まず、会社で自分が使う環境になってからの話だろうに。
AccessやExcelと同列で語るとは笑わせる。
SQLサーバーも一緒。

Accessは単体で完結する使われ方も有るけどフロントエンドで使われる場合もある。
で、どちらの場合もSQLサーバーとは比較の対象にはならない。

俺はトヨタとかホンダとかと同じ知名度の会社で働いてるが普通にAccess使ってる。
というか、大きな所は結局いろんなツール使ってる。

794デフォルトの名無しさん (アークセー Sxc7-sOih)2019/03/10(日) 17:53:03.67ID:UR1GQMqix
我慢できず煽りと自慢を入れちゃう辺りがかわいい

795デフォルトの名無しさん (ワッチョイ 7335-uGU8)2019/03/10(日) 18:14:41.27ID:QRthXdOt0
知名度で比較してもその中には昭和みたいなやり方の企業は山程あるんだが

796デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/10(日) 18:19:33.93ID:hFpGjFbxd
>>795
あるかもね。
うちの会社は違うけど。

797デフォルトの名無しさん (ワッチョイ 7335-uGU8)2019/03/10(日) 18:21:35.02ID:QRthXdOt0
>>796
と、その昭和な会社も思ってるからな
レスだけだと実際どうかは判別つかない

798デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/10(日) 18:25:09.94ID:hFpGjFbxd
馬鹿でかいDBサーバーが何個もあって、ちゃんとしたシステムもある。
けど、いろんな部所が独自にツール作ってるし、その馬鹿でかいDBに参照だけさせて貰って、Accessをフロントにしてるのもある。
Excelをフロントにしてるのもあるな。

もちろん、好き勝手が出来るわけじゃないが。

799デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/10(日) 18:34:31.65ID:hFpGjFbxd
>>797
そもそも大きな会社のことが分かってない発想だな。
大きな会社は新しい考え方してる部署もあるし、古い考え方してる部署もある。
普通に色んな部署があるからAccess使う所もたくさんある。

800デフォルトの名無しさん (ワッチョイ cbda-/kwh)2019/03/10(日) 18:51:24.29ID:/1sFaTiS0
それでもAccessはないかもしれない

801デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/10(日) 19:12:48.88ID:Cor3H27v0
それにしてもAccessに批判的な意見に対して「センスが悪い」と言うのは変なバイアスを感じるよな

802デフォルトの名無しさん (アークセー Sxc7-sOih)2019/03/10(日) 19:29:50.41ID:UR1GQMqix
>>799
全社システムを入れてデジタル化を推進しようとしてるかと思えば、部署や事業分野毎に統制レベルがまちまちだったりして結局色んなシステムやアプリを使ってたりするのがいわゆる大企業だよな
もちろん電話FAX紙資料頼みの昭和的なやり方の部分が残ってることもある

803デフォルトの名無しさん (ワッチョイ 975f-Qqsz)2019/03/10(日) 19:30:28.09ID:FHxk+Xrb0
大抵の部署は「エクセルワードパワポ使えりゃいい」ってことでHome&Business買って終わりだからな
そもそもAccessに触れる機会がない

804デフォルトの名無しさん (ワッチョイ b769-F75Q)2019/03/10(日) 19:41:28.13ID:6Vmijfcb0
3つのエクセルファイル開いて終わったら
3つともcloseしてquiteしてるんだけど
タスクマネージャみたら3つのエクセルがのこったまま
なんでー?

805デフォルトの名無しさん (ワッチョイ cbda-/kwh)2019/03/10(日) 19:46:40.37ID:/1sFaTiS0
ういるすじゃね

806デフォルトの名無しさん (ワッチョイ 7335-uGU8)2019/03/10(日) 19:57:44.50ID:QRthXdOt0
>799
20代前半?

807デフォルトの名無しさん (ワッチョイ a37c-DZHv)2019/03/10(日) 20:53:30.17ID:/SA1VNEE0
>>804
プロセスが残ってるってことだよね?
3つのエクセルファイル開く前はプロセス0個だった?
closeしてquiteしてるオブジェクトはちゃんと合ってる?

808デフォルトの名無しさん (ワッチョイ 1201-DUKr)2019/03/10(日) 22:01:10.58ID:RhjsjUYS0
>>803
いわゆるそれなりの企業でOfficeを個々の部署で買ってるところってそんなにないだろ

809デフォルトの名無しさん (ワッチョイ 975f-Qqsz)2019/03/10(日) 22:37:21.73ID:FHxk+Xrb0
>>808
ウチの場合各部署の上長に選択肢与える方式だから
Publisher使う広報部以外Professional選ぶとこほとんどないよ

810デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/10(日) 23:03:17.67ID:hFpGjFbxd
>>802
論点の分かってないバカは何処にでもいるな。
つまり結論は、Access使ってるということだよ。

それにAccessと比較できるようなソフトが無い。
それが分からんからセンスがね―と言われる。
FileMaker挙げられたら分かってる奴だろうが。

>>803
そりゃ残念だったな。
Officeは部署で買うもんじゃ無いと思うぞ。
聞いたこと無いけど。
うちの会社は全員Access入ってると思うぞ。

811デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/10(日) 23:04:10.67ID:hFpGjFbxd
>>801
センスが悪いのは対抗に成りようがないもんを挙げてるからだよ。

812デフォルトの名無しさん (ワッチョイ 1201-DUKr)2019/03/10(日) 23:13:37.64ID:RhjsjUYS0
>>809
個々に発注してるの?
ボリュームライセンス使わないの?

813デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/11(月) 00:05:51.48ID:tsrenNBW0
AccessやめてSQLServerにしろって言われて移行の手間以外の理由で嫌がる人間がいるだろうか?
いや、いない

814デフォルトの名無しさん (アークセー Sxc7-sOih)2019/03/11(月) 00:06:57.17ID:lsnxSivOx
なんか他人を見下したいだけのタイプっぽくてウザいからNGしたわ
仮にこいつがAccess詳しくてもこいつから教わりたくないなって感じ

815デフォルトの名無しさん (ワッチョイ 927c-fEQS)2019/03/11(月) 00:09:57.12ID:sN5dooJH0
VBAより細かいことができて簡単でメジャーでお勧めってJAVAでいいの?
用途は個人で簡単なアプリを作る程度です。

816デフォルトの名無しさん (ワッチョイ a3e6-uGU8)2019/03/11(月) 00:11:11.53ID:tJkNrW1I0
Access取り上げられてManagement Studio渡されたらうにょる

817デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/11(月) 00:12:43.40ID:B6nWiYCUd
>>813
SQLサーバーにするようなのは手間もそうだが、規模が違うだろ。
そんな話になるなら最初からExcelやAccessの話になんてなってない。

そんなこともわからね―のかよ。
自由にできる中小とは違うんだよ。

818デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/11(月) 00:16:15.83ID:B6nWiYCUd
>>815
それは微妙だな。
細かいことは出来ない場合がかなりあるだろうな。
簡単かどうかも微妙。
難しさの方向性も違うし。

819デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/11(月) 00:21:09.07ID:B6nWiYCUd
>>816
問題は何で組むかって話になるだろうね。
昔、MSDEで組んでた時に使ってたけど、Accessなんか競合するようなもんじゃない。
まあ、VBAでも組めるからExcelやAccessから繋いでも良いんだけど、それって本末転倒じゃね?

結局VisualStudioで組む話に成るんだろうな。

820デフォルトの名無しさん (ワッチョイ b78e-mXZC)2019/03/11(月) 07:05:51.99ID:JOj7lbWG0
>>813
馬鹿はエンジン部分だけしか見ていない

821デフォルトの名無しさん (ドコグロ MM32-DUKr)2019/03/11(月) 07:19:27.24ID:n6vPhCvaM
>>813
想定の範囲内でしたね
Access以上に帳票作成が楽なソリューション出してください
あなたならできるはずです
あっ、もちろんコストは想定の範囲内でお願いしますよ

822デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/11(月) 09:28:28.62ID:tsrenNBW0
>>821
ExcelからSQLServerのデータをつつけばいいじゃん
このスレ的にも趣旨にあう

823デフォルトの名無しさん (ドコグロ MM32-DUKr)2019/03/11(月) 10:13:10.23ID:n6vPhCvaM
印刷に難のあるExcelで帳票作成?
わざわざ茨の道を進む提案は想定の範囲外でしたよ
次回からもう来なくていいですw

824デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/11(月) 10:35:34.29ID:tsrenNBW0
>>823
帳票?印刷?
そんなもんPCでやるわけないでしょ
君こそふざけてるんじゃないの?

825デフォルトの名無しさん (オイコラミネオ MM0f-rbBm)2019/03/11(月) 10:49:41.28ID:fslMg+hgM
>>824
えっ?

826デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/11(月) 10:57:18.05ID:tsrenNBW0
>>825
帳票印刷なんて古い基幹システムでやるもんだし、レガシーでつまんない仕事だからPCでやりたくないでしょ

827デフォルトの名無しさん (ドコグロ MM32-DUKr)2019/03/11(月) 11:09:41.27ID:n6vPhCvaM
>>824
一体何を言ってるんだろう… w

828デフォルトの名無しさん (ドコグロ MM32-DUKr)2019/03/11(月) 11:11:45.09ID:n6vPhCvaM
>>826
お前さん、例えばスマホとか契約した時に契約内容を記載した紙貰ってないかい?
帳票ってそう言う奴のことな

829デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/11(月) 11:17:50.98ID:tsrenNBW0
>>828
それをPCのアプリで出力しないでしょ?
現場のPCでやるのは出力された帳票イメージをプリンタに送ることさ

830デフォルトの名無しさん (ワッチョイ ebce-2wIc)2019/03/11(月) 11:33:05.59ID:Mb6GwggX0
まあホスト側でPDFを作っちゃって、あとは印刷するだけみたいなシステムも最近は増えてるけど、
送られて来るのは印刷したい数字だけで、クライアント側で印刷イメージを組み立てるシステムだって普通にあるぞ

831デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/11(月) 11:34:08.24ID:tsrenNBW0
それにそんなことは営業所レベルのことじゃない?

832デフォルトの名無しさん (スフッ Sd32-2wIc)2019/03/11(月) 11:44:06.02ID:04nfU8jWd
>>831
ここは大企業やサーバ管理者専用スレじゃないし
世の中にはパソコン1台だけで経理や発注をやってるような中小零細だってある
現実にExcelで作られた帳票は世界中を駆け巡ってる

833デフォルトの名無しさん (ドコグロ MM32-DUKr)2019/03/11(月) 12:22:04.66ID:n6vPhCvaM
>>829
お前一度帳票ソリューションとかでググってみ
いろんな形態あるから1種類だけで語ると恥かくぞ

834デフォルトの名無しさん (アウアウウー Sac3-cVal)2019/03/11(月) 12:56:27.77ID:zh+jpn1Ya
>>823
印刷は確かに若干弱いがエクセル帳票は悪くないアイデアだと思う
プログラムで生成物からデータを取得できるから帳票作成のスモールテストを作りやすい
まあCIサーバーで動かないと意味がないのでVBAの出番はないけど

835デフォルトの名無しさん (ブーイモ MMdb-4aR2)2019/03/11(月) 13:13:58.34ID:M7+7uBBxM
>>833
世の中全体なんて言ったらきりないでしょ
>>828が言うDOCOMOショップとかの話に反論したのさ

836デフォルトの名無しさん (ドコグロ MM32-DUKr)2019/03/11(月) 17:10:59.27ID:n6vPhCvaM
>>835
「例えば」っていう文言すら理解できないの?w
てか、話の流れでわかるだろ

837デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/11(月) 18:08:31.25ID:tsrenNBW0
>>836
いやいやいやいや
「帳票なんて基幹システムで出すもんでPCじゃしないでしょ」という意見に対して>>828は携帯ショップの例を出してきたんだぞ

838デフォルトの名無しさん (ワッチョイ 7335-uGU8)2019/03/11(月) 18:36:20.35ID:Rf81Fxun0
>>824
ガリ版印刷かと思った

839デフォルトの名無しさん (ワッチョイ 7335-uGU8)2019/03/11(月) 18:37:23.11ID:Rf81Fxun0
言わんとする事は分かるけど、
ID:tsrenNBW0 は色々と日本語おかしいぞ
入って半年の新人か、酔っぱらいが話ししているようだ

840デフォルトの名無しさん (ドコグロ MM32-DUKr)2019/03/11(月) 18:39:03.34ID:n6vPhCvaM
>>834
Excelはページ内の列に縛られるから結構大変だよ
見積書とかでお客様名称の位置を変えたら一覧表に影響するとか
特に複数の表を位置ページに収めるとかが大変すぎる

841デフォルトの名無しさん (ドコグロ MM32-DUKr)2019/03/11(月) 18:39:39.43ID:n6vPhCvaM
>>840
位置ページ ⇒ 1ページ

842デフォルトの名無しさん (ドコグロ MM32-DUKr)2019/03/11(月) 18:40:36.46ID:n6vPhCvaM
>>837
そこまで言うならすべての携帯ショップの帳票システムが1種類しかないことをソース付きで示してくれ

843デフォルトの名無しさん (オイコラミネオ MM0f-rbBm)2019/03/11(月) 18:40:41.61ID:fslMg+hgM
>>837
帳票は基幹システムでも出すし、現場のAccessからも出します。
携帯ショップのはあくまで例えだが、アプリで出してても何らおかしくない。webからサーバで作成した帳票出してたとしても世の中全てがそうじゃない
バカはすっこんでろ

844デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/11(月) 18:48:10.82ID:tsrenNBW0
>>843
ああ、じゃ携帯ショップの話は例が悪かったってことで引っ張るのはやめにするよ

845デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/11(月) 18:52:52.30ID:tsrenNBW0
もともとAccessなんかよりSQLServer使えばいいのに、という意見に対して「センスが悪い」と評したやつがムカつくんだよね

それってただの自己擁護じゃねえの?

846デフォルトの名無しさん (ブーイモ MM32-pA/6)2019/03/11(月) 18:57:56.68ID:+UqUSWhfM
>>845
ExcelVBAスレで何言ってんだって話だよな

847デフォルトの名無しさん (アウアウウー Sac3-q+B7)2019/03/11(月) 19:19:43.98ID:VQvu/Jc3a
まーまー、みんなケンカするなよ。ケンカしたくてここに来てるやつはどっか行ってくれ。楽しく、とまではいかないにしても、他人の意見を尊重して、まったりと行こうぜ

848デフォルトの名無しさん (アークセー Sxc7-sOih)2019/03/11(月) 19:25:03.45ID:mobnRMp/x
VBAスレでイキる奴も煽られる奴もダサすぎ

849デフォルトの名無しさん (ワッチョイ 9794-Ta+E)2019/03/11(月) 20:02:00.38ID:Qce4TTJA0
他人からファイルが返ってきたときに印刷プレビューになってるとイラっとする

850デフォルトの名無しさん (ワッチョイ cbda-/kwh)2019/03/11(月) 20:41:29.39ID:SWNQzsKE0
そんな性格だから禿げたんだな

851デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/11(月) 20:46:16.50ID:tsrenNBW0
>>849
自分はそれじゃなくてアレがイラッとする
だからよく ActiveSheet.DisplayPageBreaks = False
をやる

852デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/11(月) 21:21:38.01ID:B6nWiYCUd
>>845
最初に「今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の方が良いと言われた気分だわ。

853デフォルトの名無しさん (ワッチョイ cbda-/kwh)2019/03/11(月) 21:56:59.54ID:SWNQzsKE0
accessが好きとか嫌いとか最初に言い出したのは誰なのかしら

854デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/11(月) 22:03:37.96ID:tsrenNBW0
>>852
3回読んだが意味がよく分からん
俺の最初の主張は>>729から始まってるんだが、「データはExcelじゃなくてAccessに置け」という他の意見に対して
「いや今時AccessなんかじゃなくてSQLServerでしょ」というのが意図だ。
そっからなんかこじれてるんだが、ここでの俺の前提はフロントUIはエクセルというものなんだよね。
ExcelからのSQL発行という点でUI表面上の差が大してないと考えて比較している。

855デフォルトの名無しさん (ワッチョイ b78e-mXZC)2019/03/11(月) 22:45:47.44ID:JOj7lbWG0
>>854
馬鹿は死ねよ

856デフォルトの名無しさん (ワッチョイ a3e6-uGU8)2019/03/11(月) 23:03:46.33ID:tJkNrW1I0
>>854
フロントがExcel程度でなんとかなるデータならAccessで十分だろ
すでに大量のデータがSQLServerに溜まっているならそっち使えばいいけど
Excelでデータ入力とか考えただけでも吐きそう

857デフォルトの名無しさん (ワッチョイ 7234-pA/6)2019/03/11(月) 23:17:24.96ID:sG7ktWvJ0
まだやってんのかよ

858デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/11(月) 23:24:53.12ID:tsrenNBW0
>>856
フロントでやるのはデータ分析だろう。
データ入力は現場の仕事。
フロントと現場を混同してるだろ?

859デフォルトの名無しさん (ワッチョイ a3e6-uGU8)2019/03/11(月) 23:31:06.64ID:tJkNrW1I0
二人以上でAccess使うなんて想像してなかったわ。すまん

860デフォルトの名無しさん (ワッチョイ a701-rbBm)2019/03/12(火) 01:08:58.03ID:aDT3+eco0
>>858
データ入力画面もフロントだよ。
現場でどうデータ入力させようとしてるのか書いてみろよ。

861デフォルトの名無しさん (ワッチョイ 7335-uGU8)2019/03/12(火) 01:16:33.47ID:VCAYIPgk0
あの〜そろそろ〜

862デフォルトの名無しさん (ワッチョイ b78e-mXZC)2019/03/12(火) 01:28:26.03ID:Ed2A5qJf0
ID:tsrenNBW0

馬鹿は早く死ねよ

863デフォルトの名無しさん (アークセー Sxc7-sOih)2019/03/12(火) 01:58:18.19ID:ZdQx8dmlx
端から見てると何でこの人たちがVBAやらされる羽目になってるのか分かるよね

864デフォルトの名無しさん (ワッチョイ 1201-DUKr)2019/03/12(火) 06:19:34.26ID:bIQY567R0
むしろこんな奴等に何かやらせる羽目になってる上司に同情するわ

865デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/12(火) 07:21:53.89ID:hut6v0dp0
弊社では無理です

866デフォルトの名無しさん (JP 0H6e-q+B7)2019/03/12(火) 07:54:30.64ID:HcsazPCZH
2日ぶりに覗いたらまだ同じ話してて草

867デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/12(火) 08:15:48.17ID:hut6v0dp0
うちなんかSQLServer導入して部署内誰でも使えるようにセッティングしてるのにずっとAccess使い続けてる。
Excel VBAからADOで繋げてるパターンなんで移行は手間じゃないと思うんだけど2〜3人が試しに使い始めただけ。
思い通りになんていかないよ。
社内稟議通した人がお気の毒w

868デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/12(火) 08:18:57.13ID:xgWEcpqAd
>>854
八ァ?
>>729から始まってるんだよな。
その前に「デ―タはExcelじゃなくてAccessに置け」なんて意見が何処にある?
>>729の前にAccessのことを言ってるのは>>728しか見当たらないんだが。

で、俺が言った>>728は別に「デ−タはExcelじゃ無くてAccessに置け」なんて言って無いんだが。
誰かにこうしろ等と言って無いし、データをAccessに置く等と限定してないぞ。

その上、「今時Access」?
お前は一体何様だよ。
どっちが上から目線だ?
上から目線でも回答が頓珍漢じゃなければセンスね―なんて書かね−よw

869デフォルトの名無しさん (スプッッ Sd52-ekDA)2019/03/12(火) 08:24:06.51ID:xgWEcpqAd
>>867
それはちょっと悲しいね。
まあ、ファイル単位で移動出来るメリットもあるからDBサーバーあってもAccess単体ってのもあり得るけどな。

870デフォルトの名無しさん (オイコラミネオ MM0f-rbBm)2019/03/12(火) 10:47:16.64ID:InKVz4tPM
>>867
それはね、ローカルに置いてる(としとこう)Accessの中に人に見せられないデータがあるからだよw

871デフォルトの名無しさん (ドコグロ MMea-DUKr)2019/03/12(火) 12:45:42.87ID:fAXK62aoM
>>867
そもそもそれエンジンの話なのか帳票とかのデザインの話なのかはっきりしてくれ
あと人は今困ってないなら移行なんてしないよ、トラブル招くかもしれないしな
移行させたいならAccess使用禁止ぐらいしないとダメ
どうせ導入した奴もそこまで腹くくってないだろ

872デフォルトの名無しさん (ブーイモ MMdb-4aR2)2019/03/12(火) 13:22:50.41ID:Kg1wec9nM
>>870
本当にあったりしてなw

873デフォルトの名無しさん (ラクペッ MMdf-/Er5)2019/03/12(火) 15:31:02.26ID:4U4zzI9jM
>>867
SQLサバだとテーブル設計とか後からいじりにくいんだよな
連結フォームに全データ表示!とかも気楽に出来なくなるし

874デフォルトの名無しさん (アウアウウー Sac3-cVal)2019/03/12(火) 18:07:30.07ID:0BPWRBQDa
>>867
もしかしてクライアントサイドの管理ツールとか知らないのでは?

875デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/12(火) 21:59:22.23ID:hut6v0dp0
>>871
テーブルを移行して欲しいんだけどやってくれないって状況
導入した人は権力があるのでそのうち強制するかも

876デフォルトの名無しさん (ワッチョイ a701-rbBm)2019/03/12(火) 22:19:10.50ID:aDT3+eco0
>>875
移行するメリットがないとねぇ
レコード数が少ないと速度なんてほとんど変わらないし…
100万レコードでも、きちんと作られてればAccessでも十分実用になるし…

まずは、めちゃ処理時間がかかるやつ一つを移行。ストアド作り込んで速くなるのを見せるとか。
せっかくSQLServer使うなら、ストアド使わないと勿体ない。ただレコード持ってるだけの箱になってしまう。
ストアドはとっつきにくいと思うが、レコードをこねくり回すような時間かかる処理には効果絶大。

逆に言うと、軽いデータや処理のmdbは移行後回し。(というより、そんなの移行しなくてよろしい。労力に見合わない)

877デフォルトの名無しさん (ワッチョイ a701-rbBm)2019/03/12(火) 22:41:48.72ID:aDT3+eco0
>>876
いきなりストアドで大規模ロジックを書こうとしても、どう書くべきか(どう書くのがふさわしいか)わからないと思う。
小ロジック大量レコード処理辺りから書いていきましょう

878デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/12(火) 22:50:26.01ID:hut6v0dp0
>>876
自分含め誰もspとか知らない
一般的なプログラミングは割とできて、みんなVB/VBA、C#、C++、rubyとかでなんとかしようとしてる
まさにDBを箱としか見てない

879デフォルトの名無しさん (アウアウウー Sac3-cVal)2019/03/12(火) 23:05:56.66ID:0BPWRBQDa
ストアドはRDBの設計思想に反する邪悪な存在なので可能な限り避けるべきです
最適化をかけにくいのでインデックスの効いたクエリに比べて速度も遅くなります

880デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/12(火) 23:30:38.78ID:hut6v0dp0
>>879
マジで!?

881デフォルトの名無しさん (アウアウエー Saaa-/Er5)2019/03/12(火) 23:43:55.90ID:hqmBJoBXa
Webシステムで全て開発側の手元にあるんならストアドなんか害悪しかないけど、
VBAだったらストアドやビューを最大限に活用して可能な限りDBMS側に寄せるべき
神VBAは作りっぱなしで逃げられるならいいけど、後々Excel側の変更やDB側のスキーマ変更で地獄を見ることになる

882デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/12(火) 23:46:34.37ID:hut6v0dp0
ExcelからAccessのデータを取得するきはこういうコードをクラス化してAccess立ち上げる必要ないようにした。
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_130_030.html
他言語使ってる人の事情は知らんけど似たような感じだと思う。
SQLサーバ向けのもADOだからインターフェース変えずにできた。
せっかくツールったんだから移行しろよ!
と思ってたけどもう何がいいのかわからんくなった。

883デフォルトの名無しさん (ワッチョイ 1201-DUKr)2019/03/13(水) 00:27:28.10ID:lH3YwFhl0
>>875
それエンジンだけをすげ替えろって言ってるってことだよね?
そりゃわざわざ移行しないよ
メリットないから強権発動しかないと思うよ

884デフォルトの名無しさん (ワッチョイ 1201-DUKr)2019/03/13(水) 00:29:37.94ID:lH3YwFhl0
>>880
>>879はなんか勘違いしてるだけ
ストアドは簡単に言うとサーバー側でロジックが動くだけの話だからインデックスが効くかどうかはストアドが発行するSQLに依存する

885デフォルトの名無しさん (アウアウエー Saaa-/Er5)2019/03/13(水) 00:41:34.27ID:jknGRCgKa
>>884
879が批判してるのは、ストアドの中でループしたり一時テーブルを安易に多用したりするような使い方じゃないのかな

886デフォルトの名無しさん (ワッチョイ a3e6-/Er5)2019/03/13(水) 00:41:51.32ID:wiEoxIAU0
>>882
そのめんどくさいselect文を作るのがaccessやssmsじゃね?

887デフォルトの名無しさん (アウアウウー Sac3-cVal)2019/03/13(水) 00:46:32.81ID:A37ahhw6a
>>884
インデックスが効かないとは言ってませんが?

SQLなら期待される結果を返す範囲で最適化して高速化する余地があります
これはSQLが宣言的な言語だからできることです
最終的な答えが同じなら途中の結合や絞り込みを入れ替えたり省略することが可能です

逆にストアドは手続き型なので基本的に定義した順に処理が逐次実行されます
全く最適化できないわけではありませんが宣言的な言語と比べるとこの順序があるという性質のせいで制約が強く最適化のかかりが弱くなります

888デフォルトの名無しさん (アウアウエー Saaa-/Er5)2019/03/13(水) 00:50:37.91ID:jknGRCgKa
>>887
理念には同意するけど、VBAスレでそれ言う?
Excel VBAこそ、本来は宣言型であるものを手続き型に落としてしまいパフォーマンスを低下させている例の最たるものだよ

889デフォルトの名無しさん (ワッチョイ 1201-DUKr)2019/03/13(水) 00:52:52.41ID:lH3YwFhl0
>>885
変な使い方を前提にストアドが遅いとか言われても困る

890デフォルトの名無しさん (アウアウエー Saaa-/Er5)2019/03/13(水) 00:55:59.30ID:jknGRCgKa
>>889
実際、ぐるぐるSQLを書いちゃうような人はDBに寄せた設計になるとストアド使いたがるからね

891デフォルトの名無しさん (ワッチョイ 1201-DUKr)2019/03/13(水) 00:57:03.71ID:lH3YwFhl0
>>887
だからその逐次実行を行うのがクライアントなのかサーバーなのかが違うだけでしょ
そりゃストアドと単一のSQL比べたらストアドの方が遅いだろうけどクライアントが同様の処理すること思えば全体としては(ちゃんと設計されてりゃ)速くなるでしょ

892デフォルトの名無しさん (ワッチョイ a3e6-/Er5)2019/03/13(水) 00:59:49.50ID:wiEoxIAU0
>>891
SQLをコンパイルする必要がないからストアードの方が速くね?

893デフォルトの名無しさん (ドコグロ MMb3-/Er5)2019/03/13(水) 01:13:08.97ID:GE2OVSGdM
>>892
理論的にはそうだけど、現実にはそこは全く関係ない
SQLのコンパイル時間はサーバーとの通信のコストと比較すれば無視してよい

894デフォルトの名無しさん (アウアウエー Saaa-/Er5)2019/03/13(水) 01:22:09.36ID:jknGRCgKa
そもそもSQLの発行がパフォーマンスに響くような状況はSQLの粒度が小さすぎる
大抵そういう時はうまく纏めれば一桁速くなる

895デフォルトの名無しさん (アウアウウー Sac3-cVal)2019/03/13(水) 01:32:35.47ID:A37ahhw6a
>>891
アプリケーションとストアドの比較をしているのではなく同じ結果をもたらすSQLとストアドの比較をして言った
そもそもアプリケーションに書かれたビジネスロジックをそのままストアドに移植する時点で論外なので比較する発想がなかった

896デフォルトの名無しさん (ワッチョイ 1201-DUKr)2019/03/13(水) 04:57:47.34ID:lH3YwFhl0
>>895
> 同じ結果をもたらすSQLとストアドの比較をして言った
そりゃSQL単体で書けるならその方が速いわなw
SQL単体で書けるのにストアド使うとか普通あり得ないでしょ?

897デフォルトの名無しさん (アウアウウー Sac3-cVal)2019/03/13(水) 06:19:07.90ID:A37ahhw6a
>>896
残念ながらありえます
しかも少なくありません
単にSQLが苦手な人
ストアドの方が速いと思ってる人
深く考えずアプリケーションコードストアドに移植してしまう人
SQLでいいのにストアドを書いてしまう人というのは何処にでも居ます

898デフォルトの名無しさん (ドコグロ MMb3-DUKr)2019/03/13(水) 06:45:04.68ID:JacIk+SfM
>>897
>>889
お前の周りのことなんか知らんよw

899デフォルトの名無しさん (アウアウウー Sac3-cVal)2019/03/13(水) 07:00:38.50ID:A37ahhw6a
>>898
このスレッドにもいましたよね

900デフォルトの名無しさん (ドコグロ MMb3-DUKr)2019/03/13(水) 07:12:08.08ID:JacIk+SfM
何を言いたいのかさっぱりわからんw

901デフォルトの名無しさん (アウアウウー Sac3-cVal)2019/03/13(水) 08:04:29.56ID:A37ahhw6a
煽りか

902デフォルトの名無しさん (ワッチョイ 9290-uGU8)2019/03/13(水) 10:36:45.92ID:4v7XhTis0
一体いつまで同じ話をぐだぐだ続けるつもり?
プログラマ板のどっか雑談スレでやれよ低能プログラマどもは

903デフォルトの名無しさん (ブーイモ MM0e-ehMm)2019/03/13(水) 11:12:26.48ID:JQlBKVP4M
だってここ以外ではマウントとれないんだもの

904デフォルトの名無しさん (ワッチョイ 1201-ouaW)2019/03/13(水) 15:18:57.45ID: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)はこの先いろいろな操作をすることになるため、そのたびに
どこに隠れているか分からない数式エラーをチェックするのは大変なのです

905デフォルトの名無しさん (ワッチョイ 1201-ouaW)2019/03/13(水) 15:24:34.25ID:6SLKDaoM0
ごめんなさい
>>904は取り消します

何か他の要因がからんでエラーが起きていたようです
上の例だとエラーはおきませんでした

ごめんなさい

906デフォルトの名無しさん (ワッチョイ 1e68-uGU8)2019/03/13(水) 15:25:55.52ID:ril+FLd/0
とりあえず
Dim ary() As Variant
はエラーが出るので
Dim ary As Variant
に変更している

907デフォルトの名無しさん (ワッチョイ 9212-UKFF)2019/03/13(水) 15:26:27.13ID:YE/558h40
あー、荒れてるところ申し訳ないのですが、
ちょっと、質問…いいですかね…
初心者なんでさっぱり文が思いつかないから
例文みたいなのを作ってほしいんですけど…

B3:F○○の表があります。

・B3:F10にそれぞれセルに名前を付けていきたい。
・B3を「_0」としてC3「_2」というように、+2ずつ、
F3「_8」までいったらB4「_10」と同じように+2して、
最後のF10までやりたい。

こんな感じのってできますか??

他のシートでも同様の作業を行ないたくて、
B3から、F列の表で、数字が入力されている部分だけ名前をつけたいから、
if文とかで、数字が入力されていなかったら名前をつけるのを終わるみたいなできたら嬉しいです。

908デフォルトの名無しさん (ワッチョイ 1e68-uGU8)2019/03/13(水) 15:27:20.71ID:ril+FLd/0
>>905
あ、はい。

909デフォルトの名無しさん (ワッチョイ 1e68-uGU8)2019/03/13(水) 15:38:57.02ID:ril+FLd/0
>>907
先に範囲選択してからマクロ実行
セルに何も入ってない場合に終了(数字かどうかは判定していない)

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

910デフォルトの名無しさん (ワッチョイ 12e7-+lbj)2019/03/13(水) 16:22:51.30ID:kv9h9xOp0
以前、ifの条件に合わない時に実行したい時はthenに続けてelseと書いて実行したい内容を書くよりも、条件をnotで括った方が処理が速いと言われました
実際に計測したら確かに僅かな差が有ったのですが何故なのでしょうか

911デフォルトの名無しさん (スップ Sd32-UKFF)2019/03/13(水) 17:11:51.63ID:mnfDUUl9d
>>909
ありがとうございます!
やってみます!

912デフォルトの名無しさん (アークセー Sxc7-sOih)2019/03/13(水) 20:59:56.96ID:p9thMYjCx
>>910
Ifブロックは先頭の条件から逐次Boolean評価していって、一度Trueと判定されるとそこで条件を満たす場合の処理を実行し、残りの条件は評価しない仕組み
Elseのケースでの処理を実行するとなると、If条件とそれ以降のElseIf条件全てにおいてTrueが成立しないという条件が必要になる
なので、同じ条件数のIfブロックで比較すると、Elseより前に置かれた条件で処理を行わせる方がElse以降で処理させる場合よりも条件評価を行う回数が少なくなる

913デフォルトの名無しさん (ワッチョイ 12e7-+lbj)2019/03/13(水) 21:38:41.07ID:kv9h9xOp0
>>912
if not true then temp = 0
if true then else temp = 0
の二つのif文があった時、後者はtrueの評価の後にelseという評価をしてるという事でしょうか

914デフォルトの名無しさん (オッペケ Src7-t9Np)2019/03/13(水) 21:39:18.39ID:hyG2utnjr
>>912
VBAはショートサーキットしないけどな

915デフォルトの名無しさん (ワッチョイ a701-rbBm)2019/03/13(水) 21:40:15.61ID:uWZ9EglX0
>>912
何か微妙に勘違いしてる?
Elseifは関係ないぞ

916デフォルトの名無しさん (ワッチョイ a701-rbBm)2019/03/13(水) 21:43:27.67ID:uWZ9EglX0
>>913
elseという評価はしていない
評価というのは、判定してると言っていると思うが、判定はifのとこで終わってる

917デフォルトの名無しさん (ワッチョイ eb5c-Ly0m)2019/03/13(水) 21:53:50.43ID:Blqbf86O0
はっきりさせておきたい
VBAのとき、
if A and B and C then

ってなってるとき、A、B、C全部必ずチェックするのか、AがFALSEだったら、もうB、Cは無視するのか
どっち?
C言語みたいに、& と && みたいなandに2種類ないよね

918デフォルトの名無しさん (ワッチョイ b769-F75Q)2019/03/13(水) 21:54:09.23ID:mPSJoOjB0
ショートサーキットないおかげでどんどんネストしてゆく…

919デフォルトの名無しさん (アウアウエー Saaa-CO8P)2019/03/13(水) 22:06:55.44ID:x7l49vOfa
ショートサーキットなんてねえよw

920デフォルトの名無しさん (ワッチョイ eb5c-Ly0m)2019/03/13(水) 22:10:56.03ID:Blqbf86O0
>>919
A、B、C全部必ずチェックすんだね

921デフォルトの名無しさん (ワッチョイ de8c-4aR2)2019/03/13(水) 22:39:10.74ID:BElBpZaB0
>>917
そういう場合は
Select Case False
Case A, B, C
' !( A && B && C)の場合の処理
Case Else
' A && B && C の場合の処理
End Select

と書けばショートサーキットになるよ。
直感的じゃないけどね。

922デフォルトの名無しさん (ワッチョイ f2bc-E/ds)2019/03/13(水) 22:41:50.24ID:MTZmUGDO0
不慣れな初心者ですみません

リストシートのボタンを押すと
リストに入力していたデータ行数分書類型シートが作られるのですが
その作られた書類型シートにもそれぞれボタンがあり
各ボタンを押すとデータ送信用シートが作られる二段構造?になっています

書類シートからデータ送信用シートを作るには
いちいち各シートのボタンを1つずつ押さねばならず大変です
選択したシートのボタンを一括で押すことのできるマクロはありませんでしょうか…?

本当はリストからボタン1つで書類シートとデータ送信用シートができれば最高なのですが
そこまでの改変は難しそうで…

923デフォルトの名無しさん (ワッチョイ a37c-DZHv)2019/03/13(水) 22:46:46.17ID:TdaaOBVz0
>>922
それぞれのボタンに組まれたマクロを一つのボタンにまとめる

924デフォルトの名無しさん (ワッチョイ 1e68-uGU8)2019/03/13(水) 22:48:55.81ID:ril+FLd/0
作り直した方が遥かに楽なパターン

925デフォルトの名無しさん (ワッチョイ a37c-DZHv)2019/03/13(水) 22:53:39.78ID:TdaaOBVz0
ごめん>>923は内容勘違いなので忘れて
一括で送信シート作るボタンを一つ作ってその中に、

forで選択した書類シート分回す
 その書類シート内の送信シートを作るボタンClickを呼ぶ
Next

ってのはどうですか

926デフォルトの名無しさん (ワッチョイ 1e68-uGU8)2019/03/13(水) 23:04:41.65ID:ril+FLd/0
>>922
見られちゃマズイデータ消してアップロードすれば誰かが作ってくれると思う

927デフォルトの名無しさん (ワッチョイ eb5c-Ly0m)2019/03/13(水) 23:09:57.29ID:Blqbf86O0
>>921
そんな技があったのね。 ありがと

928デフォルトの名無しさん (ワッチョイ 16da-/kwh)2019/03/13(水) 23:13:30.84ID:nm3P40mI0
Clickを呼んでも、クリックするわけじゃないが、
クリックされちゃいそうで怖い。

929デフォルトの名無しさん (ワッチョイ a301-89K6)2019/03/14(木) 01:04:48.38ID:D/xLb5AQ0
ピボットテーブルの集計結果使いたい時って今まで計算用シートで作成→せる決め打ちで取得 てやってたんだけど稀にカラムずれる
こういうのvbaだけで計算する関数とかないよね?

930デフォルトの名無しさん (アウアウエー Sadf-Cp6o)2019/03/14(木) 01:36:50.73ID:lGFaI2Uva
ピボットテーブルはアドホックな集計や分析に使うもんだろ
やることが決まってるんなら要らん

931デフォルトの名無しさん (ワッチョイ ff7c-YxN5)2019/03/14(木) 04:24:36.89ID:ci+9chmP0
>>922
現物見てないからよくわからないんだけど、
リストシートや書類シートにボタンがついてるってのは
マクロ有効ブックの中にそれらのシートがあるってこと?

出来ればデータとマクロは別のブックに分離しといたほうが良いんじゃないかな。
そういう作りにしてれば改修も簡単になりそう。

932デフォルトの名無しさん (スプッッ Sd1f-TAcj)2019/03/14(木) 08:13:54.22ID:YBKQY7Hwd
>>927
普通に
If A Then
If B Tnen
If C Then
A And B And Cの時の処理
EndIf
EndIf
EndIf
とするかな。

でも、これでの速度アップより、他に速度ダウン要因を減らした方が良さそう。
自分はIf A AndB And C Thenを気にせず使うな。

933デフォルトの名無しさん (ワッチョイ 6f8c-z/E1)2019/03/14(木) 08:39:22.13ID:ssjF3MUN0
>>932
Aが成り立たないときBを評価するとエラーで止まってしまう場合とかが悩ましいんだ

934デフォルトの名無しさん (ドコグロ MM67-s8Gt)2019/03/14(木) 09:04:59.36ID:Nl2IbJZtM
>>921
それ保証されてるんだっけ?

935デフォルトの名無しさん (ブーイモ MMa7-HVS4)2019/03/14(木) 09:13:36.88ID:laeryNOTM
>>932
うん、他にやることありそうな気がするぞ
昔の俺みたいに実はコンパイルしてなかったとか笑

936デフォルトの名無しさん (ワッチョイ 6f8c-z/E1)2019/03/14(木) 09:57:51.33ID:ssjF3MUN0
>>934
一応言語規格上保証されてるね

937デフォルトの名無しさん (ドコグロ MM67-s8Gt)2019/03/14(木) 10:12:09.94ID:Nl2IbJZtM
>>936
どこかでドキュメント化されてる?

938デフォルトの名無しさん (ワッチョイ 6f68-B/CD)2019/03/14(木) 10:14:23.93ID:hUI7fwKe0
なんとなくだけど、VBAであまり離れ業を使わないほうが良いとは思う

939デフォルトの名無しさん (ワッチョイ 6f8c-z/E1)2019/03/14(木) 10:34:24.95ID:ssjF3MUN0
>>937
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ページの一番下二行だね。

940デフォルトの名無しさん (スプッッ Sd1f-TAcj)2019/03/14(木) 12:36:06.81ID:YBKQY7Hwd
>>933
それは別の問題だよ。
そういう場合は最初からIf A And B And C Thenなんてやらない。

Bの評価でエラーが出ない時でも必ずBの評価をすることで速度ダウンするのを防ぐために
If A Then
If B Then
EndIf
EndIf
とするかと言えば、普段はやらないということ。

それで得られる速度アップより他の修正をした方がよっぽど効果有るだろ。

941デフォルトの名無しさん (スッップ Sd1f-sgCc)2019/03/14(木) 12:53:41.51ID:CJd9O/FZd
アスペかよ

942デフォルトの名無しさん (ワッチョイ ff01-s8Gt)2019/03/14(木) 13:54:08.96ID:3EvgP48J0
>>939
なるほど、ちゃんと明記されてるんだな、ありがとう

943デフォルトの名無しさん (ワッチョイ ff01-s8Gt)2019/03/14(木) 13:57:37.28ID:3EvgP48J0
短絡評価の件で速度云々言ってるのはID:YBKQY7Hwdだけだし

944デフォルトの名無しさん (オイコラミネオ MM47-fmdW)2019/03/14(木) 14:46:00.52ID:zjiIQsBqM
いやいや、役に立った(参考になった)ボタン押してますから

945デフォルトの名無しさん (ワッチョイ 13ce-B/CD)2019/03/14(木) 15:13:23.25ID:ONwCUS8k0
ショートサーキットが活きてくるのは、Boolean型の関数を並べるときだな
If Func1() Or Func2() Then
みたいなケースだと実行時間がかなり違ってくることも起こりうる

946デフォルトの名無しさん (ワッチョイ 6f68-B/CD)2019/03/14(木) 15:21:32.05ID:Cgb2oqJn0
標準関数の戻り値に文字列"false"が返ってくる言語があるらしい

947デフォルトの名無しさん (スプッッ Sd1f-TAcj)2019/03/14(木) 19:08:46.48ID:YBKQY7Hwd
>>943
伝わって無いようだな。

まず、>>910の速度の話から始まっている。
で、>>932は「俺は」速度を気にしないから普段はやらないけど、とにかくネストすりゃ良いって話。

>>927に速度が念頭に無かったとしても>>932は成立するんだよ。

948デフォルトの名無しさん (スプッッ Sd1f-TAcj)2019/03/14(木) 19:08:54.68ID:YBKQY7Hwd
で、>>933は俺が普段やらないという所に反応したわけだ。
それに対して>>940はBのエラーが想定される時は普段もネストするって話。
こちらも成立してる。

あえて言えば>>933が少し外してる。

949デフォルトの名無しさん (ワッチョイ ff01-jA9u)2019/03/14(木) 19:33:40.81ID:3EvgP48J0
>>947-948
速度の話(>>910)と短絡評価の話(>>917)は別な
混同してるのはお前だけだぞw

950デフォルトの名無しさん (スプッッ Sd1f-TAcj)2019/03/14(木) 19:58:36.19ID:YBKQY7Hwd
>>949
バーカw

短絡評価云々についてはネストすると言ってる。
でも普段は速度を気にしないからネストしないと言ってる。

ここでの速度の話はついでの話だ。
ついでの話で速度を蒸し返したのは俺が最初で、別に>>917が速度のことを考えていなくても何も問題ない。
ついでを書かないと、どんな時も俺がネストしてると思われるから書いてるんだ。
>>917が速度のことを気にしてると俺が思ったからでは無い。

このついでに反応した>>933は「俺が最初に蒸し返した」のでは無く、「俺が>>917を勘違いした」と思ったんだろう。

951デフォルトの名無しさん (アウアウエー Sadf-sgCc)2019/03/14(木) 20:19:12.86ID:RaCvNH3Xa
もっと争え

952デフォルトの名無しさん (ワッチョイ ff01-jA9u)2019/03/14(木) 20:22:35.66ID:3EvgP48J0
何だこいつ
お前が常にネストするとかどうでもいいよw

953名無し (アウアウウー Sae7-9Z9t)2019/03/14(木) 20:51:32.45ID:qOCswbNsa
のび太 ドラえもん、なんか道具出してよ
ドラえもん まーまー棒、 ――――◯

954デフォルトの名無しさん (ワッチョイ a3b5-QTaE)2019/03/14(木) 21:48:30.17ID:yFX6qcia0
ID:YBKQY7Hwd

こいつが一番バカっぽい w

955デフォルトの名無しさん (オッペケ Sr07-89qL)2019/03/14(木) 22:26:04.50ID:aAmaHeQqr
マクロというものを知ったばかりです
■リストから単票を印刷する
http://www.aibsc.jp/nsj/03_07_it/090201_01/index.shtml
というマクロを使い注文書を作りたいと思っています
このマクロだとリストに同会社がある場合
同会社がある分だけ印刷されてしまいます
同会社の場合は注文をまとめたいのですが
どういうマクロを組めばいいのでしょうか?
お力を貸して頂きたいです

リスト
Excel VBA 質問スレ Part59 	->画像>13枚

理想
印刷1枚目
Excel VBA 質問スレ Part59 	->画像>13枚
2枚目
Excel VBA 質問スレ Part59 	->画像>13枚

956デフォルトの名無しさん (ワッチョイ 6f8c-z/E1)2019/03/14(木) 22:54:56.95ID:ssjF3MUN0
ここで「データをExcelに置くのはやめてSQLSeverとかに格納しよう」って答えたら荒れるのかな?

957デフォルトの名無しさん (ワッチョイ ff01-jA9u)2019/03/14(木) 23:06:23.27ID:3EvgP48J0
いや、ここはAccessの出番でしょ
って更に混乱に陥れるとか?

958デフォルトの名無しさん (スプッッ Sd1f-TAcj)2019/03/14(木) 23:10:10.38ID:YBKQY7Hwd
>>952
頭に血が上ってるようだな。
別に>>932はこうしろだなんて言ってないんだが。

それを言うなら反応した方がずれてるだろ。

959デフォルトの名無しさん (スプッッ Sd1f-TAcj)2019/03/14(木) 23:11:32.83ID:YBKQY7Hwd
日本語のやり取りが出来ない奴ばかりw

960デフォルトの名無しさん (ワッチョイ cfda-kdx8)2019/03/14(木) 23:25:05.84ID:KDf9lyPv0
>>955
何だそれwwwww
印刷画面にIndex関数を埋め込んでおけば、
5行くらいで書けるんじゃないのwwwww

で、まとめる方法だけど、やっぱAccessを勧めるな。
Excelでも出来るけど、餅は餅屋だとわかる方がいい。

961デフォルトの名無しさん (スプッッ Sd1f-TAcj)2019/03/14(木) 23:28:37.01ID:YBKQY7Hwd
勝手に人のことを推測して反応したら、推測の当てが外れて相手から否定的な意見をもらって怒り爆発って事態がこのところ続いているようだw

962デフォルトの名無しさん (ワッチョイ 6f68-B/CD)2019/03/14(木) 23:32:27.61ID:Cgb2oqJn0
>>955
accessって意見が多いけど、俺はvbaでやるかな

・まずまとめるシートを新しく作る。一社一行
・それを今まで通り印刷していく
が主な流れと思う

作業自体は難しくないが、仕様が複雑怪奇である

・納期はどこからどこまでか?最短?最長?平均?
・数量もどうまとめるのか?
・品番はどう表記するの?
など、山程考える事がある

963デフォルトの名無しさん (ワッチョイ cfda-kdx8)2019/03/14(木) 23:32:30.81ID:KDf9lyPv0
ていうか2009年って。
書いた本人も、内心消したいと思ってるんじゃないのそれ。
当時は良くても、10年後にActiveCell.Offset(1, 0).Selectとか見たら、
あちゃー(ノ∀`)だと思う。

964デフォルトの名無しさん (ワッチョイ 6f68-B/CD)2019/03/14(木) 23:34:16.79ID:Cgb2oqJn0
ActiveCellのoffsetでSelectとかなかなかやね
マクロの記録でもないだろうから、一生懸命頑張ったんかなって

965デフォルトの名無しさん (アウアウエー Sadf-Cp6o)2019/03/14(木) 23:41:27.79ID:S0hknHQca
>>955
ランサーズとかで依頼したら?
ゴミみたいな値段で誰か作ってくれるよ

966デフォルトの名無しさん (ワッチョイ 838e-lF81)2019/03/14(木) 23:43:49.65ID:UkRoSI4o0
>>955
馬鹿は死ねよ

967デフォルトの名無しさん (ワッチョイ cfda-kdx8)2019/03/14(木) 23:50:37.23ID:KDf9lyPv0
ん、ちょっと待った。
注文書を印刷?
今時そんなことやったら、受け取る方は嫌がると思う。
どうしても紙にするなら、
見た目の格好良さなんか度外視で、
QRコード・品名・数量・納期を、ただ羅列するだけの方がいいよ。
パソコンなんか使ってないような、クソ田舎の店に注文出すわけじゃないんでしょ?

968デフォルトの名無しさん (ワッチョイ 737c-13+i)2019/03/14(木) 23:59:36.30ID:39aguKNH0
>>955
できるだけ単純な方法だと、
・リストにマクロ用の作業列を1列用意する
・マクロ開始時に作業列をクリア
・ループ内で印刷シートにデータを入れ込む前に、その行の作業列が空白かどうか見る
 空白なら印刷シートに社名とデータ入れて、作業列に1とか適当に入れる
 FindとFineNextで同じ社名全部検索して、1個目と同じように見つかった行の作業列に何か入れてデータを印刷シートに入れる
・印刷実行

969デフォルトの名無しさん (ワッチョイ 737c-13+i)2019/03/15(金) 00:00:20.90ID:cOSRxez60
FineNext→FindNextね

970デフォルトの名無しさん (ワッチョイ 6f8c-z/E1)2019/03/15(金) 00:00:30.62ID:mu0sfa7H0
>>962
そこでさらに
Driver = {Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}
使えといって混乱させる

971デフォルトの名無しさん (ワッチョイ 6f68-B/CD)2019/03/15(金) 00:02:04.33ID:5fRBFExt0
批判とかする気持ちは分かるけど、だったらダイマ批判の覚悟でそれ相応のサービスを紹介してあげてはどうかな
さすがにそろそろvbaで請求関係は終焉させてあげたい。よく20年も頑張ったよ

972デフォルトの名無しさん (ワッチョイ 6f68-B/CD)2019/03/15(金) 00:04:22.44ID:5fRBFExt0
まぁ俺はgoogleanalyticsのマイレポートをctrl+aでコピー*3、EXCELに貼り付け
多様な角度からレポート生成
なんてシステム作ったけどな
役に立ってるかは知らん

973デフォルトの名無しさん (ワッチョイ 4301-fmdW)2019/03/15(金) 00:04:59.41ID:BXhkH+980
>>955
Accessわかる人は、何も悩むところがない
わからなければ、Accessの勉強で苦労するか、ExcelVBAで苦労するか
好きな方選べばいい

974デフォルトの名無しさん (スプッッ Sd1f-TAcj)2019/03/15(金) 08:35:06.36ID:8vQK+5mFd
>>955
業務の内容から考えるとAccessのが良いっぽいんだけど、規模によるかな。
注文する会社はどれくらいあって、この注文書ってどれくらい印刷するのか。

そもそもDBにするような話なら既にそうなってる気もするんだよな。
だからExcelでDBにもしなくて良いような気がする。

>>963
全く同意だけど、記事の内容を見ると初めてVBAを触る人向け第2回って感じだから、マクロ記録をちょっとだけ改変って感じなんじゃない?

975デフォルトの名無しさん (JP 0Hff-9Z9t)2019/03/15(金) 08:37:29.81ID:7wpKi9ozH
馬鹿はスレタイが読めない

976デフォルトの名無しさん (ワッチョイ a3b5-QTaE)2019/03/15(金) 08:42:37.51ID:CgxPaElB0
馬鹿は頭が固い

977デフォルトの名無しさん (ワッチョイ 6f8c-z/E1)2019/03/15(金) 08:53:15.07ID:mu0sfa7H0
>>970に書いたのは冗談じゃなくて、データは専用の別ブックに置くようにして、マクロ(と印刷用画面)と分けた方がいい。
データブックからの読み取りはSQLでやる。
こうすれば将来のDB化にも繋がるよ。

978デフォルトの名無しさん (スプッッ Sd1f-TAcj)2019/03/15(金) 09:01:55.29ID:8vQK+5mFd
マクロというものを知ったばかりの人にSQLとか言い出すってどうなんだろう?

そういう所だよ。

979デフォルトの名無しさん (JP 0Hff-9Z9t)2019/03/15(金) 09:30:17.24ID:7wpKi9ozH
>>977
じゃあ最初からDB使え
後で使うだろうと無駄な設計やコードを残していったアホの後任が不憫でならない

980デフォルトの名無しさん (ワッチョイ 6f8c-z/E1)2019/03/15(金) 10:04:11.53ID:mu0sfa7H0
マジで?!

981デフォルトの名無しさん (オイコラミネオ MM47-fmdW)2019/03/15(金) 10:54:37.46ID:sIXN3DPHM
>>977
データを分けたらAccessのリンクテーブルにもできるだろうから、徐々に移行ってこともできるよね

982デフォルトの名無しさん (ラクペッ MMc7-Cp6o)2019/03/15(金) 11:44:43.49ID:pQ5gXJpBM
wordに差し込み印刷という……

983デフォルトの名無しさん (ブーイモ MM1f-HVS4)2019/03/15(金) 13:49:10.01ID:07U/buSjM
データの保存はiniファイルと隠しシートどっち使うのがスタンダードなの?

984デフォルトの名無しさん (ワッチョイ cf68-B/CD)2019/03/15(金) 13:54:39.91ID:/jMwhNVt0
普通に表示しているシート
後iniファイルって古い。今はxmlが主流だよ

985デフォルトの名無しさん (ワッチョイ ff90-B/CD)2019/03/15(金) 14:53:36.22ID:BdW6uHhE0
iniファイルってデータの保存用とかじゃなくプログラムの設定用だろ?
まぁどちらにしろ古いけどさ。

986デフォルトの名無しさん (ワッチョイ ff12-TJP/)2019/03/15(金) 18:22:20.40ID:jUtd0ALV0
この前、セルに _(数字)の名前を付けたものです。
(数字)は変数として定義してあるのですが、
アンダーバーが使えないため、_(数字)を参照できません。

なんで新たに、Sujl、みたいな変数の箱を作って

Suji = "_" & (数字)

っていうのにしてみたんですけど
セルにSujiを入力するようにすると、_2のように表示されるのですが
Range(Suji).Select
だとエラーが出てしまいます。

どうやったらその名前を付けたセルを参照できますか??

987デフォルトの名無しさん (アウアウクー MM07-DiLr)2019/03/15(金) 18:24:03.29ID:fZ/zfvrlM
君プログラミング向いてないからやめた方がいいよ

988デフォルトの名無しさん (ワッチョイ 4301-9Z9t)2019/03/15(金) 18:28:03.12ID:luJRKRBO0
>>986
論外

989デフォルトの名無しさん (オイコラミネオ MM47-fmdW)2019/03/15(金) 18:29:21.03ID:sIXN3DPHM
俺の脳みそだと翻訳できんわ

990デフォルトの名無しさん (アウアウウー Sae7-TJP/)2019/03/15(金) 18:39:53.23ID:XS3ylKm2a
_2 って名前を付けたセルを
どうやったら呼び出せるのかなって

2の部分は入力によって変えたいから
どうしたもんやらって

分かりづらくて、センスなくてごめんね。

991デフォルトの名無しさん (ワッチョイ 4301-9Z9t)2019/03/15(金) 18:53:39.56ID:luJRKRBO0
Suji = “_2”
Range(“A1”)=Suji
はできたけど
Range(Suji).Select
はエラーになるのはなぜか

992デフォルトの名無しさん (アウアウエー Sadf-Cp6o)2019/03/15(金) 18:56:58.01ID:3iBx3zPfa
>>991
意味が全く違うからとしか言いようがない
まずはどういう結果を期待してて何故それでうまくいくと思ったのかを晒せ

993デフォルトの名無しさん (ワッチョイ 4301-9Z9t)2019/03/15(金) 18:58:53.06ID:luJRKRBO0
>>992
本人に聞け
ドジっ子かよ

994デフォルトの名無しさん (ワッチョイ 737c-13+i)2019/03/15(金) 19:43:27.31ID:cOSRxez60
>>986
その記述で参照できる
その呼び出したい名前の定義の「範囲」はブック?

995デフォルトの名無しさん (エムゾネ FF1f-B/CD)2019/03/15(金) 19:58:09.38ID:KbM/PflUF
>>984
今のところ、次の主流はとくに決まってないよ
jsonもけっこう幅広く使われてるし、ほかにもいろいろなデータ記述法が登場してる

996デフォルトの名無しさん (アウアウエー Sadf-Cp6o)2019/03/15(金) 20:05:31.49ID:3iBx3zPfa
MSに忠誠を誓うなら今はJSONだね
最近のMSはXMLをどんどん排除してJSONに置き換えてる

997デフォルトの名無しさん (ドコグロ MMdf-jA9u)2019/03/15(金) 20:42:29.36ID:ng8+eCdqM
>>983
データの量によるけど少量ならCustomDocumentPropertiesかな

998デフォルトの名無しさん (ドコグロ MMdf-jA9u)2019/03/15(金) 20:43:10.21ID:ng8+eCdqM
>>996
JSONいいんだけどコメントが書けないのがなぁ

999デフォルトの名無しさん (ワッチョイ 6f8c-z/E1)2019/03/15(金) 20:53:54.46ID:mu0sfa7H0
>>997
一項目あたり225文字が限界っぽいけどね。
ちょっとスマートな感じがするから一度使ってみようと思いつつまだ機会がない。

1000デフォルトの名無しさん (ワッチョイ 6f8c-z/E1)2019/03/15(金) 20:55:03.42ID:mu0sfa7H0
>>999
225じゃない255だ
225は日経

mmp
lud20191019140633ca
このスレへの固定リンク: http://5chb.net/r/tech/1549692750/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「Excel VBA 質問スレ Part59 ->画像>13枚 」を見た人も見ています:
Excel VBA 質問スレ Part57
Excel VBA 質問スレ Part51
Excel VBA 質問スレ Part53
Excel VBA 質問スレ Part54
Excel VBA 質問スレ Part56
Excel VBA 質問スレ Part58
Excel VBA 質問スレ Part50
Excel VBA 質問スレ Part61
Excel VBA 質問スレ Part60
Excel VBA 質問スレ Part63
Excel VBA 質問スレ Part64
Excel VBA 質問スレ Part62
Excel VBA 質問スレ Part69
Excel VBA 質問スレ Part49
Excel VBA 質問スレ Part68
Excel VBA 質問スレ Part67
Excel VBA 質問スレ Part66
Excel VBA 質問スレ Part65
Excel VBA 質問スレ Part71
Excel VBA 質問スレ Part72
Excel VBA 質問スレ Part70
Excel VBA 質問スレ Part77
Excel VBA 質問スレ Part75
Excel VBA 質問スレ Part73
Excel VBA 質問スレ Part74
Excel VBA 質問スレ Part37
Excel VBA 質問スレ Part79(ワッチョイあり)
Excel VBA 質問スレ Part48 [無断転載禁止]
Excel VBA 質問スレ Part47 [無断転載禁止]
Excel VBA 質問スレ Part81 (923)
Excel VBA 質問スレ Part80(ワッチョイあり) (87)
Excel VBA質問スレ Part10
Access VBA 質問スレ Part2
Excel Python 質問スレ
Access VBA 質問スレ Part1
【アズレン】アズールレーン 質問スレ Part59
【RIFT】 Rift: Planes of Telara 質問スレ Part5
Counter-Strike: Global Offensive 質問スレ Part3
ChMate 質問スレ Part55
メギド72 質問スレ Part515
Windows 10 質問スレッド Part59
【アズレン】アズールレーン 質問スレ Part52
【アズレン】アズールレーン 質問スレ Part58
【アズレン】アズールレーン 質問スレ Part51
【アズレン】アズールレーン 質問スレ Part53
【TESO】The Elder Scrolls Online 質問スレ Part24
【TESO】The Elder Scrolls Online 質問スレ Part46
【DQB2】ドラゴンクエストビルダーズ2 質問スレ part5
【L2R】リネージュ2 レボリューション / Lineage2 Revolution 質問スレ part5
【アズレン】アズールレーン 質問スレ Part69
【LoL】League of Legends 質問スレ Part59 [無断転載禁止]
【L2R】リネージュ2 レボリューション / Lineage2 Revolution 質問スレ part9
Windows 10 質問スレッド Part55
d払い 質問スレ Part1
【TERA】質問スレ Part59
iPhone 質問スレッド part49
au by KDDI 質問スレ Part.240
au by KDDI 質問スレ Part.234
Tree of Savior 質問スレ Part25
10:53:16 up 31 days, 21:17, 0 users, load average: 9.57, 8.96, 9.03

in 0.035429954528809 sec @0.035429954528809@0b7 on 011300