[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/26 17:47 / Filesize : 275 KB / Number-of Response : 1016
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part76



1 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 02:23:41.78 ID:2t63WK/jM.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑2行に減ってるけど、同じ内容を3行に増やして貼り付けること

ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
Excel VBA 質問スレ Part75
https://mevius.5ch.net/test/read.cgi/tech/1644384272/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

2 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 10:10:19.02 ID:Pk0oKD+E0.net]
2げろ

3 名前:デフォルトの名無しさん [2022/05/01(日) 14:46:30.73 ID:q0kLnjNbd.net]
Excel使い方すらわからない人はお断りです
Excel VBAが何かもわからない人もお断りです

4 名前:デフォルトの名無しさん (ブーイモ MMcb-LnX+) [2022/05/01(日) 16:08:24 ID:CXxh8/QkM.net]
我々の承認欲求を満たしてくれる質問お待ちしてます

5 名前:デフォルトの名無しさん (ワッチョイ df4f-bbcD) [2022/05/01(日) 17:04:11 ID:PgWgEC/y0.net]
向こうのスレ消化してから書き込めカス共

6 名前:デフォルトの名無しさん (ワッチョイ 7fda-Nh0L) mailto:sage [2022/05/01(日) 19:54:56 ID:Om3L9uk+0.net]
前スレ終わってないのに立てる >>1 が悪い

7 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 21:27:37.77 ID:geOevaoi0.net]
>>6
終わってから立てたらスレの連続性が途絶えるだろ
考えて物言え知恵足らずが

8 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 21:39:32.49 ID:Rd1MW2220.net]
レス古事記の相手すんなよ...

9 名前:デフォルトの名無しさん (ワッチョイ 27da-l/ZD) mailto:sage [2022/05/02(月) 19:28:34 ID:MoQSVCv50.net]
過去にもしばらくスレ立て放置プレイされた事あったぜ

10 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 23:18:57.97 ID:X95f3WhM0.net]
よろしくお願いします。以下の日本語で書いた部分に相当するような
繰り返し文ってありますでしょうか。

イメージしているのはwhile read line do done < test.txt
みたいなものです。

テキストファイルの変わりに「とある列の値が尽きるまで(空欄が見つかるまで)」、
繰り返し文内の処理を繰り返すような文です。

Range("B1").Select

繰り返し A列の値 = 空欄のセルが見つかるまで

ActiveCell.Offset(0, -1).Range("A1").Select
Selection.Copy
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveSheet.Paste

ActiveCell.Offset(1, 0).Range("A1").Select

繰り返し完了



11 名前:デフォルトの名無しさん mailto:sage [2022/05/02(月) 23:38:34.90 ID:hdDLukhc0.net]
>>10
すげーざっくりだけどやりたいことはこんな感じ?
やりたいことがあってるならもう少しちゃんとしたコードにはするけど
SelectとかCopy、Pasteは基本VBAで使わないので

Dim WS As WorkSheet
Set WS=ActiveSheet
Dim RngA1 As Range
Set RngA1=WS.Cells(1,1)

Dim i As Long
For i = 1 to 16384
 If WS.Cells(i,1).Value="" Then
  Exit For
 Else
  WS.Cells(i, 1).Value=WS.Cells(i, 2).Value
 End If
Next

12 名前:デフォルトの名無しさん [2022/05/03(火) 10:09:18.61 ID:F3b8ltuB0.net]
先生方教えて!
エクセルを1枚1枚開いてvbaによって加工したい場合、
マクロの表示からそのvbaを選ぶのが一般的なんでしょうか。

FileDialogをつかって複数エクセルを一気に加工するほうが
自分は楽なんですが契約社員にはわかりづらいそうで。。

13 名前:デフォルトの名無しさん [2022/05/03(火) 10:15:31.86 ID:MA4dMZuw0.net]
一般的かどうかは分からんけど
ファイルダイアログを開いて
設定したパスをどこかのセルに設定しておいて
実行ボタンでそのセルを読みに行くほうが
複数のブックを読みに行く場合には親切

14 名前:デフォルトの名無しさん [2022/05/03(火) 13:25:25.46 ID:xaGln49G0.net]
理解が十分でない契約社員には直感的にわかりやすい上記の方法
そのうち慣れて面倒になってきたら下記の方法(バッチ)
2つのアプローチを用意するのがいいかもしれませんね

コンピュータになれていなかったり入れ替わりが多い契約社員というところがポイントですね
私もVBAを他人に提供することが多いから参考になるわー

15 名前:デフォルトの名無しさん mailto:sage [2022/05/03(火) 13:57:26.99 ID:nOtJseDM0.net]
Nextじゃなくて、Next iって書かなきゃあかんと言われたよ

16 名前:デフォルトの名無しさん [2022/05/03(火) 14:12:22.20 ID:utR4VoxQa.net]
iが足りなかったからか

17 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 14:54:21.99 ID:Bmz10qTz0.net]
前スレ987で質問した者です。
アドバイスありがとうございます。
2019に変わる際にPCがwin7からwin10に変わり性能もアップしたのでVBA処理も早くなるかと思っていたのですがそのようなバグが出るようになりました。

自分1人で使ってる範囲では良いのですが複数が利用しているため質問させて頂きました。

PC性能があがりEXCELがついてこれてない可能性もありますね。

18 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 16:13:00.23 ID:waxP/JpN0.net]
Excel板なら人間の性能を上げろって揶揄されるからな

19 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 19:42:48.21 ID:3VW2nuLk0.net]
win7がwin10になったのとPCの性能は別だからな
古いPCのOSだけ変えたのかもしれんし

20 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 20:57:36.39 ID:Bmz10qTz0.net]
説明不足で申し訳ないです。
win7からwin10でPC変わってます。
個人的に所有しているPCではないので具体的なスペックはわかりません。



21 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 21:05:48.55 ID:hxvZ+FeqM.net]
>>20
所有権の問題ではなく馬鹿だからわからないだけでは?

22 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 21:14:48.05 ID:Bmz10qTz0.net]
申し訳ありません、具体的なスペックが提示できないようではアドバイスも難しいですもんね。
これまで頂いたアドバイスでもう少し試行錯誤してみたいと思います。ありがとうございました。

23 名前:デフォルトの名無しさん mailto:sage [2022/05/04(水) 22:17:07.14 ID:hNQ/TBre0.net]
数秒待たせればエラーに成らないなら、原因判明するまでは待たせる方式で
或いは
最終的に鳥瞰図が欲しいなら、数値データをDXFとして出力してjw-cadとかで描画とか
  https://www.hakko.co.jp/javascript/soft011.htm  作者に問い合わせしながら検討とかも

https://www.apptec.co.jp/technical_report/pdf/vol24/treport_vol_24-06.pdf  
https://movies.woxikon.co.nz/excel-%E3%81%A7-cad-%E5%9B%B3%E9%9D%A2-%E4%BD%9C%E6%88%90
https://www.tipsfound.com/excel/05038
https://www.nichibun-g.co.jp/data/education/ict-education/archive/31/02.php
この辺は既にご承知かも ぜんぶちゃんと目を通した訳では無いから抜粋ということで
グラフ機能を応用して鳥瞰図(風)にしてるってことかな

24 名前:デフォルトの名無しさん (ワッチョイ 2701-XZ6m) mailto:sage [2022/05/04(水) 23:12:41 ID:Bmz10qTz0.net]
>>23
ありがとうございます。勉強になります。
今のところはエラーが出た際バッファーの時間を調整して対応しています。

とりあえずは動いているので良いのですが書き方としてどうなのだろうと思いまして…
もっとスマートに解決方法があればと思い質問させて頂きました。
アドバイス頂きありがとうございます。アドバイスを元に検討してみたいと思います。

25 名前:デフォルトの名無しさん [2022/05/04(水) 23:54:17.61 ID:4EN2kx2R0.net]
>>24
むかしファイルメーカーから画像を取り出してExcelに貼り付けるマクロ書いたことあるわ。
クリップボードからExcelに貼るときにちょいちょいエラーが出て苦労した。
最終的にはエラーが出たところからリランできるようにして人力で最後まで走り切った。
継続的に長い期間使うマクロではなかったんでね。

クリップボードって入れ終わるタイミングが掴めないから処理が難しいね。
オレが調べた限りでは完全に技術的に解決する方法は見つけられなかった。
完全自動化は一旦棚に上げておいて、人間の補助も込みで運用を考えた方が現実的かも。

26 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 00:43:02.91 ID:vV+xUHQR0.net]
IEとセッション共有するにはどうすればいい?

27 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 08:37:44.29 ID:GOdKeYkud.net]
>>12
VBSでExcelファイルをドラッグドロップお薦め
Visible = False でExcel画面すら見ずに処理が終わる

28 名前:デフォルトの名無しさん [2022/05/05(木) 09:37:07.07 ID:yaYLZP+d0.net]
>>26
まずIEはセッションなど持っていない。
そして今IE は使えないだろう?
強制的にEdgeにされるはずだ。
そしてそのEdge も当然セッションなど持っていない。
EdgeもIEもクライアントサイドのものだからだ。
セッションはサーバーサイドの概念だからな。

そしてサーバーサイドをEXCELのVBA で制御するとか意味分からん。
大人しくAsp.NetでもやっておくかせめてVBS で制御しとけ。

29 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 11:18:53.52 ID:vV+xUHQR0.net]
わざとだろうけど、EdgeでもCookieでもいいよ。

30 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 11:27:47.75 ID:BSjK1PJD0.net]
>>11
ありがとうございます。



31 名前:デフォルトの名無しさん mailto:sage [2022/05/05(木) 16:06:00.40 ID:FeY8iOM40.net]
【ひろゆき】テレビ見る奴はバカ!?正論論破!
「テレビ見てる奴バカすぎだろ!!マジでバカしかいない!!」聞けば納得の正論!!

【ひろゆき】みなさん要注意です…テレビ見ると頭悪くなります
⇒テレビが馬鹿向けに作られてる衝撃の理由がヤバ過ぎる…

【ひろゆき】マジで「ざまあみろ」って思いましたね。
●●する奴にテレビ業界は破壊されました…ひろゆきがテレビがオワコン化した理由を話す

【ひろゆき】芸能界の闇!松本人志とか東野幸治はエクセルすら使えないんだよ?
ワイドナショーで言ってたw【教えて!ひろゆき先生/切り抜き】

【ひろゆき】なぜテレビは面白くなくなったのか?
その理由をひろゆきとひげおやじが分析する【切り抜き/論破/TV】

32 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 10:41:14.26 ID:NJT6jW780.net]
Sub test()

Dim high As Long
Dim str As String
Dim num As Integer

'a
str = "転"
str = Asc(str)
str = Hex(str)
a = str

'b
str = "転"
str = Hex(Asc(str))
b = str

'c
str = "転"
num = Asc(str)
str = Hex(num)
c = str

End Sub

a=FFFFFFFFFFFF935D  b =935D  c=935D

aとbで結果が異なる理由が分かりません。
cはぼんやりと型の違いなのかと思いテストしたところ、bと同じ結果になりました。
しかし、aもbもstring型のstrに納めているので、「どうして結果が違うのか」とより
謎を強めてしまいました。なぜ、aとbで結果が異なるのか教えてください。

33 名前:デフォルトの名無しさん [2022/05/07(土) 11:01:22.01 ID:QtF4T6fHa.net]
ascの結果をstringに変換しないで入れたからかな
出先なので試せないが

34 名前:デフォルトの名無しさん (アウアウウー Sa1f-cwrN) mailto:sage [2022/05/07(土) 11:52:42 ID:/qcwjpRWa.net]
'a
str = "転"
str = Asc(str)
Debug.Print str
str = Hex(str)
Debug.Print str
a = str

ってやってみて自分の思った通りになってるか確認してみそ

35 名前:デフォルトの名無しさん (ワッチョイ b7ce-PvPk) mailto:sage [2022/05/07(土) 11:59:35 ID:WpJq4eDb0.net]
>>32
Asc関数は戻り値が数値型なので、bとcはほぼ同等になる
aだけが途中経過が明らかに違う

36 名前:デフォルトの名無しさん (ワッチョイ b7ce-PvPk) mailto:sage [2022/05/07(土) 12:05:46 ID:WpJq4eDb0.net]
公式ドキュメントには、Hex関数の返り値は8桁以下の文字列と書いてあるのに16桁返ってくるな
どういうことだ?
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/hex-function

37 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 12:10:46.75 ID:WpJq4eDb0.net]
暗黙の型変換は必要最小限の型に変換されるってルールだったはずで、そのロジックに何か問題がある気がする
文字コード(-27811)はIntegerになるはずがLongLongに変換されてしまっていて、さらにHex関数がなぜかエラーを返さない

38 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 13:00:38.34 ID:WpJq4eDb0.net]
うーん、これはちょっと想定外の結果、かなあ
知らないでいるとハマりそうだわ

Sub test2()
  s = "&H8"
  For i = 1 To 15
    s = s & "0"
    Debug.Print Hex(s)
  Next
End Sub

39 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 15:18:31.97 ID:QipuKWLV0.net]
>>32
strは文字列型だからaの場合str = Asc("転")でやっていることは実質的にstr = cstr(Asc("転")).
だからa,b,cはそれぞれ,hex(cstr(Asc("転"))),hex(Asc("転")),hex(Asc"転"))となりaだけ途中で数字ではなくて文字列にかわっているので
対応するhexの値が異なるのは当然.

40 名前:デフォルトの名無しさん [2022/05/07(土) 15:39:23.00 ID:Be/sY8NCd.net]
型を意識しないで作るVBAerによくある勘違いというだけ



41 名前:デフォルトの名無しさん [2022/05/07(土) 16:06:22.67 ID:7L5Eu3N/a.net]
>>38
型宣言しないタイプ?

42 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 17:29:10.04 ID:stouWQDp0.net]
VBAってマトモな会社は使用禁止でしょ

43 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 19:21:47.63 ID:WpJq4eDb0.net]
>>41
>>38のケースは宣言してもしなくても結果同じでは

44 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 19:23:32.20 ID:WpJq4eDb0.net]
>>39-40
公式ドキュメントに8文字以下と書いてあるのに、たまに16文字返ってくるのは単なる勘違いで済む問題じゃないと思うぞ

45 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 20:33:59.56 ID:gH0nu0qIa.net]
>>44
64bit 版のドキュメントが間に合ってないだけだろ

46 名前:デフォルトの名無しさん (ワッチョイ 17da-oDvp) mailto:sage [2022/05/07(土) 21:40:19 ID:QipuKWLV0.net]
>>44
実際の結果と説明が食い違ってたら説明の方が間違っている(修正が遅れている)だけだと思うが

47 名前:デフォルトの名無しさん (ワッチョイ b7ce-PvPk) mailto:sage [2022/05/07(土) 21:55:14 ID:WpJq4eDb0.net]
Officeが完全64bit対応になったのは2010から
12年遅れか……

48 名前:デフォルトの名無しさん (アウアウウー Sa1f-cwrN) mailto:sage [2022/05/07(土) 22:11:45 ID:9QKKUGlra.net]
>>46
まあ単なるバグの可能性は "0" ではないけど

49 名前:デフォルトの名無しさん (ワッチョイ 8f68-e+q+) mailto:sage [2022/05/07(土) 22:14:36 ID:T2FkQFbN0.net]
>>38
これはバグでは

50 名前:デフォルトの名無しさん mailto:sage [2022/05/07(土) 22:18:37.86 ID:cppQitqZ0.net]
>>47
64bitが標準になったのは2019からだけど



51 名前:32 (ワッチョイ 9f02-PvPk) mailto:sage [2022/05/08(日) 08:41:56 ID:mrWBx7yB0.net]
Sub test()

Dim high As Long
Dim str As String
Dim num As Integer

'a
str = "転"
str = Asc(str)
str = Hex(str)
a = str

'a´
str = "転"
str = Asc(str)
str = Hex(CInt(str))
ad = str

'b
str = "転"
str = Hex(Asc(str))
str = str
b = str

'c
str = "転"
num = Asc(str)
str = Hex(num)
c = str

ありがとうございます。一旦は納得できました。

52 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 19:44:09.25 ID:J4Oeet0G0.net]
kou

'a
str = "転"
long_ = Asc(str)

53 名前:デフォルトの名無しさん mailto:sage [2022/05/08(日) 22:42:32.67 ID:CUGu1qGH0.net]
high は何のため

54 名前:デフォルトの名無しさん (ワッチョイ 2f2f-vjB4) mailto:sage [2022/05/09(月) 03:05:49 ID:1tzp5qwq0.net]
>>37
>暗黙の型変換は必要最小限の型に変換されるってルール
そんなルール聞いたことないが、どこ情報なんだ?

55 名前:デフォルトの名無しさん mailto:sage [2022/05/09(月) 14:49:08.99 ID:Ww9cdHsy0.net]
脳内思い込み
一番タチ悪い

56 名前:デフォルトの名無しさん (ワッチョイ 3ebb-HNGk) mailto:sage [2022/05/09(月) 18:18:14 ID:7ATo4dDz0.net]
コピー元のブックのシート上のチェックボックス

57 名前:(ON/OFF)を、
コピー先のブックのシート上のチェックボックス(すべてOFF)に
「チェックボックスのON/OFFの状態を」コピーしたいのですが
そういう命令はありますでしょうか?

[コピー元].Worksheets("シート名").Range("G3:AB5").Copy
[コピー先].Worksheets("シート名").Range("G3:AB5").PasteSpecial xlPasteAll

ではチェックボックスは空白のままなのですが、

「マウスでコピー元のG3:AB5を選ぶ→Ctrl+C→コピー先にCtrl+V」と手動で操作すると
G3:AB5内のチェックボックスのON/OFFもコピーされるので
なにか方法があるのではと思うのですが
すべてをペースト(PasteSpecial xlPasteAll)ではダメなのでしょうか
[]
[ここ壊れてます]

58 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 10:07:55.18 ID:4FhYKkQU0.net]
ユーザーフォームのコントロールの位置調整について質問です。

テキストボックスA,B,Cが
A B C
と既に左右の間隔が均等に整列された状態になっており、
一番左にテキストボックスDを追加するとします。
D A B C

この時、A-B間(B-C間も同じ) と D-A間の間隔を同じにしたい場合、
手動計算する(それぞれのLeftプロパティを参照して、差分を手入力する)のではなく、お手軽に設定できる操作はありますか?

マウスのドラッグで D A B C を範囲選択して[書式]-[左右の間隔]-[間隔を均等にする]を選ぶと、
両端(DとC)の位置が固定された上で、その内側(D-A間、A-B間、B-C間)が均等になるだけで、
今回求めている結果にはなりませんでした。

59 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 10:19:04.03 ID:ODIjuWluM.net]
一生に一度しか使用しない機能は実装されません

60 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 10:49:36.48 ID:G5I31YZG0.net]
D A B C を左右均等に並べたいんじゃ無いのか?
D-A-B-C とか、スペースを-で表さないと、コッチからすれば説明文の上下は一緒に読めるんだが?
D---A-B-C とかか?



61 名前:57 mailto:sage [2022/05/10(火) 11:44:31.14 ID:4FhYKkQU0.net]
>>59
スペースをハイフンで示します。

最初の状態
A----B----C

Aの左側にDを追加するとします。
D-A----B----C

マウスのドラッグで DABC を範囲選択して[書式]-[左右の間隔]-[間隔を均等にする]を選んだ場合は、
両端(DとC)の位置が固定された上で、その内側(D-A間、A-B間、B-C間)が均等になるだけ。
この場合は、最初の状態でのA-B間(B-C間)の間隔(スペース4個分)が保持されていません。
D---A---B---C

今回求めている結果
D----A----B----C

62 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 11:55:55.13 ID:G5I31YZG0.net]
Cを必要なだけ右に寄せてからその操作すれば?
ぴったり位置合わせしたいとかなら  https://www.moug.net/tech/exvba/0120023.html 辺り参考に

63 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 11:58:47.56 ID:Q/OuvBXU0.net]
>>56
どのチェックボックス?フォーム?activeX?

64 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 13:26:52.13 ID:EvytVRjpd.net]
>>57
Controls.Addでマクロにパーツを作らせて位置を指定するか自動計算させれば簡単
自分でイベント作る必要はあるかも

65 名前:57 mailto:sage [2022/05/10(火) 21:53:08.05 ID:4FhYKkQU0.net]
>>63
ありがとうございます。調べてやってみます!

66 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 21:54:52.33 ID:4FhYKkQU0.net]
>>61
ありがとうございます。参考にします。

67 名前:56 mailto:sage [2022/05/11(水) 07:58:45.59 ID:VwZpfkps0.net]
>>62
「チェックボックス」だけの情報だと二つあるんですね
すみません。
調べたところフォームのほうのチェックボックスでした。

68 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 01:22:53.69 ID:UrRQ3K070.net]
'これ実行するとどうなりますか?
'Q1 「 3.2to4.1(14)ng:4>=4 」と
' 「 3.2to4.1(25)ng:4>=4 」になりますか?
'Q2 「 3.7to4(9)ng:4>=4.9 a:3.9 」と
' 「 3.8to4(9)ng:4>=5 a:4 」になりますか?
Sub test()
For i = 1 To 4 Step 1
Select Case i
Case 1
a_from = 3.2: a_to = 4.1: a_max = 4# 'if[4 >= 4]でFalseになる
Case 2
a_from = 4.2: a_to = 5.1: a_max = 5# 'if[5 >= 5]でFalseになるか確認用
Case 3
a_from = 3.7: a_to = 4#: a_max = 4# 'aが3.9までしかいかない
Case 4
a_from = 3.8: a_to = 4#: a_max = 4# 'aが4までいく
End Select
c = 0
Debug.Print "***** from " & a_from & " to " & a_to & " max " & a_max, String(60, "*")
For a = a_from To a_to Step 0.1
For b = 0# To 0.2 Step 0.1
c = c + 1
ab = a / (1 - b)
okng = "ng"
If a_max >= ab Then okng = "OK"
Debug.Print a_from & "to" & a_to & "(" & c & ")" & okng & ":" & a_max & ">=" & Round(ab, 1) _
, "a:" & a, "b:" & b, "max:" & a_max, okng, "ab:" & ab
' Debug.Assert a_max >= a '[4 >= 4]でFalseになる
Next
Next
Next
End Sub

69 名前:デフォルトの名無しさん mailto:sage [2022/05/12(木) 02:12:42.08 ID:y5qWaFnT0.net]
>>67
常識
https://blog.apar.jp/program/8900/

70 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 15:49:14.84 ID:m1gysKVC0.net]
Dim a
a = Range("A1:B2")

これだけでaが2×2の配列になるとたった今知ったのですが
このことを手放しに使って良いのでしょうか、それとも邪道だから
Dim a(2, 2)なり要素数まで指定した方が良いのでしょうか。



71 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 15:56:46.69 ID:Bn5ry0500.net]
>>69
問題ない
VBA使えるやつならみんな知ってる

72 名前:デフォルトの名無しさん [2022/05/13(金) 16:05:23.39 ID:zF4dJdoD0.net]
それ便利だけど誤読しやすいので静的メソッドにしてる
ArrayExt.FromRange(Me.Range("A1:B2"))
みたいな

73 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 19:41:50.80 ID:q/KvZ9/90.net]
officescript調べてみたけど意外と分かりやすかった
これならVBAがなくなっても大丈夫そう

74 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 19:50:05.37 ID:q/KvZ9/90.net]
>>69
型使わないとバリアント型だから二次元配列になるわけか

75 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 19:53:17.10 ID:q/KvZ9/90.net]
ちなみに参考にしてる人はこう書いてた
Dim a As Variant
a = Range("A1:B2").Value

76 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 22:54:29.72 ID:BcFt2CuGD.net]
aは要するにポインタだからな

77 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 22:58:14.08 ID:JesbR9jP0.net]
c以上ならポインた

78 名前:デフォルトの名無しさん mailto:sage [2022/05/13(金) 23:28:52.57 ID:94QyLQ1Xa.net]
>>69
誰も書いていないので驚いたが、
その方法でもいい、のではなくて、
その方法しかない。
あとは Variant を明示するかしないかの違いだけ。

79 名前:デフォルトの名無しさん (ワッチョイ ffbb-bUW4) mailto:sage [2022/05/14(土) 01:49:07 ID:5NJ35cqH0.net]
セルの値を取得して書き換えて…ってやるより二次元配列で処理する方が体感3倍くらい速いから、高速化したいなら配列使えばいいよね
ただ他の人もわかるようにとかメンテナンス性考えると避けた方が無難だったり、ケースバイケース

80 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 04:08:54.94 ID:wh2tsa6Q0.net]
他人の使い勝手なんか微塵も考えていないヤツが大半だろ現場じゃあ



81 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 04:13:11.38 ID:JIfRBOPe0.net]
Variantはポインタじゃなくて共用体
そもそもVariantオブジェクトはVBA固有の機能じゃなくてWindowsに組み込まれてて、別の言語からも自由に使える
どういう場面で役に立つのかわからんけど

82 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 04:32:51.17 ID:bV9+cuz+M.net]
ポインタ的な使い方するならVariant型ではなくてObject型
Dim a As Object (総称オブジェクト型)
Rangeオブジェクトに特定するなら
Dim a As Range (固有オブジェクト型)

83 名前:デフォルトの名無しさん [2022/05/14(土) 08:18:11.37 ID:ddohEedh0.net]
Variantってよく分からん型だよな
Objectもそうでないものも仕舞えるし
.Netで封印されたのも頷ける

84 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 10:07:30.24 ID:BHEGSPOf0.net]
>>78
配列の方が断然早いよね。
富○通がVBで作ったEXCEL名簿出力アプリが5時間以上かかってるのが、俺がEXCELVBAで組んだのは30分で終わる。
しかも富○通のはデータ1行ごとにコピペしてるので
動かしてる間コピーのバッファが奪われて他の作業が一切できない。

85 名前:デフォルトの名無しさん [2022/05/14(土) 10:48:24.07 ID:0kHlnQQT0.net]
オレオレ自慢

86 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 10:57:42.22 ID:jjfnS8MSd.net]
VBのコードみてVBAにする際に少し手直しした程度なんだと思うが
どの程度のデータか不明だけど30分もかかるような処理も自分としてはNGだわ
まあどっちも夜流して朝みればいいなら5時間でも一緒程度

87 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 11:08:32.24 ID:XMrr4JDhr.net]
何分とかかかる時点でRDBとか外出ししてやれないかとか考えちゃう
Excelには荷が重いんじゃないかとね

88 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 11:27:37.36 ID:x+cFGSU+a.net]
どんだけ長い処理でも耐えられて2分までだわ
30分かかるとか論外

89 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 11:39:20.09 ID:tj4PNqc2d.net]
そんなに処理に時間がかかるってことは多分生データが数Gクラスだろうからaccessやexcelでは非効率だろう
ここに>83の間抜けさがよく現れてる

90 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 11:43:13.01 ID:5E8BmIH10.net]
そんな大規模なデータを扱ったことないからわからないけど
30分もかかったら途中で無限ループに入ってんだろなと思って止めてしまうわ



91 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 11:59:12.73 ID:VTp6T5x/0.net]
vbaを30分も動かすってどんな処理だよ
あとあまり長い時間動かしっぱなしにすると大体フリーズしてるぞ

92 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 12:14:29.94 ID:jjfnS8MSd.net]
どんな処理でも構わないけどExcelのプロセスが起動してるときに新規のExcel起動>ファイルを開くで開けばいいけど
無意識のうちにダブルクリックなんかで開こうとしたらVBA実行中のプロセスで開かないとも限らないから
30分の拘束ってのは日中ならなし

93 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 12:55:50.88 ID:JIfRBOPe0.net]
そんなに速くしたら、フリーズしてないか監視する仕事の人がクビになっちゃうだろ
ああいうのは、わざと1日かかるように作ってあるんだよ

94 名前:デフォルトの名無しさん (ワッチョイ 7dda-o6RS) mailto:sage [2022/05/14(土) 13:31:33 ID:wh2tsa6Q0.net]
なんでExcelエキスパート集団の富○通がそんなクソ遅いマクロ書くのか不思議だ。

95 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 15:15:38.33 ID:VTp6T5x/0.net]
>Excelエキスパート集団
それはない

96 名前:デフォルトの名無しさん [2022/05/14(土) 16:41:13.43 ID:9uXA4NxPd.net]
富士通が直接作っているのでないだろうし、たった一つの例で全部がわかったつもりになる幼稚なアホ

97 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 18:27:44.98 ID:msymY1pp0.net]
あんまり処理に時間かかるようなやつならプログレスバーやらひとまず動いてることがわかるようなものを入れとくわ

98 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 18:32:44.86 ID:qaSd7ep40.net]
1.xlsx、2.xlsx、3.xlsx、・・・、1000.xlsxという連番のブックがあって
そのすべてにssssというシートがあって
そのすべてのD2(R2C4)セルにデータがあるとして

あるブックのA1~A1000に1~1000が入力してあって、
それぞれの隣(B1~B1000)に対応するブック(B500には500.xlsx)の
シートssssのD2セルの中身を持ってくるのってどうすればいいですか?

ExecuteExcel4Macroとか使ってそんなに難しくなくやれるかと思いきやまるでうまくいかない…

99 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 18:58:29.62 ID:lDPvxjtFD.net]
>>94
方眼紙はじめとした使い方への皮肉だろ

100 名前:デフォルトの名無しさん [2022/05/14(土) 19:14:09.21 ID:yHnyJFGQ0.net]
>>97
他に条件や例外がないなら自分で書いてる通り「そんなに難しくない」が、どこで詰まってるの?



101 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 19:20:25.44 ID:VTp6T5x/0.net]
>>97
ExecuteExcel4Macroはデフォで無効にされた
なんか知らんが俺も動かせなかったからもうベタ書きで
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1357642.html

Sub Sample1()
Set t = ThisWorkbook
For i = 1 To 3
Set databook = Workbooks.Open(Filename:="C:\Users\81909\Downloads\" & i & ".xlsx")
t.Sheets("ssss").Cells(i, 2) = databook.Sheets("ssss").Cells(2, 4)
databook.Close
Next
End Sub

>>98
それならok

102 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 19:26:19.82 ID:msymY1pp0.net]
内容あまり理解出来てないのかもしれないけど

B500の行取得してワークブックオープンで引数ファイルパス500で開いてデータ抜きたいところ抜けば良いのではないでしょうか。

4使うあたり処理を重くしたくないのでワークブックを開きたくないようにも見えますが

103 名前:デフォルトの名無しさん mailto:sage [2022/05/14(土) 19:51:35.87 ID:jjfnS8MSd.net]
こんな感じになる文字列を作ればいけないか?(フォルダ名とファイル名を変更していく)
MsgBox ExecuteExcel4Macro("'フォルダ名\[1000.xlsx]ssss'!R2C4")

104 名前:デフォルトの名無しさん (ワッチョイ 91da-Hs+l) mailto:sage [2022/05/15(日) 01:22:22 ID:xmtudDvv0.net]
MSHTML.HTMLDocumentのbody.outerHtmlに何か代入しようとすると、
あるPCでは問題なく出来るのに、
別のPCではアプリケーション定義のエラーがでる
何故?
ソースは同じなのに

105 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 08:18:10.46 ID:Jt2O43PNd.net]
参照設定は?

106 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 13:24:19.34 ID:K6VbLnva0.net]
>>68
即レスいただいてたのに遅くなりました。ありがとうございます。
常識なんですね。とてもためになりました。

少数が原因だろうと思いつつもローカルウィンドウの値は整数だし
Fixしても発生するので困ってました。ありがとうございます。

107 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 15:21:30.27 ID:xmtudDvv0.net]
>>104
してある
してないと違うエラーメッセージだったような

108 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 17:45:40.00 ID:SLK6Xy6bp.net]
>>106
参照不可はない?

109 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 17:49:03.93 ID:i2BwfRJap.net]
>>83
依頼元の情報提供不足。対象件数とか。

110 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 20:29:54.61 ID:EFSZcQ6p0.net]
VBAで作ったブックを指定するにはどうやるのがいいんでしょうか
VBAで複数ブックを作るとBook1、Book2、…となりますが、
どうやってそれぞれのブックを指定してやればいいのかが分かりません



111 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 20:48:22.92 ID:xHyGsu5B0.net]
ブックの作成の際にワークブック変数にセットする
set=workbooks.add

112 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 21:20:44.06 ID:i/ziY72x0.net]
変数に格納するってのは名前をつけてあげるみたいな意味合いがある気がする

変数作ってセットすれば呼び出しやすい

113 名前:デフォルトの名無しさん (ワッチョイ ebda-yvGd) mailto:sage [2022/05/15(日) 22:58:08 ID:e0cA7YQF0.net]
Set wb = ThisWorkbook
Set ws = wb.Worksheets("sheet名")
とやっといて、
カーソル移動したいだけなのに、
ws.Range("B3").Select
とやったら、
「RangeクラスのSelectメソッドが失敗しました」
と出て動かなくなって・・・???

原因はRange.Selectやる前に
当該sheetをActivateしていないことだと
今日、ようやく知ったアタシが通り過ぎますよ・・・

114 名前:97 mailto:sage [2022/05/15(日) 23:36:58.31 ID:VONG1GsX0.net]
>>101
おっしゃる通りワークブックを開きたくなかったんです

諦めて>>100さんの手法でいきました

ありがとうございました。

115 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 23:39:04.92 ID:km049kvp0.net]
>>112
VBAやっててSelect使うことなんてほぼ無いんだからその仕様を知らないことを気にしなくていい

116 名前:デフォルトの名無しさん mailto:sage [2022/05/15(日) 23:53:26.84 ID:sFHTlWBy0.net]
>>113
officetanaka.net/excel/vba/tips/tips28.htm
フルパス指定すればいけるっぽいけどそーゆー話ではないのかな?

117 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 00:14:35.90 ID:D08mu/WY0.net]
セルとかSelectするのは最後くらいだもんなあ

118 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 01:37:32.91 ID:PWfPx8Kl0.net]
>>107
無いんだよね
代入が出来ないだけで表示は出来るんだけど、
""の空文字すら入れられないのは何なのか…
型が一致しないエラーでもないし
仕方がないからDocument.writeで代用したけど

119 名前:デフォルトの名無しさん (ワッチョイ ebda-Lh2i) mailto:sage [2022/05/16(月) 07:25:27 ID:x3MSJzWb0.net]
>>114
気象庁の過去気象データ1時間値を
DLしようとしたら、
1日ごとにURLが違うので、
1日分を読んではコピペさせてるんだけど・・・
単体項目なら1年分一度に落とせるけど、
1観測地点の全項目は1日ごとの模様

120 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 09:05:21.75 ID:gw7DnXAE0.net]
>>118
データをコピペするだけならカーソル移動は必要ない
それと、1日ずつDLだと365回になるけど、項目ごとなら15項目、15回のDLで済むからずっと早く終わると思うんだけど



121 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 10:02:47.99 ID:a802uHDS0.net]
ワイなら大まかに
「データをURLでフェッチする」機能
「データをシートに表現する」機能
とかに分けてそれぞれの中でループする

どんなデータ取るんかとか知らんけど
過去の気象データなら変化ないんやろから(少しずつしか追加されないし)
あらかたDLしちゃって毎日追加する運用でよくね
Accessで動くか知らんがワイなら楽だし(R)DBにして、
Excelは表現に特化させる
まあDBとして考えるなら119の言うように特定のデータをカラムとして取り込むほうがいいけどね

122 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 11:38:04.10 ID:DOkjRxjB0.net]
>>115
この人の書くコードは読みやすいよね

123 名前:デフォルトの名無しさん mailto:sage [2022/05/16(月) 13:47:28.98 ID:CQNp6U12M.net]
>>119
>>118
> データをコピペするだけならカーソル移動は必要ない

そうなんだ・・・
あたしゃ、
単ページのDLとその後の整形は
PowerQuelyがやりやすかったので、
勢い、1日分ごと切って貼ってをVBAで・・・
って発想でやってた。
クエリー更新もVBAの中に入れて。

ネットの事例かき集めて
自己流で作ったのはこんな感じ。

' DBテーブルの最終行の次行を計算
k = Range("R_Row_DB_Title").Value
l = tbl3.ListRows.Count + k + 1

' 単位読取りテーブルのデータ行をコピーして、
' DBテーブル最終行の次行

124 名前:ゥら貼り付ける
Sheets("DL単位").Select ' この記述を入れないと次を認識しなかった
tbl2.DataBodyRange.Select
Selection.Copy
Sheets("DB").Select
Range("A" & l).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ActiveCell.SpecialCells(xlLastCell).Select
[]
[ここ壊れてます]

125 名前:デフォルトの名無しさん [2022/05/16(月) 22:38:43.92 ID:zF5DsILOd.net]
0 b
1 a
3 a
7 a
9 b
13 a
18 a
17 b

aがbに入れ替わったら、上に隣接するa群の一番上(1 a)の数字を参照し、9-1=8を入力
bがaに入れ替わったら、上に隣接するb群の一番上(9 b)の数字を参照し、9-13=-4を入力
これを終わりまで自動入力したいのですが、どう書けばいいでしょうか。
いまいち説明がうまくできなくてすみません。

126 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 06:57:27.10 ID:OSHWxoLA0.net]
>>110
ありがとうございます
まさかこんな単純な解決法だったなんて
勉強になりました

127 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 14:46:10.58 ID:le3TeRDS0.net]
>>123
こんな感じ?
https://i.imgur.com/1sgRHL7.png

128 名前:デフォルトの名無しさん (ブーイモ MMe1-mtI6) [2022/05/17(火) 19:15:44 ID:ZA1GChKVM.net]
>>123
>いまいち説明がうまくできなくてすみません。
問題を上手く説明できる事は、プログラミング能力の上達にとても大事な事。

129 名前:デフォルトの名無しさん [2022/05/17(火) 22:53:48.79 ID:bIs4gfyOd.net]
>>125
ありがとうございます。
試してみてるのですが、画像G14が何をしてるか教えていただけないでしょうか・・

>>126
(・へ・)

130 名前:デフォルトの名無しさん mailto:sage [2022/05/17(火) 23:08:31.99 ID:le3TeRDS0.net]
>>127
>上に隣接するa群の一番上(1 a)の数字を参照
この部分

E,F列は切り替わった部分を取得している。row()にすることで、切り替わった部分を取得できる
maxで、切り替わった直近を取得
あとはindexmatchでA列を取得



131 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 00:40:35.16 ID:54FLML710.net]
>>127
人様に迷惑掛けるだけの人?

132 名前:デフォルトの名無しさん [2022/05/18(水) 23:00:11.54 ID:08bF+6I50.net]
質問です
EXCELのアプリケーションを別途立ち上げて
それをVBAを実行しているブック側から制御することは可能でしょうか?
可能だとすればどのようにすれば実現できますか?

133 名前:デフォルトの名無しさん mailto:sage [2022/05/18(水) 23:31:31.92 ID:yWpeDHxGd.net]
Application.RUN

134 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 06:39:30.30 ID:3ImK9i5g0.net]
VBAエキスパートの本見てみたけどこの範囲なら取得するのは楽勝だな

135 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 12:33:14.63 ID:uClc3Hkf0.net]
VBAの資格、人気度高いね。
ただ企業によっては何それ??的な見方されるのがちょっと。。

136 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 15:57:56.76 ID:ednyHaa30.net]
VBAでWinアプリ制御するマクロの動画作ったんだが誰も見てくれないや。
そういう需要てないのか?

137 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 16:56:56.93 ID:OfQgMZCZ0.net]
>>134
API使ってバックグラウンドで制御してるなら見る

138 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 17:15:23.09 ID:ednyHaa30.net]
>>135
https://youtu.be/DL9MuwJfXVw

139 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 18:18:22.53 ID:H0TVdlz+M.net]
ゆっくり茶番劇® か

140 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 18:19:37.44 ID:OfQgMZCZ0.net]
>>136
面白そう、家帰ったら見よう



141 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 21:37:06.79 ID:3ImK9i5g0.net]
RPA使わなくてもVBAでも結構出来るんだよね
キーボード、マウス操作出来るしなんなら読み上げも出来るし
アプリ立ち上げと組み合わせれば色々出来る

142 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 22:26:16.70 ID:JItdutDu0.net]
RPAは自動化そのものだから、
VBAでRPAを実現してるだけだぞ

143 名前:デフォルトの名無しさん (ワッチョイ c38c-i+mZ) [2022/05/19(木) 23:19:27 ID:5QG/OJCT0.net]
>>136
動画名にExcelって必ず入れとかないと
この手のネタを見たい人に検索で見つけてもらえない

あと時々Excelで予定表の作り方とか番外編としてド素人受けするネタをエサとしてupするとか

144 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 23:27:11.45 ID:uClc3Hkf0.net]
ゆっくりの顔はこれから無料で使用できなくなるんだよね?

145 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 23:45:08.95 ID:EjpQ3dyV0.net]
できる
動画名にゆっくり茶番劇って入れたらダメ

146 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 23:51:09.33 ID:ednyHaa30.net]
>>141
トンクス。
オレのExcel2013だから今風のネタが作れないんだよね。
祝日込の予定表作ろうかと思ったら、自分のやつじゃpowerquery使えないことに気づいたわ。
だから誰もやってないネタとしてRPAもどきをやってみた。

147 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 12:02:22.42 ID:QJ3dWDHN0.net]
2013でパワークエリ使っていた同僚いたけど、どうやったのだろ??

148 名前:デフォルトの名無しさん [2022/05/20(金) 14:24:00.71 ID:Sdn4LcDR0.net]
>>145
使えるぞ
>>144が馬鹿なだけ

149 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 15:47:49.30 ID:J0VXxMmC0.net]
>>144
まぁ、やってみなはれ。
https://www.microsoft.com/ja-jp/download/details.aspx?id=39379&CorrelationId=85f847dd-369e-4417-b604-6a2f3c673084

150 名前:144 mailto:sage [2022/05/20(金) 16:37:29.66 ID:zIX8lMtd0.net]
アドインを入れなきゃ使えんなんて知らんわ。
まあ、やってみるよ。



151 名前:デフォルトの名無しさん (ワッチョイ 7dda-o6RS) mailto:sage [2022/05/20(金) 18:17:06 ID:QJ3dWDHN0.net]
確かに。知っている人は少ないはず。2013にパワークエリアドイン。

152 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 21:07:42.32 ID:vMDI6+gYM.net]
>>149
使いたくて見つけられないのは馬鹿だと思うよ?

153 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 21:09:21.29 ID:7ynD7rzD0.net]
ニッチな動画すぎるわ
こういうのはたまに腕前を見せる程度でいいと思うぞ

154 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 21:34:55.10 ID:Dykg0reN0.net]
エクセル動画って意外と伸びないんだよ
再生数あげてる動画も、数年かけてやっとこさ5桁とかそんなん

155 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 22:12:27.54 ID:jYa2tCV10.net]
文字には勝てんよwww

156 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 00:43:35.28 ID:tFOC1nFU0.net]
YouTubeでしょ?
Excel動画の一部で100万回とか200万回再生動画あるけど、あれは例外かな?
配信者が人気度高いとか?

157 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 01:12:54.43 ID:FuQQRFwo0.net]
ぶっちゃけいちいち動画にするのやめてくれとしか思わんな
テキストに書いてくれと

158 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 07:53:33.56 ID:QJ4+3poJ0.net]
それは見なきゃいいだけじゃね

159 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 08:06:57.86 ID:UbenPHXM0.net]
>>156


160 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 08:54:23.72 ID:ZErRlfK3d.net]
たいがいのことは検索すればブログと動画と両方出てくる
好きな方を見ろとしか



161 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 09:03:39.72 ID:9Ja/LFqb0.net]
>>153
文字だとさ、その分の数行を細切れに書くやつがいてさ、
その分だけ見せられても困る事が多い。
解説書気取りなんだろうけど。
VBAならいいけど、pythonとかだと全体が見れないとな。

162 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 12:06:30.15 ID:zgbylN/DM.net]
>>159
ドーガってソース全体見せながら饅頭が喋るの?

163 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 13:24:13.30 ID:yO41HbkGd.net]
64bitだとdatepickerが使えないんだけど代替有りますか?

164 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 22:05:53.36 ID:UbenPHXM0.net]
>>161
無いんだな、これが
あと64bitじゃなくて2013か2016あたりから使えないはず

165 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 00:44:38.46 ID:VeiX84dqd.net]
クリップボードに

あああ いいい
123  たたたた   ららら 12ああ

000 1
かかか 


あかさ たなは 358 22558

のようにランダムな文字列や数字がはいっています。
空白や改行の数もランダムですがどちらも5個いないです。

あああ、や、いいい、の間は空白や改行のどちらかです。
文字列または数字を、空白か改行で区切って

横に10列ずつに並べたいです。
A1に「かかか」B1に「いいい」おなじように繰り返してJ1に「あかさ」、次はA2に「たなは」が入るようなイメージです。


うまく伝わっているかわかりませんが、どのようなコードを書いたらいいですか?

166 名前:デフォルトの名無しさん [2022/05/22(日) 02:13:20.90 ID:EshCCJ/od.net]
>>163
まずはちゃんと伝えるように書け

167 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 02:46:34.46 ID:EqID4SVmM.net]
>>163
よくわからん部分もあるが
クリップボードからテキストフォーマットのデータをstrに読み込んで改行ごとに分割(spritかね)
分割した文字列を更にスペースごとに分割して2次元配列にいれる
あとはそれをセルに転写すればいいんじゃないの?
分けるのが改行と空白両方ならどっちかにリプレースしてからスプリット

168 名前:デフォルトの名無しさん (アウアウウー Sac7-xdJx) mailto:sage [2022/05/22(日) 06:43:53 ID:e+a5DD9Ja.net]
>>163
とりあえずその状態で欲しい結果を書け

169 名前:デフォルトの名無しさん (ワッチョイ 9768-A7oz) mailto:sage [2022/05/22(日) 06:45:54 ID:g+ilDpCn0.net]
>>163
連続する改行と空白を消す。
for i = 1 to 5
a = Replace(a, vbCrLf & vbCrLf, "")
a = Replace(a, " " & ” ” , "")
next

改行を空白に置換する

splitで分ける

配列をセルに入れる

170 名前:デフォルトの名無しさん (ワッチョイ 9768-A7oz) mailto:sage [2022/05/22(日) 06:46:20 ID:g+ilDpCn0.net]
>>166
A1に「かかか」B1に「いいい」おなじように繰り返してJ1に「あかさ」、次はA2に「たなは」が入るようなイメージで



171 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 08:05:25.80 ID:kuwcJLnp0.net]
どういう順番にしたらA1にかかかが来るのかがよく分からない

172 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 08:09:48.09 ID:g+ilDpCn0.net]
A1に「かかか」

A1に「あああ」

間違えてるだけだろ、それぐらい見抜こう

173 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 08:43:32.82 ID:kuwcJLnp0.net]
書かれてる仕様を思い込みで勝手に書き換えたらいかんでしょ
作り込む前に確認を取らなきゃダメだよ

174 名前:デフォルトの名無しさん (アウアウウー Sac7-xdJx) mailto:sage [2022/05/22(日) 09:43:55 ID:aVdyttIba.net]
>>168
Dim S As String
With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.GetFromClipboard
S = .GetText
End With
With CreateObject("VBScript.RegExp")
.Pattern = "[ \n]+"
.Global = True
Dim R As Long
R = 1
Dim C As Long
C = 1
Dim T As Variant
For Each T In Split(.Replace(S, " "), " ")
Cells(R, C).Value = T
C = C + 1
If 10 < C Then
C = 1
R = R + 1
End If
Next
End With

175 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 10:01:24.95 ID:q4bvZkadM.net]
>>172
あらキレイ

176 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 10:11:15.36 ID:RbyXtd/h0.net]
>>173
綺麗に見えるだろ?
このコード、死んでるんだぜ…ヘヘッ

177 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 10:37:59.11 ID:TDPiVbwY0.net]
>>163
VBAスレでいうのもアレだと思うけど

「改行、スペースで区切られたテキストデータを、10個ずつ(10列ずつ)で改行されるデータとして抽出したい」
って考えると正規表現可能なテキストエディタでやったほうが良いような気がする。

( | |\r\n) を \t
\t+ を \t
((.*?\t){2}) を $1\r\n

にみたいな感じで

178 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 13:05:55.15 ID:QBTEeDJr0.net]
>>163
同じくVBAスレでいうのもアレだし>>172でよいと思うけど

powershell -c "(gcb -raw) -replace '\s+', """"`t"""" -replace '((?:[^\t]+\t){9}[^\t]+)(?:\t|$)', """"`$1`r`n""""|scb"

VBAから実行するなりバッチファイル(.bat)にして実行するなりすると
整形結果がクリップボードに入るのでA1を選択して貼り付け。

すでにExcel上にあるデータなら>>172とかが有力だけど、
入力元がクリップボードならクリップボード格納前後(VBA前)で
テキスト処理に向いた言語や手法(>>175)で整形したらいいんじゃないの、と思う。
餅は餅屋、ってことで。
今回だとクリップボード操作と正規表現向き内容なのでPowerShellが向いてそう。

・実行環境のOS(Windows 7で実行されうるか)
・文字列にダブルクォーテーションが含まれうるか
・「空白」の正確な定義(レアな空白を「空白」に含んでよいか)
・『A1に「かかか」』の謎
・この整形処理前後の処理(処理全体、本当の処理目的)
などにもよるけど。

179 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 19:14:42.01 ID:Np0e+b7dd.net]
常にそうだとは言わないけど、VBAでいろんなことしようとする人って
会社内でセキュリティに縛られてVBAしか使えないような環境でこっそりやってる場合が多いんじゃね

うちなんてpowershellさえ使えない

180 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 21:09:09.39 ID:2g8+RnwC0.net]
>>177
VBAとVBScript/Jscriptはそれの定番だよ。
IEがなくなるとスクレイピングができなくなるよな。
そういう環境下だと、どうするんだろう。



181 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 21:19:32.54 ID:uG5Z2bGad.net]
163です。
レスくださった方ありがとうございました。

結論から言うと、>>172を加工してなんとなくうまくできました。
A1セルは「あああ」が正しいです。すみません。

182 名前:デフォルトの名無しさん mailto:sage [2022/05/22(日) 21:33:47.57 ID:g+ilDpCn0.net]
それぐらい分かってるから大丈夫だ

183 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 17:38:33.02 ID:KrqlZBhkM.net]
表示するのにラグを発生させたい場合sleepかウェイトを試して見たのですがソースの途中に入れても実行最初に止まって全部表示されてしまうのですがなにかいい方法はないのでしょうか

184 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 17:51:32.07 ID:KArKRscP0.net]
何の表示だよ

185 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 17:58:05.38 ID:KrqlZBhkM.net]
セルに挿入です
for文を挟んでいるとどうもすべて止まって一括表示されてしまいます

186 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 18:38:04.00 ID:nw7KfNpjD.net]
ループ内で都度再表示させればいいんじゃねーの

187 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 18:45:16.94 ID:S7FOVsdv0.net]
excelのシートのA列に◎オプションボタンActiveXを付けた、B列には商品名(3000件くらいある)を入れた。
◎ りんご
◎ みかん
◎ ぶどう
◎ ばなな

ぶどうを選んだら、TRUEになった番号は「3番」って返ってきているのですが、3000件を設定するのが大変で一括で設定できる方法があれば何かヒントを教えてください。

188 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 20:02:47.45 ID:BtAHO3WV0.net]
>>181
なんのためのラグかを書けばもう少しマシなやり方を教えてくれるかも

189 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 20:48:26.86 ID:e/WRg45j0.net]
>>183
DoEvents

190 名前:デフォルトの名無しさん (ワッチョイ 9768-A7oz) mailto:sage [2022/05/23(月) 20:58:57 ID:BtAHO3WV0.net]
Sub foo()
Range("a1:z100").Formula = "=rand()"
End Sub
こういうのを徐々に表示したいってなら、無理だ



191 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 21:43:20.23 ID:2/Utrmz50.net]
Do Eventsってイマイチちゃんと意味を理解しない状態で使ってる気がする

なんか図形でアニメみたいな動きさせるとか
入れると安定したり

192 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 23:30:03.20 ID:e/WRg45j0.net]
>>189
WindowsというOSの(ほぼ)すべてがイベントで動いてる
キー入力も画面表示もディスクアクセスも、何をするにもイベントが必ず使われる

普通に使ってるだけで、ユーザーの関知してないところで毎秒数十万回以上のイベントが発生してて、その一部は溜めたり無視することもできる
そこで溜まったイベントをまとめて処理するのがDoEvents

193 名前:デフォルトの名無しさん mailto:sage [2022/05/23(月) 23:44:03.30 ID:lhQpV8J50.net]
肥溜めの水で流すボタンだな

194 名前:デフォルトの名無しさん (スップ Sdba-LYQt) [2022/05/23(月) 23:54:22 ID:hvqO78Q3d.net]
>>190
中途半端な知識の人の回答だな
所詮はExcel使いか

195 名前:デフォルトの名無しさん (ワッチョイ abda-ZFfB) mailto:sage [2022/05/24(火) 00:04:30 ID:voOeNnQV0.net]
そうか?

196 名前:デフォルトの名無しさん mailto:sage [2022/05/24(火) 01:52:28.78 ID:KUFh4POM0.net]
ググって読んでもさっぱりわからんがプロシージャの共通化(´・ω・`)これかも。

197 名前:デフォルトの名無しさん mailto:sage [2022/05/24(火) 02:50:59.45 ID:iiO+sB1VM.net]
>>190
ExcelのVBAがWindowsの全てのイベントを処理しているとでも思ってんの?
いつの時代のWindowsだよ

198 名前:デフォルトの名無しさん (ワッチョイ 372f-tVBN) [2022/05/24(火) 06:09:04 ID:VAh5gH+20.net]
>>195
話せ。

199 名前:デフォルトの名無しさん (ワッチョイ 0eda-yjPv) [2022/05/24(火) 06:13:25 ID:3Lu4tPby0.net]
タスク

200 名前:デフォルトの名無しさん mailto:sage [2022/05/24(火) 13:00:25.03 ID:voOeNnQV0.net]
60歳70歳の古参プログラマーじゃないんだからさ



201 名前:デフォルトの名無しさん mailto:sage [2022/05/24(火) 21:38:10.53 ID:ylp1zOdx0.net]
Loop中など他からの割り込みの余地入れる=DoEventsかと思ってました
厳密な意味は知らずに使ってました

202 名前:デフォルトの名無しさん mailto:sage [2022/05/24(火) 22:07:09.92 ID:kwRZndg1d.net]
昔はWindowsのイベントループそのものだったけど、今は>>199くらいの認識の方が正しいよ
今のExcelは裏でスレッド使いまくってるから複雑

203 名前:デフォルトの名無しさん mailto:sage [2022/05/24(火) 22:24:18.97 ID:L7ubAEHL0.net]
少しまだ難しいですが、とりあえずはwindowsの処理で無視していた分を一旦返してあげるみたいな処理なのだと認識しました。

204 名前:デフォルトの名無しさん mailto:sage [2022/05/24(火) 22:30:40.02 ID:1UrgJSe10.net]
昔はシングルコアで激重だったから適度に返さないとすぐに応答なしになった
今はマルチタスクで割と重い処理も平気

205 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 05:02:47.05 ID:1b7KkSYk0.net]
個人用マクロブックのプロシージャからシートに挿入されているマクロのボタンを押す方法を教えて下さい

206 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 06:07:16.42 ID:BON/kfv30.net]
privateを削除するんじゃなくて?
物理的にクリック?

207 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 06:43:21.13 ID:1b7KkSYk0.net]
物理的にではなくシート側のボタンのクリックイベントのプロシージャを個人用マクロブックのプロシージャから動かしたいです。

208 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 06:45:16.14 ID:1b7KkSYk0.net]
application.runは駄目でした

209 名前:デフォルトの名無しさん [2022/05/25(水) 06:47:11.61 ID:Vyx13HCI0.net]
イベントとか言うから初心者が勘違いする

210 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 07:53:58.12 ID:SJVW4y9pr.net]
プロシージャの中身を外出ししようとか考えたのか?



211 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 08:31:27.12 ID:2Cw1QSym0.net]
>>203
Call

212 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 09:47:51.39 ID:rgUSKbgWd.net]
いやここはレイズだ

213 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 18:45:23.11 ID:cRKMftFU0.net]
>>206
呼び出し先のブック名は入れてるのかもしれないけどモジュールが複数あってモジュール名は入れてない、とか?

214 名前:デフォルトの名無しさん (ワッチョイ 3336-4kT2) mailto:sage [2022/05/25(水) 19:54:25 ID:ZQqE1PHN0.net]
説明が少なくて申し訳ありません。
マクロボタンのついた会社の帳票のマクロボタンを押して処理をした上に自分の個人用マクロブックの処理がしたいです。私は会社の帳票のマクロを変更する技術も権限もないのでこのような形を取っています

215 名前:デフォルトの名無しさん (アウアウウー Sac7-yjPv) [2022/05/25(水) 20:09:39 ID:ySKajOtFa.net]
やっちゃいけないことじゃねーの

216 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 20:44:02.25 ID:rgUSKbgWd.net]
会社のマクロにパスワードが掛かってる、かつ起点となるマクロはその会社の方のマクロって事かな?

1. 会社のExcelと個人で用意したxlsm(個人用ブックである必要無し)を準備する
2. vbs やps1の外部ファイルから会社のVBA実行→個人で用意したxlsm内のVBA実行

これで行けるんでねえの?

217 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 20:52:50.14 ID:D9uW2fk+0.net]
変更する技術がないなら触らない方が良いと思うよ

218 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 21:08:25.40 ID:UbZSbjiw0.net]
そもそも権限のないものを突破しようってのは倫理的にどうなのって気がするが
まずは上司なりなんなりに相談するところからじゃね

219 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 21:14:00.59 ID:oImj9UUVM.net]
ややこことは辞めたほうがいいね

220 名前:デフォルトの名無しさん mailto:sage [2022/05/25(水) 22:29:41.62 ID:BtdSsAyL0.net]
パスワードかかってるマクロなんて適当な野良アプリでわかるけどな



221 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 00:34:12.72 ID:O+gRo7JH0.net]
会社用のマクロ実行したあと、個人用マクロを実行するだけの作業なのに
あくまでも自分の分からない領域まで手を入れたいってのは分からんな
マクロ壊して分かりづらい変なトラブルになったら責任云々とかになりかねないかもしれんぞ

214のやり方がむりなら諦めるか上長に相談するべきやと思うで

222 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 06:53:49.33 ID:FGzk4ul90.net]
>>219
100個ぐらいあるエクセルファイルを開いて、そのエクセルファイルのマクロボタンを押して一回目の処理をして次に個人用マクロブックに作った処理をしてエクセルファイルを上書き保存して閉じるを繰り返さなくてはいけないのでマクロ化したいのです。エクセルファイル側のプロシージャを個人用マクロブック側に持たせるのが一番簡単かなと

223 名前:デフォルトの名無しさん [2022/05/26(木) 06:58:26.73 ID:5W+gZAxj0.net]
その会社の帳票マクロとやらのファイルを開いてボタン押せるんならSendKeys使えば何とかなるんじゃねーの?(鼻ホジ)

224 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 07:56:10.65 ID:JEeygHRrr.net]
>>220
工夫するのは上長に100個もある無駄なExcelファイルについて改善を提案すべきじゃね
下手なやつの自動化は害にしかならない
それでだめなら自分の責任でこういうやり方していいかとか聞くとかそういう流れにはもうしたんやろ?

外部から呼ぶ214のやり方で無理なら諦めろ
改善して見込める君の給与メリットがそれほどの額じゃないんやろ

これ公務員とかならマジで税金の無駄やなw

225 名前:デフォルトの名無しさん (ワッチョイ 7fce-eugl) mailto:sage [2022/05/26(木) 08:40:43 ID:MTu1kK/A0.net]
公務員なんて文系の仕事だから、効率のいいデータ整理やプログラミングができるやつなんてほぼいない
しかし理系の人材に役所仕事させるのは税金の浪費以上にもったいない

226 名前:デフォルトの名無しさん (ワッチョイ 8a3d-Td31) mailto:sage [2022/05/26(木) 14:50:09 ID:6r93DwI70.net]
>>206
wshでしょっちゅうやってるけど

Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
CurrentDirectory = fso.getParentFolderName(WScript.ScriptFullName)
Set ExApp = Wscript.CreateObject("Excel.Application")
ExApp.Visible = True 'エクセル可視/不可視設定
ExApp.DisplayAlerts = False '警告メッセージをオフ
Set Wb = ExApp.Workbooks.Open(fso.BuildPath(CurrentDirectory,"Book1.xlsm"))
ExApp.Application.Run "Macro1"

227 名前:デフォルトの名無しさん [2022/05/26(木) 15:48:41.66 ID:5fQbWZ9ra.net]
上司に黙ってデータ改竄とかしたら
会社の資産を横領できちまうな

228 名前:デフォルトの名無しさん [2022/05/26(木) 18:34:16.06 ID:MJ/jCOeZ0.net]
農協で30年勤めたOLがやりそうなイメージ。

229 名前:デフォルトの名無しさん [2022/05/26(木) 18:36:23.42 ID:MJ/jCOeZ0.net]
郵便局の場合、昭和のころから歴代の局長が引き継いでそう。
漁協の場合、いくつもの窃盗グループがありそう。
悪いこととは知らなかったって言いそう。

230 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 22:05:05.56 ID:KppvSZ/JH.net]
今日いちにち会社で配列に関する記事を読んでましたがここ10年くらいVBAに触れてなかったせいもあり
よく理解できないためお力をお借りしたいです。

20万行くらいある空白の無いデータを処理したいのですが、私の書いたコードではどうしても速く処理できません。
F列が「Distribution (PCW; Sales value」とあったらその右のG列の数字を見に行き、3以下ならその行含め下に2行、合計3行削除したいです。

Sub TEST1()
Application.ScreenUpdating = False

Dim A
'セルの値を配列に格納
A = ActiveSheet.Range("A1").CurrentRegion

'配列をループ
For i = UBound(A, 1) To 2 Step -1

'「If」で検索
If A(i, 6) = "Distribution (PCW; Sales value)" Then
If A(i, 7) <= 3 Then
Cells(i, 1).Resize(3, 1).EntireRow.Delete Shift:=xlUp
End If
End If
Next

End Sub



231 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 22:19:00.22 ID:KppvSZ/JH.net]
一応こんな感じのデータです

A列     B列    C列     D列       E列         F列                  G列       
CTM_    12Area TM_2022 sku    SKU Code Measure               TOTAL 4.18- 4.25- 5.2- 5.9-
業態合算 Hokkaido その他 キヨウリツ ゼリ-  4901325124326 Distribution (PCW; Sales value) 8.64 7.03 6.63 9.19 11.70
業態合算 Hokkaido その他 キヨウリツ ゼリ-  4901325124326  Sales Store**** 2,386. 1,830 3,254. 2,244 2,460.5
業態合算 Hokkaido その他 キヨウリツ ゼリ-  4901325124326 Sales Store***** 666 7777 888 4444 7777

232 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 22:19:48.67 ID:KppvSZ/JH.net]
やっぱりずれた。。。(>_<)

233 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 22:28:17.29 ID:dA4WjGxV0.net]
>>228
Excelの行を1行1行Deleteするのはどうやっても重くなるから出力用の配列を作るのがいいかな

234 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 22:30:55.09 ID:6l5xx5Q8d.net]
配列を使ってんなら配列の中で削除処理しないとそりゃあ意味無いでしょ

235 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 22:46:06.64 ID:KppvSZ/JH.net]
>>231
>>232

ごもっとです、、(;^_^A
今日は疲れたので明日ちょっと調べて試行錯誤してみます。レスいただきありがとうございました。

236 名前:デフォルトの名無しさん [2022/05/26(木) 23:00:25.66 ID:Wrt5fLCv0.net]
いつもやる方法があるけどどのくらい早いのかはよくわからん

237 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 23:01:04.69 ID:6l5xx5Q8d.net]
ユニークなキー列がもしあればディクショナリー使うのが速いよ
まあ難しければ配列でも全然良いけど

238 名前:デフォルトの名無しさん (HK 0Hca-ib4B) mailto:sage [2022/05/26(木) 23:26:48 ID:KppvSZ/JH.net]
>>234
少なくとも私のコードよりは速いんじゃないかな。。
15万行を10分以上かかってます(;^_^A

>>235
ディクショナリーとは初めて聞きました。でもユニークなキーがありませんでした。。
SKU Codeという商品コードは基本ユニークなんですが3行ずつ同じ商品コードが並んでるんです。。(;^_^A

239 名前:デフォルトの名無しさん (ワッチョイ 768c-aDUG) [2022/05/26(木) 23:42:29 ID:Wrt5fLCv0.net]
>>236
じゃあこんな感じで作ったので10分以上がどのくらい早くなったか遅くなったか教えてください。

Sub TEST1()
Application.ScreenUpdating = False

Dim A
'セルの値を配列に格納
A = ActiveSheet.Range("A1").CurrentRegion

'配列をループ
For i = UBound(A, 1) To 2 Step -1
Debug.Print i

'「If」で検索
If A(i, 6) = "Distribution (PCW; Sales value)" Then
If A(i, 7) <= 3 Then
Cells(i, 6).Resize(3, 1).Interior.Color = RGB(255, 0, 0)

End If
End If
Next
'
ActiveSheet.Range("A1").CurrentRegion.Select
Selection.AutoFilter Field:=6, Criteria1:=RGB(255, 0, 0), Operator:=xlFilterCellColor
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Application.ScreenUpdating = True
Selection.Delete 'これはしないで目で確認して手動でDELETEしても良いかも

End Sub

240 名前:デフォルトの名無しさん mailto:sage [2022/05/26(木) 23:50:53.02 ID:HeWhwrio0.net]
>>228
・最初にセルの内容をvariantの2次元配列に格納。

・そのvariantを弄くり倒す。

・ほしい結果になったvariantを最後に書き戻す。

セルはフォントだの背景色だの罫線だの表上のアドレスだのとにかくいろんな



241 名前:情報がてんこ盛りなので、valueみてりゃいい処理ならできるだけ書き換えない。 []
[ここ壊れてます]

242 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 00:18:49.05 ID:JbgC4v+W0.net]
あと、蛇足なんだけどソースでやってることそのものをコメントで書いてもあまり意味が…。

'配列をループ
For i = UBound(A, 1) To 2 Step -1

とか

'「If」で検索
If A(i, 6) = "Distribution (PCW; Sales value)" Then

は、いらないのではと。


もひとつ、削除系処理は下からループさせたほうが無難な気がしないでもない。

243 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 00:19:25.67 ID:JbgC4v+W0.net]
あ。ループは俺の読み間違いだ。ごめんなさない。

244 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 00:22:08.18 ID:5SJXPRgg0.net]
>>235
Dictionary使うならユニークなキーがなくても行番号をキーに突っ込めば大体応用効くよね
アイテムはArrayで格納すればいいし

245 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 00:30:45.85 ID:5SJXPRgg0.net]
ちなみに行削除は、DeleteTargetRowみたいなRange型の変数を使って、削除対象の行が出たらその変数にUnionしていってまとめて削除、がまだ速いかな

246 名前:デフォルトの名無しさん [2022/05/27(金) 01:16:57.81 ID:+979Xq8C0.net]
>>237
自分で15万行のデータで試したらDebug.Print i を外しても遅すぎたので作り直し
うちでは5秒でした (Core2Duo E7500 RAM8G win10 Excel2010) 元データのF列に色がないことが条件ですけどね

Sub TEST1()
Dim startTime As Double: startTime = Timer
Application.ScreenUpdating = False
Dim A
A = ActiveSheet.Range("A1").CurrentRegion
For i = UBound(A, 1) To 2 Step -1
If A(i, 6) = "Distribution (PCW; Sales value)" Then
If A(i, 7) <= 3 Then
Cells(i, 6).Resize(3, 1).Interior.Color = RGB(255, 0, 0)
End If
End If
Next
'
Application.ScreenUpdating = True
Dim mySheet As Worksheet: Set mySheet = ActiveSheet
Dim tempSheet As Worksheet: Set tempSheet = Worksheets.Add
Dim myRange As Range: Set myRange = mySheet.Range("A1").CurrentRegion
myRange.AutoFilter Field:=6, Operator:=xlFilterNoFill
myRange.Offset(1, 0).Resize(myRange.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy tempSheet.Range("A1")
mySheet.ShowAllData
myRange.Clear
tempSheet.Range("A1").CurrentRegion.Copy mySheet.Range("A1")
Application.DisplayAlerts = False
tempSheet.Delete
Application.DisplayAlerts = True
MsgBox (Timer - startTime & "秒でした")
End Sub

247 名前:デフォルトの名無しさん [2022/05/27(金) 02:06:50.25 ID:+979Xq8C0.net]
myRange.Offset(1, 0).Resize(myRange.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy tempSheet.Range("A1")
を下に修正
myRange.SpecialCells(xlCellTypeVisible).Copy tempSheet.Range("A1")

248 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 06:53:03.71 ID:0WSlRFUXd.net]
>>241
お何か良いアイデアかも
横からだけど使わせて貰おう

249 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 06:53:21.55 ID:XEPyrX550.net]
>>237
おそら>>243さんもそうかな?

あの後寝てしまい申し訳ありません。
8時くらいになるかと思いますが動かしてみますのでお待ちくださいm(__)m
夜遅くまでどうもありがとうございます!(´;ω;`)

>>238
スミマセン、・そのvariantを弄くり倒す。
からもうよくわからないレベルです。。でもありがとうございます。

>>239
基本はネットで拾ったコードを貼っているので、、
でも自分の参考にはなってます笑。
ありがとうございます。

>>241-242
ちょっと時間あるときに勉強してみますね(;^_^A

250 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 07:26:42.06 ID:XEPyrX550.net]
>>243
えっ!!何が起こったの?
こっちも5秒で終わりましたっっ!!!えええぇ信じられないスゴイスゴイ!!!(笑)

ちょっと後でゆっくりF8で動かしてみようと思います!!!
本当に助かりました!ありがとうございました!!!
(´;ω;`)



251 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 07:28:44.47 ID:XEPyrX550.net]
>>244
見落としてましたスミマセン。修正してなくてもめちゃくちゃ速く動きましたが
こちらも動かしてみますね。ありがとうございました!m(__)m

252 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 08:09:16.73 ID:XEPyrX550.net]
>>244のは見出しが消えるのを修正したコードでしたね(;^_^A

あと、会社のPCで動かしてみたら2秒もかかりませんでした。
素晴らしいコード、本当にありがとうございましたm(__)m 配列の勉強したいと思います。

253 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 08:25:54.12 ID:0WSlRFUXd.net]
質問者の要望事項がクリアだったしサンプルコードや表のイメージを出してくれたから回答がしやすかったと思います
殆どの質問者はそんな事までしないクレクレちゃんだから

254 名前:デフォルトの名無しさん (ワッチョイ c3a5-ib4B) mailto:sage [2022/05/27(金) 08:34:33 ID:XEPyrX550.net]
>>250
昔のテンプレに沿った質問の仕方してなかったのでダメ元でしたが
最低限やるべきことはクリアしてたみたいで良かったです。
(*^-^*)

255 名前:デフォルトの名無しさん (ワッチョイ df49-OVn5) mailto:sage [2022/05/27(金) 10:41:33 ID:X2EnXYhx0.net]
>>250
これはほんとにそう
ふわっと伝えるだけできちんと勝手に書いてくれると思ってるやつの多いこと

256 名前:デフォルトの名無しさん [2022/05/27(金) 11:15:34.63 ID:S0cy91Tb0.net]
エクセルで10万行以上とか設計が間違ってる

257 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 12:57:26.47 ID:fJfHid2B0.net]
定常業務としてはExcelではやらなくなるにしても、
10万行相手に、最初の試行錯誤をExcelでやってみる
というのはよくある話かと。

設計云々はそれが分かってから。

258 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 13:09:45.71 ID:X2EnXYhx0.net]
ワイの感覚では数百行とかでもExcel脱却したいし、
こんなんSQLと適当なスクリプトですぐ済むやろ
Excelになってるから重くなったりしちゃうだけで
Accessはしらん

みんなExcel万能思想すぎるんだよなあ

259 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 13:45:31.62 ID:x8n9vcRZ0.net]
職場で与えられた環境でどうにかしようとすると、
結果的にVBAやバッチファイル、PSスクリプトになる気がする

260 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 14:07:07.28 ID:s+hQ4v9CM.net]
SQL書けるんだったら
そもそも質問主はこのスレに来とらんことに気付かない、
ただのマウンテンゴリラはウセヤガレ



261 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 14:16:48.65 ID:pbjQK1XdM.net]
VBAもできないからこのスレにいるわけで、間違った道に進む前に正してあげるのは良い

262 名前:デフォルトの名無しさん mailto:sage [2022/05/27(金) 20:25:14.34 ID:e5D1B4Eg0.net]
個人用マクロブックからエクセルのシートのマクロを動かす方法がわかりました。ファィル名をtest.xlsm、シートのボタンに登録してあるマクロをsub test()~end subとして
Application.Run"'test.xlsm'!Sheet1.test"
これで動きました。Run以下をダブルクォーテーション、ファイル名をシングルクォーテーションで囲むのがポイントです。

263 名前:デフォルトの名無しさん [2022/05/28(土) 02:17:11.31 ID:wx0k8mom0.net]
そもそも個人用ってオマ環

264 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 03:26:15.21 ID:wx0k8mom0.net]
権限のない新入社員が勝手にマクロ作って社内のデータ壊したらどうなるかわかっているのかな?
そのデータほんとに削除していいのですか?
条件ミスって消してはいけないデータ削除してしまったら・・・
やろうと思えばできるけど俺は怖くて自前のマクロなんか動かしたいとは思わんのだがな

265 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 03:40:33.21 ID:Yook3X5e0.net]
>>261
データいじる前にバックアップしないのか?

266 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 05:54:52.90 ID:2n2fc/gL0.net]
>>261
間違えてデータを削除するプログラムを書いてしまうなんて普通ありえるのだろうか?AIが暴走するといかんからパソコンやスマホを使うのもやめたほうがいいレベルの発言だな

267 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 06:07:09.43 ID:PBRR2XJta.net]
>>261
なんでこんなスレ見てるんだ?

268 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 08:04:53.73 ID:oqZ/P1Bcr.net]
これをループで100個くらいのブックに処理するらしいから漏れのほうが怖いね、ワイ的には
「自動化したから漏れたんだ」とか言われたら今後やりづらくなる

269 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 09:48:04.57 ID:PJ5ZLRH80.net]
他の.xlsxのファイルの中身を、新たにExcelの画面を開かずに、
配列などに読み込む方法はありますか?
読み込みたいファイルのレコード数は毎回違うのですが、
可能なのでしょうか

270 名前:デフォルトの名無しさん (スフッ Sdb3-ibZ+) mailto:sage [2022/05/28(土) 09:52:31 ID:SCHew0ynd.net]
マクロ4.0
もしくはアドレス直指定

visible=False だと実際は開いてても見えないように出来たんだっけか?



271 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 11:35:21.85 ID:4vP5xCiD0.net]
aに16進数のABを代入するときは
a=&HAB
だけど、
aに2進数の100を代入するときはどう書く?
a=&B100
だとエラーになるんだが・・・・

272 名前:デフォルトの名無しさん [2022/05/28(土) 11:39:37.94 ID:81XaDMLN0.net]
>>263
cd /
rm -Rf *

273 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 12:20:10.23 ID:XKEF46cS0.net]
そも2進数なんてvbaにあったっけ

274 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 13:12:36.54 ID:bNMWJIq90.net]
2進数を表すリテラルはないので、16進数や8進数で代用。
変換できればいいのならワークシート関数にある。

275 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 13:19:54.56 ID:Yook3X5e0.net]
>>268
専用の命令はないことも関数のサンプルもググったらすぐ見つかったが他人を辞書代わりにするつもりとかか?

276 名前:デフォルトの名無しさん [2022/05/28(土) 14:33:33.04 ID:K6Jk35Ar0.net]
旧BASICやアセンブラ扱ってた奴なら
少なくとも1バイト、多ければ2バイトまで表現出来る
2の倍数を覚えてるから無問題

277 名前:デフォルトの名無しさん [2022/05/28(土) 15:36:05.64 ID:wx0k8mom0.net]
>>263
初心者が作ったマクロなめんなw

278 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 16:00:35.49 ID:gUD13Ggk0.net]
マーカー付折れ線グラフで、マーカーの色と透明度を変えるマクロがなんかうまく行かなくて、
折れ線の線種や色、透明度は素直に変更出来ても、
マーカーの色がデフォルトに戻ったり、透明度を変更出来なかった。

マクロの記録を取ると何やら不可解なコードになり、
再実行すると余計なコード?でエラーになったり。

日本語サイトではなかなか解決策を見つけられず、
英語サイトを漁ってみたら、だいぶ昔に整理がなされていた。

なんと、なぜか唐突に「前景色」と「背景色」をセットで指定してから
透明度を指定すると上手くいくんだと。
https://www.andypope.info/tips/tip015.htm

他にも、マーカーのスタイルを最後に指定しないと上手くいかない説(Mac版固有?)とか。
https://forum.ozgrid.com/forum/index.php?thread/78831-set-transparency-of-individual-chart-points-mac/

VBAの中で、グラフの線種やマーカー種類、色のプロパティに対して、
マーカーの体系は取って付けたというか、
なんか入り組んでて把握しにくい。

Excelの歴史の中で、これは後付けだったのかしら?

279 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 16:15:07.22 ID:2QSEcnRR0.net]
>>274
お前がその新入社員とやらに苦しめられた経験があるのは分かったから、このスレから消えろ。

280 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 17:51:43.48 ID:2n2fc/gL0.net]
>>274
初心者が作ったマクロで危険度が高いやつの具体例をあげてみて。今日中に書き込みがなければ、その程度とみなすから



281 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 19:18:12.47 ID:6Sv+ENTH0.net]
タコペッティのユーチューブチャンネルより

・週2日出社、週2日在宅の週4日勤務が最高の働き方だと提唱したい
・週休3日制になったら給料を減らされる??そんな考えだからいつまで経っても貧乏なんだよ...
・【朗報】「在宅勤務OK」の求人、コロナ前と比べて7 7倍に上昇!
・【驚愕】リモートワーク求人が13倍に増加w
リモートワークができる人とできない人とでますます格差は広がる...
・【悲報】「会社員に戻りたい!」というフリーランス、全体の3%しかいないw
・【悲報】副業が解禁されても、副業を見つけられずに困窮する会社員が続出...
  日頃から副業をやっておくことの重要性を再認識しよう
・【驚愕】5人に1人は本業よりも副業収入の方が多いことが判明w 
本業よりも稼げる副業とはなんなのか??

282 名前:デフォルトの名無しさん (ワッチョイ 518e-95+F) [2022/05/28(土) 20:21:06 ID:/6Rfh39q0.net]
>>277
幼稚な馬鹿がよく使うマウント取ったと自分で思い込むために使う言葉

何時何分何秒?
今日中に

283 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 20:58:43.99 ID:Yook3X5e0.net]
>>277
あるとしたらもともと設定してある参照先やリンクや関数とかを知らずに上書きしたうえで保存するとかかね
このセルはいじらないでくださいって手作り感のあるコメントとか見たことない?

284 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 21:54:10.82 ID:2n2fc/gL0.net]
初心者の作ったマクロに悩まされたエピソードがいくらでも出てくるかと思いきや単なる作り話かい?なめてたのはお前の方だったな

285 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 22:12:40.91 ID:IaZrO6TYM.net]
操作を間違うと処理が狂ってUsersの中身を全て消そうとしてくるマクロになら遭遇したことある
あとはシンプルにブックやシートの指定をちゃんとしてなくて別に開いてたファイルをメチャクチャにしちゃうとかがまぁよくある可愛い話

あとは別に危険ではないけど新規ブックを作成してそこにマクロを乗せてローカルで実行させるってマクロが
書き込んでくるコードにOption Exli

286 名前:citが含まれてるせいで変数の宣言を強制するにチェックを入れてるとエラー停止するマクロに遭遇した時はおったまげたな []
[ここ壊れてます]

287 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 22:16:27.20 ID:Yook3X5e0.net]
>>281


288 名前:デフォルトの名無しさん [2022/05/28(土) 22:31:28.88 ID:K6Jk35Ar0.net]
初心者でよくあるのは
「すみまdーん、先輩、SQLのDELETE文の発行部分でWHERE区付け忘れてデータ全部消しちゃいましたー」って奴かな
もちろんUPDATE区の場合もある。

当然、UT環境でテストする前だからそうそう致命的になることはないけど
その環境で同時期にテストしてた人達には平謝り、最低1日分のテストデータ作り直しになったりして白い目で見られるようになったりはするな。

289 名前:デフォルトの名無しさん mailto:sage [2022/05/28(土) 22:53:19.43 ID:OmoOa5jA0.net]
すみまdーんで吹いた

290 名前:デフォルトの名無しさん (ワッチョイ 915f-yO3c) mailto:sage [2022/05/28(土) 23:22:53 ID:ns5NBh1I0.net]
>>261


テスト・・・・


って概念無いの?



291 名前:デフォルトの名無しさん (ワッチョイ 915f-yO3c) mailto:sage [2022/05/28(土) 23:33:20 ID:ns5NBh1I0.net]
>>263
本気でsuしたあとに

cd /
rm -fr \*

の現場なら見た。悲惨だった。ずいぶん昔だけど、Unixの世界は無情だったな.

xxx ってユーティリティー供給した人がシェルスクリプト間違えて
rm -fr /usr/xxx/* ってやるところに空白入れて rm -fr /usr  /xxx/* ってやって/usr/以下全滅ってのもあったな

それでも、「なんかあったら責任取れるのか??。却下却下!!!」的な阿呆にはなりたくないよな。

その方針だと石器時代にすら進めんわ。

292 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 00:01:38.67 ID:cc4+tff/0.net]
マクロのブック自体を保存する処理なんか入れてて、しょうもない状態で保存しちゃってたのは見たな
結局以前のバージョンから戻してたけど

293 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 00:54:19.29 ID:AvSqkoWo0.net]
ここにいる的確な回答する人って絶対他の言語やってるよなって思う

294 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 01:15:45.22 ID:Tyr7S/P60.net]
いや、単にExcel歴30年以上とかのベテランでょ

295 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 03:05:24.56 ID:IyXpp6fQ0.net]
Excel歴10年以上あると、「あ。これExcel単体じゃ無理だけど、Excelを呼ぶシェルから呼べば秒」って場面ないかな?

296 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 03:06:21.80 ID:5DW63Q/F0.net]
初心者と経験者との間にはかなりの差があるのは確か

297 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 06:13:59.41 ID:1Frm/WJwa.net]
>>286
テストのつもりが間違って本番環境に接続しててぶっ壊す例なんていくらでもあるだろw

298 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 07:36:30.39 ID:6qc9k+Up0.net]
>>293
だから具体的な例をあげてみてよ。
想像でものを語るな

299 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 07:46:58.86 ID:5POrq48Ha.net]
相当具体的だと思うが?
接続文字列の内容を知りたいとかか?w

300 名前:デフォルトの名無しさん (ワッチョイ e1ac-A9Gv) mailto:sage [2022/05/29(日) 08:04:47 ID:cc4+tff/0.net]
あーコピペしてそれをループすればいいと思ったのか
N+1みたいなの書いてmax connectionsかなんかでDBに接続できなくしたのもいたなあ



301 名前:デフォルトの名無しさん (ワッチョイ 934f-XmKI) [2022/05/29(日) 08:21:24 ID:Mw5w5FDK0.net]
>>293
確かにあるあるだけど
初心者に本番環境弄らせることはまずない
そんなこさせる会社や現場は既に破綻している

302 名前:デフォルトの名無しさん (ワッチョイ 9342-HoF8) mailto:sage [2022/05/29(日) 08:33:34 ID:TXsSTtjO0.net]
あるあるだけどまずないってどっちだよ

303 名前:デフォルトの名無しさん (ワッチョイ d968-uCuR) mailto:sage [2022/05/29(日) 08:41:22 ID:3FlTI83O0.net]
たまによくあるの親戚

304 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 10:12:00.37 ID:6qc9k+Up0.net]
初心者はVBAどころか関数使うのも生意気とされる職場もあるからな。電卓で計算して結果を表に手入力してるようなとこだと

305 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 12:04:43.00 ID:g2O32ybKa.net]
>>297
> 初心者に本番環境弄らせることはまずない
お前さんの経験値が低いだけかと
> そんなこさせる会社や現場は既に破綻している
そうだね、でもあるという事実は変わらんけどね

306 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 12:08:27.47 ID:+JwoCmYYD.net]
そこマウント取ってどうするの?って話題で盛り上がるよねこのスレ

307 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 12:18:30.79 ID:6qc9k+Up0.net]
質問スレなんて基本的に初心者の来る場所なのに、そこで初心者はマクロ使うなと言われてもね

308 名前:デフォルトの名無しさん [2022/05/29(日) 12:25:41.24 ID:G+XUYeIa0.net]
VBAがExcel内の機能しか扱えないよう制限された設計になってるのならわかるが
実際にはファイルやデータベース操作、
やろうと思えばHTTP通信やUI Automationだって「できてしまう」以上、
危険な挙動は常に発生しうるでしょ

309 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 12:29:48.36 ID:Orp1XQOd0.net]
表の左にラジオボタンを配置、表をリボンのフィルタ機能で絞り混むと、ラジオボタンが大集合してしまう。
これを何とかしようとセル移動しても一緒に移動しない設定にしたら今度は絞るとラジオボタンが残ったままになる。

フィルタで絞ったところの左のボタンだけ表示させる方法教えてください。

310 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 12:30:57.02 ID:+JwoCmYYD.net]
しうるから使うなではなく、
使うなら気を付けろでいい話でしょ
本人のやらかしの責任を負うわけではないんだしさ
なんならVBAもしくはム全般でのやらかしスレでも作ってそこでやる?



311 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 12:36:51.39 ID:+JwoCmYYD.net]
>>305
ここで聞くとスレタイにちなんだ回答になるけど良い?

312 名前:デフォルトの名無しさん (ワッチョイ 1359-Qyq5) mailto:sage [2022/05/29(日) 12:50:30 ID:Orp1XQOd0.net]
>>307
先生お願いします!

313 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 13:49:12.25 ID:82tDbVM80.net]
>>303
何という結論 笑

314 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 14:16:13.78 ID:43IRGv4Ka.net]
てか、初心者云々は別にしてマクロ書かない人が来るスレじゃないでしょ

315 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 14:22:21.96 ID:Tyr7S/P60.net]
どんな層がきてるのかな?
事務員さんばかり?

316 名前:デフォルトの名無しさん [2022/05/29(日) 14:27:51.93 ID:Ocf930r70.net]
ハゲて層な人かへ来ています

317 名前:デフォルトの名無しさん [2022/05/29(日) 14:28:07.01 ID:Ocf930r70.net]
ハゲて層な人が来ています

318 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 14:47:38.40 ID:tM27peK8d.net]
むしろ剛毛で困ってるstep 3でdeleteしたいわ

319 名前:デフォルトの名無しさん [2022/05/29(日) 18:08:08.67 ID:Mw5w5FDK0.net]
>>301
そうか
破綻したブラック企業に勤めているのか
大変だな

320 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 18:28:41.40 ID:hxkiJ2jHa.net]
>>315
もう定年退職したけどうちの会社は普通に存続してるけど?
いろいろな部署があることも知らないとか零細にお勤めなのかな?w



321 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 18:47:14.53 ID:Tyr7S/P60.net]
禿と白髪だらけってどっちが印象悪い?

322 名前:デフォルトの名無しさん [2022/05/29(日) 18:53:36.06 ID:Ocf930r70.net]
ハゲです

323 名前:デフォルトの名無しさん [2022/05/29(日) 19:01:01.21 ID:5/KWOkVq0.net]
>>317
眉毛なし

324 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 19:43:11.20 ID:EFc1zn8HM.net]
エージェント47の見た目が悪いようには見えないからハゲはセーフです

325 名前:デフォルトの名無しさん (アウアウウー Sac5-AEoY) mailto:sage [2022/05/29(日) 20:10:27 ID:AWvveSwHa.net]
それはいつもの「ただしイケメンは除く」って奴だからお前らはアウトだよ

326 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 08:08:23.93 ID:OyYzutpm0.net]
白人様ならスキンヘッドが似合うから許す

327 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 08:22:04.62 ID:5eMIb3Vrd.net]
イッピーカイエー、マザファッカー

328 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 08:49:54.54 ID:6bPCzkava.net]
Excelできるヤツは禿が多い噂

329 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 10:02:36.84 ID:9WWLvtDBM.net]
なんでわかった?

330 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 10:14:24.43 ID:Yd1KWPfN0.net]
……君のような勘のいいガキは嫌いだよ



331 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 10:46:02.07 ID:111npCAX0.net]
ハゲに関する英国法廷の判決と
Calling a man ‘bald’ is sex-related harassment, employment tribunal rules
(男性を「ハゲ」と呼ぶのはセクハラ、雇用法廷の裁定)
https://www.theguardian.com/world/2022/may/13/calling-a-man-bald-is-sexual-harassment-employment-tribunal-rules

米イェール大法学部教授の反論
It’s Not Sexual Harassment to Call Someone ‘Bald’
(誰かを「ハゲ」と呼ぶのはセクシャルハラスメントではない)
https://www.bloomberg.com/opinion/articles/2022-05-17/calling-someone-bald-is-not-sexual-harassment

後者の日本語訳論
https://courrier.jp/news/archives/288609/

スレチ、お粗末。

332 名前:デフォルトの名無しさん (ワッチョイ 93ad-zgJ4) mailto:sage [2022/05/30(月) 11:31:07 ID:pTyzyEGo0.net]
ユーザーフォーム上のボタンをクリックすると、

Private Sub CommandButton1_Click()

End Sub

のように挿入されますが、この挿入位置には法則性はありますか?

333 名前:デフォルトの名無しさん (ワッチョイ 2bda-PinD) mailto:sage [2022/05/30(月) 12:13:30 ID:OyYzutpm0.net]
じゃあ今度からこのスレのみんなの事を禿って呼んでええか?

334 名前:デフォルトの名無しさん (ワッチョイ 09ce-yO3c) mailto:sage [2022/05/30(月) 12:20:22 ID:wDXjGZuh0.net]
俺はExcel全然できないんだけど

335 名前:デフォルトの名無しさん (ワッチョイ 9917-rAsz) mailto:sage [2022/05/30(月) 12:20:41 ID:Yd1KWPfN0.net]
毎回豊田真由子口調で言うなら許す

336 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 13:30:00.03 ID:0Z9/8mJh0.net]
>>328
自分で試すことってできませんか?

337 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 14:03:07.86 ID:OgQlhvU6M.net]
この、は♥げ♥

338 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 14:03:43.38 ID:OgQlhvU6M.net]
>>328
あります

339 名前:デフォルトの名無しさん [2022/05/30(月) 16:13:01.26 ID:ytFfApAu0.net]
STAP細胞はありますか?

340 名前:デフォルトの名無しさん [2022/05/30(月) 16:27:46.26 ID:Z6OL71NLa.net]
>>330
https://www.youtube.com/watch?v=VctFTEm1XTE



341 名前:デフォルトの名無しさん (ワッチョイ 93ad-zgJ4) mailto:sage [2022/05/30(月) 19:45:13 ID:pTyzyEGo0.net]
何か変な奴が増えたな。
前はまともな回答が得られたんだけど。
無職か

342 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 22:28:34.36 ID:U5Ze+/Ia0.net]
このハゲー

343 名前:デフォルトの名無しさん mailto:sage [2022/05/31(火) 05:25:49.12 ID:qZPc3K6R0.net]
この禿げぇぇぇ!!

344 名前:デフォルトの名無しさん mailto:sage [2022/05/31(火) 12:16:40.12 ID:e8W8kp4L0.net]
剃ってますが、何か?

345 名前:デフォルトの名無しさん mailto:sage [2022/05/31(火) 15:23:45.24 ID:qZPc3K6R0.net]
ツルッツル!

346 名前:デフォルトの名無しさん mailto:sage [2022/05/31(火) 17:25:59.49 ID:1k2p4OCO0.net]
頭が守られなくなるから剃らない方がいいのに

347 名前:デフォルトの名無しさん mailto:sage [2022/05/31(火) 23:09:32.48 ID:rnWQ7LEg0.net]
サマータイムめんどくせぇな…
今サマータイムかどうか表示したいんだけど誰か式作って笑
VBAでも数式でもどっちでもOK

348 名前:デフォルトの名無しさん mailto:sage [2022/05/31(火) 23:14:34.97 ID:0qvYGG5m0.net]
サマータイムは国によって違うし年によっても違う
あと自分で作らなくてもあるからぐぐれ

349 名前:デフォルトの名無しさん mailto:sage [2022/06/01(水) 10:31:55.12 ID:LqJbFkjG0.net]
ググるでググれ
何回言われたか

350 名前:デフォルトの名無しさん mailto:sage [2022/06/01(水) 18:42:16.08 ID:4MDL/f8zd.net]
2022年のサマータイムはいつから? 【開始】2022年3月27日(日)午前1時 → 午前2時へ1時間進める【終了】2022年10月30日(日)午前2時 → 午後1時へ1時間戻す(遅らせる)※スイスはUT1の国なので、上記時間にプラス1時間足した時間を基準とする。

ぐぐったらこれがでてきたからこれで計算すればいいのでは



351 名前:デフォルトの名無しさん mailto:sage [2022/06/02(木) 01:00:25.06 ID:ww3inSB20.net]
VBAでやる意味がわからん

352 名前:デフォルトの名無しさん [2022/06/02(木) 11:08:01.45 ID:MPFVtYTLa.net]
>>342
+1

いろんなものにぶつけやすいよなωωωωωωωωω

353 名前:デフォルトの名無しさん (ワッチョイ 992f-SJsm) [2022/06/02(木) 13:37:12 ID:wjg1CkCV0.net]
会社ではVBAしか使わしてくれんのじゃ。
アルツハイマーでもこれくらい分かる。

354 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 01:37:10.45 ID:d1WjLs5X0.net]
時刻の書かれたセルの編集するのか?

355 名前:デフォルトの名無しさん (スップ Sdb3-95+F) [2022/06/03(金) 02:52:19 ID:mOQ1024Gd.net]
>>350
その程度の発想しか出来ない人は書き込みしなければいいのに

356 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 05:47:43.61 ID:d1WjLs5X0.net]
>>351
自力でサマータイム求められない奴に言えよ

357 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 07:19:45.45 ID:XQuJ+afhD.net]
>>352
このスレの多くの人が当てはまってしまう

358 名前:デフォルトの名無しさん (ブーイモ MMab-yO3c) mailto:sage [2022/06/03(金) 11:29:40 ID:pHjmbkhpM.net]
夏が来れば思い出す

359 名前:デフォルトの名無しさん mailto:sage [2022/06/03(金) 15:31:03.54 ID:726WZH160.net]
サマーソルトキック

360 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 05:59:25.84 ID:nF/95LMud.net]
海外ネトゲでサマータイムに苦しめられてるから
VBAじゃないけどC#でちっこいの作ったわ



361 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 06:14:22.15 ID:nF/95LMud.net]
Application.OnTime 使えば、一分ごとに表示変えるとかできるね
あとは面倒だけどサマータイムに入る日時と出る日時計算する関数作って・・と

362 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 07:08:46.25 ID:wpuL0IDQD.net]
サマータイムこれから実装なんて何回車輪の再発明するつもりだろう

363 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 14:35:11.71 ID:2NGB/tgF0.net]
>>356
やってることruby厨と一緒だな

364 名前:デフォルトの名無しさん (ワッチョイ 1a3d-Xy6N) mailto:sage [2022/06/04(土) 15:02:27 ID:a2v34LYj0.net]
VBAで自分自身のファイル名を持ってくる場合て、
エクセルVBAなら
Debug.Print ThisWorkbook.Name
パワポVBAなら
Debug.Print ActivePresentation.Name
だけど、
そもそも自分がエクセルなのかパワポなのかを判断することてできる。ActiveDocument

365 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 16:08:31.18 ID:a2v34LYj0.net]
Excelとワードで同じVBAを流してみたんですが、挙動が異なる。
これってバグ?
https://i.imgur.com/oKs1K0l.jpg
office2013です。
Set myDocument = ActiveDocument
'Set myDocument = ActiveSheet
x = 110: y = 10: r = 100: h = 100
a = 0.3
Set shp = myDocument.Shapes.AddShape(msoShapeArc, x, y + r * (1 - a), r, r * a)
With shp
.Adjustments.Item(1) = -180
.Adjustments.Item(2) = 180
.Line.DashStyle = msoLineDash
.Line.Weight = 2
End With
Set shp = myDocument.Shapes.AddShape(msoShapeArc, x, y, r, r)
With shp
.Adjustments.Item(1) = -180
.Adjustments.Item(2) = 180
.Line.DashStyle = msoLineSolid
.Line.Weight = 2
End With

366 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 16:13:58.10 ID:tUjUVaiz0.net]
>>361
単に円の中心をどこにおいて描画するかって違いでしょ
仕様としか

367 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 18:56:04.34 ID:a2v34LYj0.net]
>>362
確かに違う。
でも、なぜWordとExcelで仕様を変える必要がある?
どっかに明記してあったけ?

368 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 19:07:16.56 ID:tUjUVaiz0.net]
>>363
考え方が逆
エクセルとワードのオブジェクトが全然別物なのに、vbaのコードが似てる事が奇跡なんだよ
俺からすれば、よくぞ無修正で動いてるなってのが素直な感想。結果が同じなんて微塵も期待しない
エクセルvbaをワードvbaに移植しようなんてそもそも思わない

369 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 21:44:29.71 ID:a2v34LYj0.net]
>>360
自己解決した。
Application.Caption
でなんとなくわかる

370 名前:デフォルトの名無しさん [2022/06/04(土) 22:59:19.25 ID:6tY8trDcd.net]
>>365
馬鹿は日記を書くな
Application.Versionだろうが



371 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 00:15:07.27 ID:LBKd1m9qd.net]
ファイル名がわかってるんなら拡張子を見れば?

372 名前:デフォルトの名無しさん [2022/06/05(日) 05:39:30.94 ID:exW/DWN40.net]
どっちも極端
Objectが別物だって理解していれば
使い回しが効く部分は使いまわせる
EXCEL VBAの使える部分をACCESSで使ったり
VBSの挙動確認のためにEXCELのVBAに
落とし込むなんてザラにあること。

373 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 06:24:20.21 ID:VDGjTDhq0.net]
>>366
バカはお前だろ。
Application.Versionで何が区別がつく。
全部同じ値だ。

374 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 07:45:08.95 ID:vTlNlLry0.net]
バカって言う方がバカなんですーの典型的な例

375 名前:デフォルトの名無しさん [2022/06/05(日) 09:11:03.70 ID:VKHbv3il0.net]
ハゲって言う方がハゲなんですーもよく当てはまる例

376 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 09:42:13.57 ID:GrqOyp5w0.net]
いいから仲良くしろください

377 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 10:32:25.90 ID:5rczsPhbD.net]
セルの書式を配列に保存しておきたい場合、
Rangeオブジェクトの配列を使わなきゃダメですか

378 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 10:55:59.24 ID:vTlNlLry0.net]
設定の情報を文字列化すればstring型でもいけるんじゃないかな?
保存したい情報が複数あるならカンマで結合してsplitで取り出せば良いだけだし

379 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 11:47:56.31 ID:eL6jNkf4d.net]
表示形式と背景色なら文字列にできるけど、書式って文字列に変換可能か?
罫線って文字列で取れたっけ

380 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 13:43:06.66 ID:vTlNlLry0.net]
罫線の有無をTrue/Falseで判定すればいけない?



381 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 14:12:04.89 ID:MGWqyCtZ0.net]
>>375
> 罫線って文字列で取れたっけ
数値(列挙値)で取れるんだからテキトーに文字列化すればいいやん

>>376
太さ、線種(鎖線とか)や色もあるから

382 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 14:15:50.06 ID:x/GFG4oyM.net]
罫線はRangeオブジェクト(のプロパティ)ではなくてBorderオブジェクト

383 名前:デフォルトの名無しさん [2022/06/05(日) 15:54:50.02 ID:udiiYXiVa.net]
// n = 1, 2, 3 or 4
b = sheet.Cells(r, c).Borders(n)
b.Weight 代入&参照
b.LineStyle 代入&参照

384 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 16:38:39.08 ID:MGWqyCtZ0.net]
>>379
斜め線もあるしそもそもXlBordersIndexは1〜4じゃないぞ
https://docs.microsoft.com/ja-jp/office/vba/api/excel.xlbordersindex

385 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 20:07:10.90 ID:dqA2RGZhd.net]
結局Rangeで格納した方が早いわな
配列が嫌ならコレクションとかでも行けるけど

386 名前:デフォルトの名無しさん mailto:sage [2022/06/05(日) 20:27:14.52 ID:GrqOyp5w0.net]
書式を保存するシートを別に作っておいたほうが楽じゃない?

387 名前:デフォルトの名無しさん (ワッチョイ 86da-fOeb) mailto:sage [2022/06/05(日) 23:49:37 ID:YrlocrIV0.net]
禿達ってなんですぐ喧嘩になるの?
お互い譲り合えば良いじゃん。

388 名前:デフォルトの名無しさん (ワッチョイ 892f-M86+) [2022/06/06(月) 00:12:23 ID:RB7fKeqq0.net]
おたがいハゲましあっていますよ

389 名前:デフォルトの名無しさん (スップ Sdea-jate) [2022/06/06(月) 00:18:34 ID:fgz41eYud.net]
>>383
みるみる毛が減るようになればわかるよ

390 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 01:40:02.35 ID:CD+x4MGM0.net]
禿鷹のくせに



391 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 01:45:08.65 ID:LVkl0QQt0.net]
そこをなんとか、Excelでwebview2を使うことは出来ませんか?

392 名前:デフォルトの名無しさん [2022/06/06(月) 03:13:52.17 ID:fgz41eYud.net]
>>386
馬鹿にするな!うっすらとまだ残っているわ!

393 名前:デフォルトの名無しさん [2022/06/06(月) 05:44:12.69 ID:RB7fKeqq0.net]
>>388
このハゲ!

394 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 10:06:09.33 ID:JILrjNOSM.net]
>>387
無理、素直に.net使え

395 名前:デフォルトの名無しさん mailto:sage [2022/06/06(月) 13:21:31.23 ID:4DEc3eXi0.net]
>>383
> お互い譲り合えば良いじゃん。

「ネコと和解せよ」
https://youtu.be/52fdqGMawwc

(逆再生という指摘もあるが・・・)

396 名前:デフォルトの名無しさん mailto:sage [2022/06/07(火) 22:41:43.65 ID:mgVGi2C30.net]
'Word,Excel,Powerpointどれでも動くようにする
Select Case True
Case Application.Caption = "Word"
Set myDocument = ActiveDocument
Case InStr(Application.Caption, "Excel") > 0
Set myDocument = ActiveSheet
Case Else
Set myDocument = ActivePresentation.Slides(1)
End Select
'あとはmyDocument.なんとかで操作すればどれでも動く。

397 名前:デフォルトの名無しさん [2022/06/08(水) 00:49:01.93 ID:cIjXs1I0d.net]
>>392
馬鹿の日記はお断り

398 名前:デフォルトの名無しさん [2022/06/08(水) 00:54:12.05 ID:jfy5wCdsM.net]
ハゲの日記なら大丈夫?

399 名前:デフォルトの名無しさん [2022/06/08(水) 00:55:55.27 ID:cIjXs1I0d.net]
今日は毛が341本抜けました

とか読みたい?

400 名前:デフォルトの名無しさん [2022/06/08(水) 01:01:21.01 ID:cIjXs1I0d.net]
唐突ですが、30歳を過ぎて頭皮を去っていく髪の毛が増えてきました。

今までは粘着力の強いコロコロで定期的に取っていましたが、これが厄介で、頭からからは簡単に抜けるくせにカーペットからはなかなか離れようとしません。
また、いくら自分の髪とはいえ、毛の大群がまとわりついたコロコロを剥がすあの瞬間が最高に嫌いでした。

勿体無いかな…でも欲しいな…など思いつつダ〇ソンのハンディタイプを買おうと迷った事もありましたが、1/5のお値段で高評価のこちらの商品でとりあえず様子見することに。外箱が思っていたよりもかなり小さく、最初は失敗したかと思いましたが、開けてみると質感も良く、これなら部屋のどこに置いても邪魔にならなそうです。

そして肝心の吸引力ですが、あんなにコロコロで取れなかった脱走兵どもが綺麗に吸い込まれていくではありませんか!

ついでにいつぞやの晩酌の際に食べこぼしたクルミの欠片など、多少大きさのある物でも綺麗に吸い込んでくれます。もしかしたらダ〇ソンはもっと強力に吸ってくれるのかもしれませんが、私と同じような悩みをお持ちの方でしたら、これで十分でしょう。アタッチメントも布団用や狭いところ用のものもついていますので便利です。

もういっそ



401 名前:、頭に直接この掃除機をかけた方が早いんじゃないかと思ってしまう程です。 []
[ここ壊れてます]

402 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 02:36:31.18 ID:3hgKnM3d0.net]
ち○毛や脇の下まで薄くなった俺は??

403 名前:デフォルトの名無しさん [2022/06/08(水) 07:20:52.11 ID:fAskgOC50.net]
ここはHGのあつまりでつね

404 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 08:24:09.17 ID:0P23HUlSM.net]
MGかPGが良いなぁ

405 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 09:48:44.91 ID:pnJSpG8Od.net]
はげもげぱげ

406 名前:228 mailto:sage [2022/06/08(水) 17:24:59.25 ID:C2b/Gc96H.net]
以前こちらでお世話になったものですが、うまくファイルに転記できないためまたお力をお借りしにきました。。

2つのブックがあって、別のブックにエリアごと(B列で判定)のデータをぺたぺた貼って保存すればOKなんですが
元データが10万行くらいあって、なぜかブックはエリアごとに保存は出来るのですが、あるはずの半分くらいのデータしかコピペできてないのです。

コピペで切り貼りしたコードで見づらいくて申し訳ありませんが、おかしいところがあれば教えていただけないでしょうか??(H列が最右の列でTOTALにあたります)

■データのイメージ 延々と下に10万行くらいあります。

A列 B列    C列     D列                                                                TOTAL
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P473ML 4960405664923 Distribution (PCW; Sales value) 0.01
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P473ML 4960405664923 Market size (Value) 339,651.60
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P473ML 4960405664923 Sales per store selling item (Unit) x1,000 5,744.20
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P473ML 4960405664923 Sales per store selling item (Value) x1,000 573,148.54
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P946ML 4960405664947 Distribution (PCW; Sales value) 0.05
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P946ML 4960405664947 Market size (Value) 697,424.54
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P946ML 4960405664947 Sales per store selling item (Unit) x1,000 6,850.74
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P946ML 4960405664947 Sales per store selling item (Value) x1,000 871,208.64
業態合算 東海 大容量 PKS SOYBIO ソイビオトウニユウY プレ-ンムトウKP400 4589850822179 Distribution (PCW; Sales value) 41.70
業態合算 関東 大容量 PKS SOYBIO ソイビオトウニユウY プレ-ンムトウKP400 4589850822179 Market size (Value) 197,839,014.22

407 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 17:26:49.54 ID:C2b/Gc96H.net]
コードです 長いので分けます

Sub Export_ExcelFile()

'変数の定義
Dim Wb1 As Worksheet, Wb2 As Workbook, FileNam As String
Dim xPath As String
Dim key As String
Dim i As Integer

Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Application.ScreenUpdating = False

'ワークシートを指定する
Set Sh1 = ThisWorkbook.Worksheets("Sheet1")

'データの始まり2行目を指定
Dim start As Long
start = 2

Set Wb1 = ActiveSheet '元シートをActiveSheetにセットする

'出力先のパスを指定
With ActiveWorkbook
xPath = .Path & "\" 'ファイルが置いてあるフォルダからのパスを指定
End With

408 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 17:27:20.86 ID:C2b/Gc96H.net]
'エリアが空欄の位置までループ
Do While Sh1.Cells(start, 2) <> ""

Set Wb2 = Workbooks.Add ' 新規ブック作成
Set Sh2 = Wb2.Worksheets("Sheet1") '新規ブックのシートを指定

'ファイル名に付ける日付を取得
Dim strDate As String
strDate = DateSerial(Year(Now), Month(Now), Day(Now))
strDate = Format(strDate, "yyyymmdd")

'Excelファイル出力
FileNam = xPath & Sh1.Cells(start, 2).Value & "" & strDate & ".xlsx"


'コピー元の最初のエリア名を取得
key = Sh1.Cells(start, 2).Value

'同じエリア名が続く間はループ
Sh1.Activate
Do While Sh1.Cells(start, 2).Value = key

'データ行に色をつける
Cells(start, 7).Resize(1, 1).Interior.Color = RGB(255, 0, 0)
'Cells(i, 7).Resize(1, 1).Interior.Color = RGB(255, 0, 0)
i = i + 1 'コピー先の行を一つ下にずらす。
start = start + 1 'コピー元のエリア名行を一つ下にずらす。

Loop

409 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 17:27:41.62 ID:C2b/Gc96H.net]
Dim mySheet As Worksheet: Set mySheet = ActiveSheet

'赤く塗られた行をソートしてコピペする
Dim myRange As Range: Set myRange = mySheet.Range("A1").CurrentRegion
myRange.AutoFilter Field:=7, Criteria1:=RGB(255, 0 _
, 0), Operator:=xlFilterCellColor


myRange.SpecialCells(xlCellTypeVisible).Copy
Sh2.Activate

Range("A1").Select
ActiveSheet.Paste
Sh2.Range("G:G").Interior.Pattern = xlNone

mySheet.ShowAllData

Sh1.Range("G:G").Interior.Pattern = xlNone

'分割したファイルを保存して閉じる
Wb2.SaveAs Filename:=FileNam ' 同一フォルダに保存して閉じる
Wb2.Close
'分割ファイルのブックを解放
Set Wb2 = Nothing

Loop
Application.ScreenUpdating = True

MsgBox "終わったよ"

End Sub

410 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 17:31:00.27 ID:C2b/Gc96H.net]
元データを少なくして全部で50行くらいにしたら上手くファイルを分けて保存出来てたんですが、、、
もし問題点がお分かりになる方いらっしゃったらよろしくお願いしたいです(>_<)



411 名前:デフォルトの名無しさん [2022/06/08(水) 18:24:26.53 ID:38a4SNrC0.net]
integerの最大っていくつまでだっけ?

412 名前:デフォルトの名無しさん [2022/06/08(水) 18:40:07.58 ID:lFvBESVva.net]
2 ^ 15 - 1 = 32767 じゃね

413 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 18:40:44.71 ID:mwMQbcQT0.net]
ググれよ

414 名前:デフォルトの名無しさん (ワッチョイ c1da-/lmG) mailto:sage [2022/06/08(水) 19:08:37 ID:/v6Td7Qv0.net]
>>396
面白いんですけど何で商品の話ですか

415 名前:デフォルトの名無しさん (アウアウウー Sa11-fRoS) [2022/06/08(水) 19:25:08 ID:2MMAQscUa.net]
32bitのexcelと64bitのexcelでintの範囲違うんだろうか
(もちろんOSの話ではない)

416 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 19:34:40.24 ID:38a4SNrC0.net]
>i = i + 1 'コピー先の行を一つ下にずらす。

ってあるから貼り付け先が integer 超えたらだめじゃねって思った

417 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 19:43:22.59 ID:60yE+Uw7d.net]
Dim 残りの髪の毛 As byte
Dim 抜け毛 As LongLong

あとよろしく


418 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 19:45:48.83 ID:C2b/Gc96H.net]
>>411
なるほど!どうりで最後まで貼られてなかったんだ(´;ω;`)早速ありがとうございます。
ちょっと自分でやり直してみます!!m(__)m

419 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 19:46:53.74 ID:C2b/Gc96H.net]
>>412
流れぶった切ってゴメンなさい

でも考えすぎてハゲそうな勢いでした。。頭悪くてイヤになります。。

420 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 20:12:39.32 ID:C2b/Gc96H.net]
ダメだ、integerをlongに替えてやってみたけど
やはり半分以下しか貼られませんでした。

もう少し頑張ってみます



421 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 20:25:07.29 ID:C2b/Gc96H.net]
自己解決しました。1つのエリアの塊が飛び飛びになってたので
同じエリアのブック内で上書きされてたみたいです。

でも皆さんのおかげで解決出来ました。ありがとうございました!
またハゲそうになったらこちらに伺いたいです。。懲りずによろしくお願いいたしますm(__)m

422 名前:デフォルトの名無しさん mailto:sage [2022/06/08(水) 22:42:41.32 ID:3hgKnM3d0.net]
また毛

423 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 00:00:12.33 ID:XIUzPNKLM.net]
※よろず~ニュース

波平さん銅像に髪の毛戻る 引き抜かれてから5日の〝スピード植毛〟
https://yorozoonews.jp/article/14640597

杉田 康人

https://public.potaufeu.asahi.com/dd83-p/picture/26885823/46ac4b106abdd0873e85fa50ea6f8cbb_640px.jpg

東京都世田谷区の桜新町商店街にある人気アニメ「サザエさん」一家の銅像から引き抜かれていた髪の毛が8日、復活した。同商店街によると3日朝、波平さんのトレードマークとなっている貴重な1本毛が抜かれているのが見つかった。ワカメちゃんの頭頂部から跳ね出した〝アホ毛〟3本もなくなっていたが、商店街の依頼を受けた業者が8日午後までに修復した。

サザエさん一家は、桜新町に住んでいる設定。作者の長谷川町子氏の美術館・記念館おひざ元の桜新町商店街は、作品ゆかりのストリートとして知られる。銅像は2012年(平成24)に建立したが、商店街の担当者によると波平さんはこれまでに6度、毛を引き抜かれる憂き目に遭っている。ワカメちゃんの髪が抜かれるのは初だという。

 銅像の髪の毛は、針金にビニールをコーティングしたもの。(略)

※省略していますので全文はソース元を参照して下さい。

424 名前:デフォルトの名無しさん (ブーイモ MM39-M86+) [2022/06/09(木) 04:46:01 ID:CxlByAWLM.net]
このハゲ
      / ̄ ̄ ̄ ̄ ̄ ̄\
    /             \
   /                  ヽ 
    l:::::::::.                  | 
    |::::::::::   (●)     (●)   | 
   |:::::::::::::::::   \___/     |  
    ヽ:::::::::::::::::::.  \/     ノ

425 名前:デフォルトの名無しさん [2022/06/09(木) 19:07:14.80 ID:cD/wL2EQ0.net]
いや
お前らハゲ散らかし過ぎだろ

426 名前:デフォルトの名無しさん [2022/06/09(木) 21:45:50.80 ID:WYCVR9XP0.net]
>>420
そんなつもりは毛頭ございません

427 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 22:38:52.28 ID:pASwhhxq0.net]
パソコンばっかやっているから禿るんだわ
いい加減気がつけよ

428 名前:デフォルトの名無しさん mailto:sage [2022/06/09(木) 22:48:34.88 ID:/RbqsnKRd.net]
禿げてる奴がパソコンばっかやるようになるんだわ
人生って残酷だよな

429 名前:デフォルトの名無しさん [2022/06/10(金) 07:26:23.24 ID:1o37Jrb90.net]
もうしわ毛ありません

430 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 07:28:26.18 ID:rEbuXRdM0.net]
真面目に話すと、パソコン作業は頭使うしストレスの負荷が高いから禿やすいとは聞いた。



431 名前:デフォルトの名無しさん (ワッチョイ 1abd-+jz7) mailto:sage [2022/06/10(金) 08:55:47 ID:kCKMlptW0.net]
人間関係の煩わしさでストレスの負荷が多い場合が多いから、パソコン作業はハゲにくいらしいよ

432 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 12:04:33.87 ID:F7hdpVFcd.net]
パソコンからは強い電磁波が出てるから、パソコン作業は禿げやすいとは聞いた。

433 名前:デフォルトの名無しさん [2022/06/10(金) 12:51:05.36 ID:zP3+9Ywoa.net]
ハゲ対策の情報もいっぱい持ってるから予防できる

434 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 13:28:56.18 ID:dcEjX7ueM.net]
男性ホルモンの優位でハゲるから(*ノω・*)テヘ

435 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 13:52:15.99 ID:6StqYoESd.net]
パソコンの前でやる事と言ったらそれしか無いからな

436 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 18:44:17.05 ID:rEbuXRdM0.net]
男性ホルモンが盛んなのですから禿る

437 名前:デフォルトの名無しさん [2022/06/10(金) 22:17:29.28 ID:e4qm213id.net]
このスレで質問するレベルの馬鹿が作ったExcel表のせいで葛飾区の保育所は大騒ぎ

438 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:31:48.31 ID:lQlywAWy0.net]
エクセル2016で複数のbook開いてると単体で開いてるときよりもずっとVBAの動作が遅くなるんだけど
解決策知ってる人いる?

439 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 22:34:53.56 ID:/aCQrqDp0.net]
複数開かなきゃいいんじゃね

440 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 23:02:11.31 ID:yoZYMWv5H.net]
>>432
(´;ω;`)



441 名前:デフォルトの名無しさん mailto:sage [2022/06/10(金) 23:11:39.01 ID:rEbuXRdM0.net]
>>432
え?詳しく
ググっても詳細出てこない。
禿そうだわ

442 名前:デフォルトの名無しさん (ワッチョイ 86da-fOeb) mailto:sage [2022/06/10(金) 23:14:29 ID:rEbuXRdM0.net]
あ、葛飾区のニュース出て来た
表計算ソフト式に誤りとか最低だろう。
テストしなかったのかな?

443 名前:デフォルトの名無しさん (ブーイモ MM71-Rebr) mailto:sage [2022/06/10(金) 23:17:41 ID:Vb4kLAL3M.net]
>>436
検索初心者か?
普通にぐぐって一発で出るんだが
https://xtech.nikkei.com/atcl/nxt/news/18/13050/

444 名前:デフォルトの名無しさん (ワッチョイ 5d93-QMxd) mailto:sage [2022/06/10(金) 23:24:30 ID:bPqrOIr80.net]
どーせsubtotalじゃなくsumで小計出してたせいで合計が2重計上されたとかじゃねーの

445 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 00:03:58.02 ID:peHZyvXnd.net]
Dick A as strong
Dick B as strong

If A > B then
A = Tachi
B = Uke
End if

A => B

446 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 00:50:08.66 ID:c8NiZZbH0.net]
>>440
ツッコミどころ満載やな

447 名前:デフォルトの名無しさん [2022/06/11(土) 09:42:09.94 ID:k8BssVI/0.net]
A もB も
強そうな型だなオイ

448 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 11:19:57.24 ID:zJAfd1A70.net]
ストロングチューハイはやばい酔い方する

449 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 12:41:06.40 ID:CM4vZAaMM.net]
A = Bだとどうなるの?

450 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 14:14:10.27 ID:ZxVNHiJ20.net]
なんで竿がデカい方が攻めなんだよ
はっ倒すぞ



451 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 14:27:57.92 ID:8O7zsVZWM.net]
どこにも竿の大きさなんて書いてない
クラス定義まで見ない限り、何を比較してるのか、このコードだけではわからない
さては思い込みでコードを書いてバグを発生させちゃうタイプだな?

452 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 15:03:55.80 ID:zJAfd1A70.net]
分かってないだけでしょ

453 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 16:08:12.40 ID:ZxVNHiJ20.net]
If Dick(竿)A>DickB Then A=タチって書いてあんじゃんか

454 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 16:33:22.04 ID:k7wiIunZM.net]
Strongは精力じゃね?
大きさならSizeとかLengthとか

455 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 18:37:34.42 ID:4UGI/r2E0.net]
禿は精力が強い

456 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 19:01:23.35 ID:qcSYfg6i0.net]
B = Not(A)
じゃね

457 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 20:12:32.64 ID:VlCDkB2oM.net]
DickクラスのSizeプロパティは読み取り専用
Electプロパティは代入可能
Cumメソッドは1日5回以上使うと例外発生

458 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 21:54:22.38 ID:Ejve8RvI0.net]
ShapeとTextBoxをマクロで作ったのを
別のBookのSheetにコピペした時のフォントは
マクロ側とコピペ側だとどちらに依存しますか?

459 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 22:02:30.68 ID:TK5b+qDd0.net]
聞く前にやったほうが早いだろw

460 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 22:04:32.17 ID:XvS1eUBu0.net]
質問失礼いたします。
ユーザー定義型に以下のようなツリー型になる感じの物をPublicで宣言してて
クラスモジュールにユーザー定義型の変数を作っているのですが、
プロパティの作り方で悩んでいます。

以下標準モジュール内
Public Type MinorItemType ' 小項目
 minorItemName as String ' 小項目名
 minorItemID as Long
End Type

Public Type MajorItemType ' 大項目
 majorItemName as String ' 大項目名
 majorItemID as Long
 minorItem() as MinorItemType
End Type

以下クラスモジュール内
Dim majorItem_() as MajorItemType

この場合、以下のようにMajorItemType型のプロパティを作成して丸ごと渡すのか、
Public Property Get majorItem(ByVal num as Long) as MajorItemType
 majorItem = majorItem_(num)
End Property

それともユーザー定義型の中の変数へのプロパティを1つずつ作成するのか、
どちらが正しいのでしょうか?
ちなみに作成するプロパティは原則Getのみで、
変数に値を取得するのは、クラス内に作成したSubプロシージャで
シートへ値を取りに行かせる具合です。



461 名前:デフォルトの名無しさん (ワッチョイ ff42-kGh4) mailto:sage [2022/06/11(土) 22:38:15 ID:kVPUfUKj0.net]
正解はない

462 名前:デフォルトの名無しさん mailto:sage [2022/06/11(土) 23:57:34.93 ID:XvS1eUBu0.net]
>>456
ありがとうございます。前者の方法で行ってみます。

463 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 00:52:49.29 ID:SFQsQSvz0.net]
戦車の砲塔で行ってみてやりにくかったら変えればいいんじゃね

464 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 01:40:55.69 ID:QoN69QoAd.net]
芋芋亀してみます!

465 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 18:48:33.62 ID:cJxXuNHT0.net]
文字列の一部分に0付き右詰めの数字を入れたいのだが・・・・
a = "000000000"
b = a
Mid(a, 2, 5) = 123
Debug.Print "変更前" & b
Debug.Print "変更後" & a

 結果
変更前000000000
変更後012300000
これだと左詰めなんだが、こうなるべきじゃないの?
変更後0123 000

midにRightをかぶせてみたんだが、
Right(Mid(a, 2, 5), 3) = 123
オブジェクトが必要て言われる。
どうすればいいの?

466 名前:デフォルトの名無しさん [2022/06/12(日) 19:03:38.39 ID:M5mGZ9TuM.net]
format(123, "000000000")じゃ駄目なの?

467 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 19:09:33.96 ID:DaJUN4Jhd.net]
Mid(a, 2, 5) = 123
の右辺を数字のままにしてるからおかしくなると思うので
CStr(123)みたいに文字列にしてからセットすればいいんじゃ

468 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 19:30:47.38 ID:ImMFuzyy0.net]
むしろ
Mid(a, 2, 5) = 123
これでなんでaが012300000になるの?どう評価されてるの?

469 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 19:37:46.32 ID:ImMFuzyy0.net]
???

Sub foo()

a = 0
Mid(a, 1) = "aaa" '通る
Right(0, 2) = "bbb" 'エラー
Debug.Print a

End Sub

470 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 20:39:25.03 ID:uZt7xySi0.net]
自分ならright("000000000" & "123"の右側を取る



471 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 21:12:13.58 ID:DaJUN4Jhd.net]
ああ右詰で数字をいれたいのか
自分のレスは無視して
そもそも桁数も統一してないからそこから見直せ

472 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 21:35:58.65 ID:cJxXuNHT0.net]
Sub sample()
'01 PIC X(1)
'01 PIC 9(5)
'01 PIC X(3)
a = "A00000ABC": Debug.Print "元データ :" & a
Mid(a, 2, 5) = Format(123, "00000"): Debug.Print "パターン1:" & a
a = "A00000ABC"
Mid(a, 2, 4) = Format(123, "0000"): Debug.Print "パターン2:" & a
a = "A00000ABC"
Mid(a, 2, 5) = Format(123, "000"): Debug.Print "パターン3:" & a
a = "A00000ABC"
Mid(a, 2, 5) = 123: Debug.Print "パターン4:" & a
a = "A00000ABC"
c = "00000"
RSet c = 123
Mid(a, 2, 5) = c: Debug.Print "パターン5:" & a
End Sub

元データ :A00000ABC
パターン1:A00123ABC
パターン2:A01230ABC
パターン3:A12300ABC
パターン4:A12300ABC
パターン5:A 123ABC

パターン1が正解なんだけど、なぜパターン4は3文字分だけ書き換えるんだろう?
パターン4がOKならパターン5でもいけるような気がするが、パターン5は空白を埋める。
RSet Mid(a, 2, 5) = 123 はエラーになる

473 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 21:46:31.55 ID:ImMFuzyy0.net]
それ以前に
Mid(a, 2, 5) = Format(123, "00000")
でエラーが出ないのがおかしいだるお

474 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 21:52:55.42 ID:SFQsQSvz0.net]
ちなみに -123 のときどうする?

475 名前:デフォルトの名無しさん [2022/06/12(日) 22:19:45.52 ID:+/mRZvLHd.net]
ID:ImMFuzyy0

馬鹿は黙っていればいいのに
そうやって馬鹿を曝け出していると頭の皮膚も曝け出されるぞ

476 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 22:37:23.13 ID:aOGWTw070.net]
midステートメントは今ある文字列に対して別の文字列を被せるだけの動作だよ

477 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:03:38.74 ID:b6RzJ+XoM.net]
別の文字列を被せるのは仕様外動作だと思うけどな

478 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:07:02.46 ID:ImMFuzyy0.net]
何一つその動作がのってねぇ
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mid-function

479 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:10:22.37 ID:UzvPms3IM.net]
引数以外の手段で関数に値を代入(?)するという前代

480 名前:「聞の珍動作
何が起きるか分かったもんじゃない
[]
[ここ壊れてます]



481 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:13:02.41 ID:cJxXuNHT0.net]
つまり
Mid(a, 2, 5) = 123

aの2文字目から5文字分ところに、"123"を書き込むんだけど、
3文字しかないから、4-5文字目は何もしないてことだよね。
でも代入の原則論から言えば、足りない部分はスペースで埋めるんじゃないのか?
RSetは足りない部分はスペースで埋めてる。
まあ、それが仕様だて言えばそうだけど、
深く考えて作られてないのかな。
もし、RSetも3文字しか代入しないのなら、RIGHTやFORMATを使わなくても0埋めができるし、
単純な代入だから性能もいいはず。

482 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:16:04.57 ID:cJxXuNHT0.net]
>>473
それはmid関数。
midステートメントとは別物だよwww。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mid-statement
オレもさっき知ったんだがwww

483 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:29:45.68 ID:nFfW5LM6M.net]
そんなものがあったのか!?
けど代入元の型は文字列になってるけど数値を代入していいのか?

484 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:33:25.21 ID:ImMFuzyy0.net]
>>476
ありがとう!!!
気になって眠れないとこだった。俺の頭がおかしくなったのかと思ったわw

ステートメント、一度目を通しておいたほうがいいね
https://excel-ubara.com/EXCEL/EXCEL908.html
>>477
vbaで何をいっとるんじゃい

485 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:54:08.09 ID:cJxXuNHT0.net]
>>477
どの言語もできるような気もするが。
出来ない言語なんかあったけ?
化石のような言語のCOBOLでもできる。
COBOLだと9型の変数があって、VBA風にかくと
Dim a as 99999
a = 123
でaを00123にしてくれる。
a=RIGHT("00000" & 123,5)なんてやってるのをみて驚いたわ。

486 名前:デフォルトの名無しさん mailto:sage [2022/06/12(日) 23:56:26.34 ID:as/ibVfq0.net]
ちなみに、MidステートメントはLetステートメントと違ってヒープ領域の再確保を行わないようなので
めちゃくちゃいっぱい文字列を結合したり置き換えたりする文字列操作をMidステートメントで高速化できたりはする
色々注意しなきゃならんしめんどいけど

487 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 14:10:09.78 ID:cuhQaR4kM.net]
mid("00000",5-len(a),len(a))=a
なんてやってるの?

488 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 15:41:58.25 ID:e6QxpplAd.net]
文字列の一部分に0付き右詰めの数字を入れたいのだが・・・・
これがやりたい事なんだから
A.MIDステートメントを使うなら右辺の値を5桁固定にする
 Mid(a,2,5) = Format(123,"00000")
B.代入するの文字列を代入先の左側+5桁固定の値+代入先の右側にする
 a = Mid(a,1,1) & Format(123,"00000") & Mid(a,7,Len(a))
あたりに落ち着くのでは 
自分は誤解されないためにもBのようなコードがいいと思うけど

489 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 18:10:47.94 ID:S+tXl/uoD.net]
自分なら
right("00000" & 123, 5)
って書く

490 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 18:28:06.25 ID:CiY+fWgN0.net]
セルの書式設定に 0000# って書けばいいのに



491 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 19:38:44.31 ID:5YQd33j2d.net]
いやどうせVBAでやるならNumberFormatLocalでやろうよ

492 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 20:02:21.45 ID:3bSnFxDm0.net]
要件にもよるが正規表現とFormat()で。

493 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 21:14:24.62 ID:c4yOIzj40.net]
>>482
https://www.moug.net/tech/exvba/0140045.html
MIDステートメントのほうが速いらしい。
でもオレが試したら逆だったけど・・・・

494 名前:デフォルトの名無しさん mailto:sage [2022/06/13(月) 22:37:41.37 ID:pISmU68J0.net]
みんなのコードカッコいいわ
やっぱりコードはカッコ良くなきゃ舐められるわな

495 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 01:08:48.71 ID:GVYlqPTN0.net]
>>488
他に見るやつがいないなら動きゃいいとか思ってしまう

496 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 01:18:48.91 ID:MKKHJJii0.net]
てか若者とお年を召された方のコードの書き方が明らかに違うのだが、古臭い目新しいとかあるのかな?

497 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:02:23.05 ID:GVYlqPTN0.net]
今は可読性悪いのは駄目ってなってるけど逆に改行や変数名の長さすらケチってた時代もあった
んで言語が進化するにつれて書き方も変わっていった
今でも昔の方法で書けるっちゃ書けるけどそれが古臭いってことだと思う

498 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:07:02.10 ID:MKKHJJii0.net]
お年を召された方(60~70代)のコード見たら、やたら変数ばかり多かった印象が。
変数使わなくても普通に書けばいいじゃんて部分まで変数に入れていた。

499 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 02:33:52.97 ID:TUO2NKc8M.net]
>>492
今でもコード中に定数をそのまま書くのは別に推奨されてないぞ
せめて別の人がコードを見た時に数字の意味がわかるようにしとかないとバグの元になる

500 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 07:10:06.79 ID:r7EVbuk4D.net]
>>492のコードはVBAに限らず可読性悪そう



501 名前:デフォルトの名無しさん [2022/06/14(火) 07:54:24.65 ID:7uTlYRrCa.net]
>>492
変数にいれないで普通の書くのか?
定数なら定数として定義すると思うが

502 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 08:25:15.24 ID:bcp0w+/6d.net]
>名著「リーダブルコード」に「説明変数」という言葉が出てくる。

503 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 08:35:10.08 ID:T3k1EtCC0.net]
マジックナンバーは避けようぜ
後で見返す時に(この4って何を意味してるんだ…?)ってなると効率落ちる

504 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 08:37:28.94 ID:YQpYn/pu0.net]
郵便番号+電話番号ていう文字列があるんだが、郵便番号、電話番号を別々の変数に入れたいので
こうしてみたんだがうまくいかない。
なにか手はある?
いまType1は項目が2個だけど、なるべく一括で入れたいのだが・・・

Type Type1
Zip As String * 7
telnum As String * 11
End Type

Sub Sample()
Dim b As Type1
a = "151123408012341234"
b = a
End Sub

505 名前:デフォルトの名無しさん [2022/06/14(火) 09:04:23.14 ID:06qw5AlY0.net]
aの文字列が固定長なら
Left(a,7)
Right(a,11)
でダメなんか

506 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 09:11:18.76 ID:b1sVlKW1M.net]
>>498
C系やVBなら可能だけどVBAではWin32APIを使わないと無理
また、可能だからと言って、複数の変数に一括でデータを入れるような書き方は可読性が下がるので推奨されない

コードをコンパクトに見せたいなら代入部分を以下のようにモジュール化するのがマスト
電話をRightで取り出さないのは、固定電話は桁数が違うから

Sub SetNumbers(ByRef T As Type1, N As String)
  T.Zip = Left(N, 7)
  T.telnum = Mid(N, 8, 11)
End Sub

507 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 10:48:30.78 ID:WigeF4Tr0.net]
>>498
若干無理矢理だけどクラス使えば似たような事は出来る
Type1.cls
Private Zip_ As String * 7
Private telnum_ As String * 11
Public Property Let Default(N As String)
Zip_ = Left(N, 7)
telnum = Mid(N, 8)
End Property
Public Property Get Zip()
Zip = Zip_
End Property
Public Property Get telnum()
telnum = telnum_
End Property
デフォルトプロパティの設定がちょっとトリッキー、こことかを参考に
https://thom.hateblo.jp/entry/2015/02/16/003000
あとは
Dim a As New Type1
a = "151123408012341234"
Debug.Print a.Zip
Debug.Print a.telnum

508 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 13:04:52.31 ID:IIEda1opd.net]
>>487
何を目的とするかによるけど
速度は重視しないのであれば比較的周知されているBの方がいいのではと思うだけで
書き方なんて色々あるんだから試行錯誤すればいいと思う

509 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 13:11:14.27 ID:IIEda1opd.net]
>>498
記憶があいまいだけど
長さの合計値が同じになる変数を持つ構造体を作ってそれをLSetで代入すれば可能だと思う

Type Type1
Zip As String * 7
telnum As String * 11
End Type
Type Type2
Value As String * 18
End Type

Sub Sample()
Dim b As Type1
Dim a As Type1
a.Value = "151123408012341234"
LSet b = a
End Sub

510 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 13:57:57.06 ID:yUQgc7GAM.net]
>>503
それで代入だけは可能だけど、電話番号が10桁だと末尾に自動的にスペースが入って11文字に補正される
固定長文字列はTrimもできないから、結局構造体を使う方法はトラブルの予感しかしない



511 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 14:36:41.07 ID:IIEda1opd.net]
>>504
与えられたデータだけの回答だからね
与えられた情報以外の事をあーだこーだいう人いるけど
それはその時考えたらよくない?
そもそもそういう事を言い出したら
質問のできるできないはできないって回答になるわけだし

512 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 14:46:19.33 ID:QIi9ICtD0.net]
与えられたデータっていうか、前提条件がはっきりしないからなぁ
>郵便番号+電話番号ていう文字列がある
以外は試してみたっていうコードからの推測だしな

まあおれなら合体文字列のセッターと郵便番号、電話番号のゲッターのプロパティ持つクラス作るかなぁ
中身はLeftとMidでいいんじゃね

固定長で最速を目指すならLSetもありかもしれんが

構造体うんぬんより、固定長文字列がトラブルの予感を感じさせるんだよなぁ、いろんなところで

513 名前:デフォルトの名無しさん [2022/06/14(火) 15:27:21.00 ID:jJwMl27ba.net]
固定長文字列って文字数で良いんだっけ?
全角でもおなじ?

514 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 17:23:15.55 ID:QIi9ICtD0.net]
>>507
文字数だから全角でも同じはず
というか、文字列はユニコードってことになってるから全角とか半角とかないってことになってるんだよ、いちおう

515 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 19:35:25.43 ID:vdrsXIkl0.net]
関数2つ作ればいいのにわざわざ構造体やクラスつくる意味あんのかな
処理速度を気にするのは自力で動くの作れるようになってからだぞ

516 名前:デフォルトの名無しさん mailto:sage [2022/06/14(火) 20:24:08.87 ID:sqy53zZK0.net]
>>487
簡単にいうと、なんでもMidステートメントに置き換えれば速くなるってわけでもない(そういう使い方にはちょっと注意がいる)
あと固定長文字列はいかにも速そうだが実は可変長文字列よりパフォーマンスが落ちることが割とあって、これまた扱いに注意を要する
まずは自分の望む動作をするコードを完成させることに注力した方がいいんでないかな
(速度改善や利便性向上みたいなのはなんていうか、キリのない作業でもあるし)

517 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 07:33:40.74 ID:7lj8rf8tD.net]
>>509
クラス1つ作ればいいのにわざわざ関数2つ作る意味あんのかな、
って疑問を持つ奴もいるからどっちもどっち

518 名前:デフォルトの名無しさん [2022/06/15(水) 10:47:02.71 ID:EefWJAwfa.net]
自力でやれるなら好きに組めば良いけど
それもできない初心者だからな

519 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 11:15:30.59 ID:WoPQ0lFMd.net]
こういうやり方があるよって回答だけすればあとは質問者がそれを選択するだけでいいのに
他人の回答にケチ付けるやつはなんなんだろうと思う

520 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 11:50:46.53 ID:RetoKdFBM.net]
>>513
質問の内容(仕様)が明確じゃない部分を好き勝手に解釈した結果



521 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 12:43:33.38 ID:2pwDzYJj0.net]
>>513>>514
単に性格悪いってだけ

522 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 13:41:42.48 ID:HRaMYgOd0.net]
ユーザーフォームに毎回違う数のラベルを作った時に、それぞれのラベルでクリックイベントを作りたいのですが
ラベル数が変動するので作れません。
こういう場合、存在するどのラベルをクリックしたかを調べるにはどうすればいいですか?

523 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 14:04:25.53 ID:2pwDzYJj0.net]
>>516
昔やろうとしたけど超しんどいよ
vb6にはコントロール配列って機能があってそれを使えばよかったけど、
vbaでなぜかなくなっているので絶望的にめんどくさい
他の方法を考えたほうがいい

どうしてもやるなら「vba コントロール配列」あたりで検索して頑張ってくれ。
https://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_100_040.html

524 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 14:41:31.92 ID:EFN5k3S5d.net]
>>516
ラベルは最大数で作っといて、必要な分だけVisibleで見せる

525 名前:516 mailto:sage [2022/06/15(水) 17:15:36.58 ID:HRaMYgOd0.net]
>>517
他に方法がなさそうなのでこれでやってみます

>>518
Private Sub Label1_Click() を1000個とか作るのはちょっと汚いので止めておきます

526 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 17:23:32.33 ID:C/XRb82A0.net]
ラベルを動的に1000個作るのは汚くないのかよ

527 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 17:37:50.64 ID:fn3i9wsI0.net]
まずどうして1000個も必要なのかのほうが突っ込みどころな気がする
VBAってフォーム内でクリックした座標の検出できないのかいな

528 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 17:42:47.22 ID:Vg/305+8M.net]
クリックイベントを1000個作るぐらいならクラス化しちゃうかなぁ
どっちにしろ面倒臭いけど

大量にラベル設置した時のリネーム作業を簡単に出来る方法何かない?

529 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 17:51:28.07 ID:2pwDzYJj0.net]
いや普通につくるならプルダウンだろ
何かしらで分岐させれば3,4回の選択で済む

530 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 18:13:02.83 ID:Vg/305+8M.net]
構内マップを作らされてその上にマインスイーパみたいな升目を作らされ、機器の設置場所を設定出来るようにしたい。場所の指定は分かりづらいから文字だけにするのはNGね。なんて業務を振られる事も稀によくある



531 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 18:14:34.90 ID:C/XRb82A0.net]
何をどうしたいのか知らんし、その1000個の元データはどっからどう持ってくるのかしらんけど
Excel VBAだしな
俺ならシートで選択させてフォームのボタンかな

532 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 18:28:15.26 ID:C/XRb82A0.net]
>>524
で、それを実現するのがEXCEL VBAでラベル1000個なのか?
いろいろ検討して最終的にそれしかないとなったならまあご愁傷様
そうじゃないならあほとしか思えん

533 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 18:47:53.19 ID:Vg/305+8M.net]
それしかないじゃなくてそれしか許されないんだよ
アホかって思いながらやってるよ

534 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 18:57:22.93 ID:myHzQmQR0.net]
マス目なら座標取ればいいような気がするが許されないなら仕方がないな

535 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 19:32:37.12 ID:JFwHiHWC0.net]
a=郵便番号電話番号
b=Left(a,7)
c=Replace(a, Left(a, 7), "")

536 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 19:34:39.87 ID:8qf24aUq0.net]
1000ならまだいける、10000だったら逃げるけどな

537 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 19:40:20.96 ID:2pwDzYJj0.net]
>>529
NG

538 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 19:56:19.48 ID:y5599rfC0.net]
ワークシートの背景をマップにしてセルクリックでイメージを表示するイベント書けば?

539 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 19:57:21.42 ID:TJhxNtAv0.net]
昔ながらの紙の地図帳をイメージすればいいのか
最初のページで全体図をマッピングした概略図を掲げといて
詳細の判るまで拡大した一ページ(※)をマス目で区切って、縦に 1 2 3 横に A B C とか振り分けて
例えば B 4 とかをクリックしたら「設備名」の詳細を表示するとかか?

ユーザーフォームでそれぞれのマス目を呼び出すよりは、インデックスのSheetに全体図
そこをクリックで各Sheet (※)へジャンプとかのが楽そう  上が承認するかどうかだけど
上に承認してもらうようにサンプル作ってプレゼンしてもいいし

540 名前:デフォルトの名無しさん (スッップ Sd1f-UWq1) mailto:sage [2022/06/15(水) 21:04:50 ID:m3jNjkHdd.net]
コントロールフォームの動的配置 & クラスモジュールでイベント起こすに一票
どうせどこかでイベント共通化の処理が入るだろうからスケーラビリティ確保のためにも



541 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 21:45:31.66 ID:y5599rfC0.net]
>>534
うぬ、それが一番だと思うけど何故にエクセルなのかと思ってしまう

542 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 01:45:48.79 ID:s8B3FZ9N0.net]
1000個のラベルと見せかけて、
実は1個だけラボルが混ざってるんじゃないだろうか。

543 名前:デフォルトの名無しさん [2022/06/16(木) 07:24:34.47 ID:FKA1V1750.net]
テキストファイルを開いて1行ずつ中身を読んでます。
Open ファイル名 For Input As fNo
Line Input fNo, buff
途中まで読んだあと、先頭から読み直したいです。
ファイルを閉じてまた開くのは嫌です!
下のURLを参考にして、
FileSystemObjectを使ってすべてを1変数に読み込み
改行コードで区切って配列化して
先頭から読み直したいときは配列の先頭から読みなおし
という方法を思いつきましたがコード修正が大変なので
もっと楽な方法をご教示いただけたら幸いです。
tps://bokulog.org/vba-read-file/

544 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 07:25:26.98 ID:FKA1V1750.net]
sageそこねスミマセン

545 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 08:10:36.64 ID:fGEidPk00.net]
>>529
1桁足りないじゃんって思ったら
Optionbaseデフォルト値でやるのが普通なのか?
俺はどうにも馴染めないので1でやってるが

546 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 08:12:48.83 ID:H6wZRQj3M.net]
>>537
vbaにseekってなかったっけ?

547 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 08:52:14.47 ID:ijJBEomdd.net]
どんなコード書いててそこからどんな手直しするかわからないのに回答のしようがないよね

548 名前:デフォルトの名無しさん [2022/06/16(木) 10:17:53.34 ID:G3W4msQ6a.net]
>>537
ファイルを閉じて開き直すのが祖谷な理由が書かれてませんので
嫌でもやればいいんじゃね

549 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 10:35:38.36 ID:OXzWqs7e0.net]
IE終了したけど、今日の時点ではVBAからIE操作できた。いつまで保つか明示されてる?

550 名前:デフォルトの名無しさん [2022/06/16(木) 13:56:39.50 ID:j/xQYS4f0.net]
サポートしないだけで
PC内にIEがある限り
永久に使えるんじゃないか?



551 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 14:04:02.85 ID:9IfQq+aNM.net]
そのうち深刻な脆弱性が見つかったらセキュリティソフトでウィルス扱いされるようになって、
IEコンポをロードした瞬間にウィルス警告が出るようになるだろうな

552 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 14:55:49.33 ID:TulzdQgt0.net]
WannaCryのときMSはサポート外にパッチ出しちゃった前科あるからなあ
なんだかんだ面倒みそうでなあ

553 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 19:55:32.69 ID:g5Jzetu50.net]
>>543
7年くらい大丈夫と見たような気がする

554 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 21:22:11.67 ID:wccj32jkd.net]
>>547
何の根拠もないな
危険な脆弱性が明日見つかったらそれで終わりだよ

555 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 23:09:10.84 ID:BfseDl080.net]
https://www.ka-net.org/blog/?p=13587
素直にedgeに対応したコンポーネント出してほしいなぁ

webapiからjsonを読み込むときにIEだけはいちいちダウンロード確認のポップアップが出て止まる挙動で苦しんだ記憶があるから嫌い

556 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 02:08:51.88 ID:qX3KJPna0.net]
>>540
Seek命令あるけど、あれランダムかバイナリモード用だと思う
が、試したがシーケンシャルファイルでもバイト位置で指定できるな

557 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 07:31:22.44 ID:tno+JwDPr.net]
>>547
エッジで互換モードする期間じゃない?

558 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 08:55:59.12 ID:LpDNne3Kd.net]
IEで終了したのは「アプリ」の「サポート」だけだぞ
IEオブジェクトはしばらく残すと明言してるから、マクロから使うのはまだ問題ない

けど、猶予期間の今のうちに社内ルールの変更など根回しはちゃんとやっとけよ

559 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 13:19:56.68 ID:6WxlvkUPd.net]
IEが非対応のサイトも増えてくるから対策出来るならした方が良いのはわかってる
が現状Selenium Webdriverが最適解のようでいちいちバージョン合わせるためにダウンロードしたり記述が変わったりすげー面倒

MSがどうにかしてくれると淡い期待をしたいが

560 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 02:47:00.46 ID:x1pEIMNT0.net]
Edgeに限らず、新しくなって使いづらくなるのホント意味不明。
PC起動するとWindows11にしませんか?って言われるけど、もうお前なんか信用しとらんわ!



561 名前:デフォルトの名無しさん [2022/06/18(土) 06:12:14.25 ID:tcSE7QQr0.net]
まぁしょうがない
良かれ悪かれ何でも時代の変化で変わって行く
VBAは関係ないけどちょっと前にとあるシステムで
IE → EDGE の移行作業行ったよ
開発ツールは確かにIEの方がEDGEより
使いやすかったと思う。慣れだろうけどね。

562 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 06:56:56.06 ID:8iz4uO0y0.net]
世の中がセキュリティに舵を取るようになったからね
楽観論じゃなりゆかない時代なんだから仕方がない

563 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 08:20:33.50 ID:7fgrQLBR0.net]
セキュリティを理由に広告ゴリ押し
こうはなりたくないね

564 名前:デフォルトの名無しさん (ワントンキン MM8a-ctFn) mailto:sage [2022/06/18(土) 10:08:00 ID:SSs68PlgM.net]
もうマイクロソフトの為に仕事するのやめませんか?

565 名前:デフォルトの名無しさん (アウアウウー Sa47-iAjv) [2022/06/18(土) 10:08:32 ID:Os2AgP5Ia.net]
ieで取れなかった個人情報を集めてるからな

566 名前:デフォルトの名無しさん [2022/06/18(土) 10:59:15.44 ID:0BdDrqNN0.net]
ExcelもIEも何年も使ってないわ
kneetじゃねーよ

567 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 11:55:08.82 ID:+2kbSQo1M.net]
VBAもそろそろかな

568 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 13:40:01.62 ID:T0WefD6fd.net]
そう言われ続けて20年たった

569 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 16:09:32.02 ID:JcC1S0zs0.net]
VBA無くなればこのスレも下火になるかもな。
パワークエリスレが活気出る

570 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 16:29:16.53 ID:Es40ajdn0.net]
PowerQueryは万能じゃない
VBAと比較するもんじゃない



571 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 18:07:43.74 ID:lnn1Xxq/M.net]
PowerShellは万能だぞ
ExcelのワークシートもWEBブラウザも操作できる

572 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 18:14:09.38 ID:59smDk8ed.net]
デフォのPS 5.1はクソだけどな
BOM付きUTF-8を要求したり権限厳しかったり

573 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 01:44:47.25 ID:7uc9nhCj0.net]
万能かもしれんがVBSみたいな手軽さが無いのがな…

574 名前:デフォルトの名無しさん [2022/06/19(日) 10:44:47.27 ID:uZGRAEGZp.net]
Power shellは
.Net Freamworkが入ってなければただのShellだもんな
なら素直にVSの類いれとけばいい

575 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 21:06:19.28 ID:+DYD1D5ZM.net]
Powershell 7は.NETと関係ない汎用のコマンドラインシェル
macOSやLinux向けの製品すら存在する

576 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 21:33:18.64 ID:nfQGh1M+d.net]
追加でWebからインストールしなきゃいけないPowerShell(6以降)に存在価値はない
それが許されるんならあえてPowerShellなんて使わずとももっと優れた選択肢がいくらでもある

577 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 22:00:01.16 ID:c6U60qvsM.net]
Win11でもオプションなの?
うちいまだにWin10だからわからん

578 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 09:16:41.32 ID:ZiXH0O+ed.net]
win11でも入ってるのは5だけ
6以降はサポート期限がLTSでもリリースから2年しかないから、
仮にWindowsにプリインストールすると2年ごとにWindowsの更新で強制的にメジャーバージョンが上がって既存資産がぶっ壊れるリスクが生じる
だからどうしてもユーザーの自己責任で塩漬けにできる選択肢が必要で、Windowsの一部として扱うことが不可能なんだよ

579 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 14:59:24.30 ID:nrTPRY1Pr.net]
質問です

580 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 15:16:20.71 ID:nrTPRY1Pr.net]
質問です
ある動画で「連想配列とユーザー定義型を組み合わせると便利」ということで色々勉強していたのですが、ユーザー定義型ってpublic宣言しても別モジュールで呼び出せないですよね?
てことは別モジュールにプロシージャがあって、それを引数設定して呼び出してもエラーになりました
そこでクラスモジュールを使っても同じような事ができると聞き、クラスモジュール内に3つ型を宣言した変数を作ったのですが、それを配列に入れようとすると「配列に入れることができません」というエラーがでます
具体的には以下のとおりです
Dim c() as class1
Set c = New class1 ←ここでエラーがおきます
この記述を
Dim c() as New class1
とすればエラーは起きないのですが、別モジュールの引数に
sub test(c as New class1)と記述はできないので困っています
なにかいい方法はないでしょうか?



581 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 16:23:50.93 ID:NaTv3t2Wr.net]
すみません
私の勘違いでした
普通にユーザー定義型でできました

582 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 00:02:57.35 ID:fcQ3wVRo0.net]
ネタ投下
「貴様は一体何を仰ってるんだ」Excelマクロの納品時、担当者に言われたひと言にTwitterざわつく - 「良さを完全に殺しに来てる」の声も
https://news.mynavi.jp/article/20220620-wadai6/

583 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 01:16:32.40 ID:/230SSBOd.net]
>>576
くだらなすぎる
読むのは時間の無駄

584 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 02:03:36.70 ID:/pBOMLc50.net]
うさんくせー
セミナー屋ほど胡散臭いのはないわ、
やっぱ5ちゃんねるが一番!

585 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 07:25:36.31 ID:dKKatMvdD.net]
嘘松藁人形
手作業大好きおじさんが一人いましたって面白くもない話

586 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 07:29:12.94 ID:bFCzOkRx0.net]
話の内容はともかく客に説教とかアホすぎる

587 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 09:39:47.61 ID:fcQ3wVRo0.net]
「ミスが起こるような仕組み」でなくて、
まるっきりブラックボックスでもなく、
人が過程を辿れるようなの、作りたいな・・・
とは思う。

588 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 11:11:38.88 ID:SHGr4jOjd.net]
完全にネタ、作り話だろこれ

そもそもVBAごときでミスが起きないシステムなんて作るの不可能だし
マクロはたくさんある工程の一つに過ぎないんだから、業務全体で見ればミスが起きる余地なんてほかにいくらでもあるだろうに

589 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 11:58:03.94 ID:qNhhYbIzd.net]
話題にするだけばからしいでしょ
こんなの言ったもん勝ちだしね

590 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 12:09:22.34 ID:PZ27NODvM.net]
ブラックボックスでミスが見つけられない
を独自解釈しただけだろ



591 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 13:02:01.70 ID:acQQyPov0.net]
>>581
どうせDebug.Printするんだろうからデバッグモード付きで納品すればいいんじゃね

592 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 13:45:53.56 ID:5jQGKRYma.net]
マクロの作成頼まれたけど要求内容があまりにも怪しかったので、
マクロと一緒に「入力に対する出力が合っているか」と「そもそもの入力が誤っていないか」を簡易的に(電卓などで)求められる計算方法を渡した
そしたら約3ヶ月に一回ぐらいの割合でそもそもの入力すべきデータを誤っていたことが判明した
ってことはあったな
後で調べたら、こういうのは「封筒裏の計算」っていう手法らしいけど

593 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 13:46:18.61 ID:qNhhYbIzd.net]
>>581
保存期間なり世代管理してログ出力すればいいでしょ

594 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 15:52:29.00 ID:acQQyPov0.net]
>>586
祝儀袋の封筒に書かれた金額と入っている金が違うやんってことか
なるほど日本人はうまい例えを作るもんだと思ったら全然違ってた

595 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 17:31:38.14 ID:/pBOMLc50.net]
わろた

596 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 19:32:15.50 ID:XefayqmG0.net]
Excel2013のVBAで
Debug.Print (1 = 1) * 1
てやると-1になるけど、
セルで
=(1=1)*1
て入れると1になる。
これって不具合?

597 名前:デフォルトの名無しさん [2022/06/22(水) 19:47:11.74 ID:5Bb+Exnq0.net]
ワークシート上の(1=1)、つまりTRUE値は「1」だけど
VBAでのTrue値は「-1」だから合ってる

598 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 21:45:57.03 ID:Io6qCa48M.net]
>>576
毎日新聞の戯言

お前暇やろ

599 名前:デフォルトの名無しさん [2022/06/23(木) 00:03:21.37 ID:RpD62pBf0.net]
VBAは好き
どんな職場で働けばいいの?
正社員じゃなくていいです。

600 名前:デフォルトの名無しさん [2022/06/23(木) 06:39:08.02 ID:d1WC2qsrM.net]
>>593
事務派遣。
ゆるい職場ならvba使用が禁止されて無いから与えられた業務で使って見ればいい。



601 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 06:45:25.15 ID:ms1G02BaH.net]
ワイまさに派遣事務でたまにVBAやってこちらのみなさんにお世話になってる(*´ε`*)

602 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 07:34:26.56 ID:OFyvXiPXd.net]
>>593

日本で働くのはやめておけ
将来性無いぞ

603 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 07:40:40.65 ID:SBEKkY350.net]
>>593
派遣おすすめ
vba縛りの事務なら、めちゃくちゃ楽で定時に帰れる
そういう人を見たことある

一生生きていけるだけの金もってたら、
そういう人生送りたかったってぐらいやりたい生き方だわ []
[ここ壊れてます]

605 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 09:00:02.54 ID:KOp9wOBp0.net]
生涯困らない金があって、VBAの事務作業か  もっと他に・・ いや、どうぞご自由にだけどさ

606 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 09:06:50.94 ID:SBEKkY350.net]
>>598
一時金持っててさ、毎日酒のんでゲームしてパッパラパーな人生送ってたのよ
当然、あっという間に体壊して病院行き

適度な仕事は、自分の健康につな

607 名前:がるよ []
[ここ壊れてます]

608 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 09:13:48.26 ID:RH4NXyqT0.net]
貧困な想像力って悲しいよね

609 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 10:45:06.10 ID:omFSpe9sd.net]
VBAしかできないやりたくないような人だとしたらそのような人を使ってくれるところは少ないのでは・・・
なのでここで聞いてもいい回答はもらえないでしょ

610 名前:デフォルトの名無しさん [2022/06/23(木) 10:56:16.87 ID:M4XLJX6ga.net]
いまさらVBAには関わりたくないな
そもそもVBA自体よりもVBAを使ってる連中と関わりたくない



611 名前:デフォルトの名無しさん [2022/06/23(木) 12:20:08.77 ID:QS7NhMN+a.net]
安定のNHK

612 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 12:41:27.99 ID:8671gq8M0.net]
なんでココにいるのか?
ってツッコミ入れたら負けなんかなw

613 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 13:16:25.44 ID:Qj8PYDZt0.net]
ちがうでしょ、所謂かまってちゃんでしょ。
慰めてやるべき

614 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 13:34:30.38 ID:iXtKw0QdM.net]
プログラマからしたらVBAしか出来ないって使えないやつでしかないからなぁ

615 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 14:08:36.94 ID:SBEKkY350.net]
>>606
無知なのにテキトーに言い過ぎ

vbaは特殊で、保守がメインの現場ばかり。vba使えればそれでいい
立ち位置的にはCOBOLに近い

616 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 14:41:25.25 ID:RH4NXyqT0.net]
>>607
世の中を知らなすぎ
どんどんVBAは消えていってる
MSすらVBAではなくPython導入しようとしてたが、
openpyxlやxlwingsの出来が良かったのでそれらを薦めてるんだよ
突然IEのサポートが終わるとか言ってる奴くらいだぞ知らないの

617 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 14:45:19.51 ID:SBEKkY350.net]
>>608

だから保守メインって言ってるじゃん
新規開発なんて無く基本的に別言語とは関わりがない

618 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 14:51:02.16 ID:9dA5CJ8Sd.net]
そのツールでできるならどんなの選んでもいいだろ
>>608みたいなのはそんなこともわからず俺こんなの知ってるぜスゲーだろって言いたいだけのかまってちゃんだろ
VBAはそもそも基本的にWindowsPCなら入っているであろうExcelさえあれば
他に何も入れなくても使う事ができるという1点で他にはない優位性があるわけだし
職場によっては変なものを入れるのはNGみたいなところもあるんだから
そういう事も踏まえないでただ批判だけするのはおかしい話

619 名前:デフォルトの名無しさん [2022/06/23(木) 15:10:52.41 ID:Ukh7Grgra.net]
ほらな
やっぱりVBAだろ

620 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 15:22:59.47 ID:RH4NXyqT0.net]
>>609
VBAからPythonへのリファクタリングが進んでるって話だよ
リファクタリングって新規開発ではなく保守なんだけど理解できないようだしなw
今後もVBA使っていくつもりなら、
VBAがやがてどうなるとか調べるのはかまってちゃん以外でも当然の行為だろ
ましてや仕事なら尚のこと



621 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 15:38:55.20 ID:SBEKkY350.net]
>>612
へぇ、それは知らなかったわ、物知りだな~
具体的にはどんな案件がvbaからpythonになってるの?

622 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 15:45:42.70 ID:SBEKkY350.net]
エクセル・accessの簡易的・汎用的な入力方法を全部捨てて、
pythonで作り直す案件とはどういうものなのだろうか?
概算するまでもなくものすごく高くなるんだけど、一体どういう案件だとコストダウンになるのだろう?
早く回答してほしいなぁ。まだかなぁ

623 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 16:48:28.59 ID:RH4NXyqT0.net]
>>614
openpyxlやxlwingsって具体的な名前出してるのに調べたり理解できない奴が煽ってるのか
無知な上に調査も思考もできない役立たずがVBAだけで食っていくとか何の冗談だよ

624 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 17:06:30.04 ID:Qj8PYDZt0.net]
VBAだけじゃなくて、Excelの一通りの知識も必要では?
事務員なら

625 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 17:13:43.84 ID:SBEKkY350.net]
>>615
おう見落としてたわサンキューな
勉強してくるわ

626 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 19:20:48.18 ID:xtvi5Qi8a.net]
案件って言ってるのに
> openpyxlやxlwings
とか、アホ丸出しやんw

627 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 19:24:07.75 ID:SBEKkY350.net]
>>618
その単語だけで内容は伝わるよ

628 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 19:41:27.49 ID:T964c/cqM.net]
派遣でvbaてアホすぎるだろ

629 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 19:50:50.76 ID:YBqf9Go9H.net]
>>620
なんで?>>595だけどVBAやらされることもあるんだけど、、
まあ大したものじゃないけどね(^_^;)ちなみに女です。

630 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 20:41:26.32 ID:8GFyplgN0.net]
>>619
内容説明してみ
まあ必死ではぐらかすんだろうけどw



631 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 20:48:49.23 ID:SBEKkY350.net]
>>622
これがあればvbaをpythonに置き換えるコストがクッソ下がる。案件は基本的に何にでも対応できる
なかったらめちゃくちゃなコストになるから非現実的だと思ってた

632 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 21:09:00.04 ID:8GFyplgN0.net]
>>623
> openpyxlやxlwings
の説明なんて要らんよ
> 具体的にはどんな案件がvbaからpythonになってるの?
の回答よろしく

633 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 21:25:01.78 ID:SBEKkY350.net]
>>624
知らんよ。俺は見たことない

どんな案件にでも対応できるからユーザー側がpythonを指定して発注することは少ないだろう
開発側の好みでpythonを選んでいるだけだろうな
webサーバーで処理するという点ではエクセル→スプレッドシートの移行にかなり近い。

634 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 21:39:08.37 ID:8GFyplgN0.net]
知らんのならいちいち絡んでくるなよ...
そもそもどんな内容が伝わると思ってたんだよw

635 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 21:55:24.01 ID:SBEKkY350.net]
何でも低コストで作れる以上、具体的な案件なんてもう必要ないだろう

636 名前:デフォルトの名無しさん mailto:sage [2022/06/23(木) 22:56:14.90 ID:Qj8PYDZt0.net]
会社の人事部の仲良い人に聞いたけど、派遣君でVBAできるヤツは希少な人材と言っていたぞ
ましてやExcel自体まともに操作できない派遣が多い中で。

637 名前:デフォルトの名無しさん [2022/06/24(金) 03:54:27.16 ID:ctS3zPLY0.net]
まぁ手広くやるかVBA極めるかだろうけどある程度は手広くやらないとね
「VBAは死ぬ」と言われてもう随分経つけど一向に死ぬ気配はないのは確かだけど
VBAしか出来ないとOfficeに乗っかったアプリしか開発出来ない井の中の蛙状態になるのも確か。

それに他言語やってるとその言語の考え方も取り入れてVBA作るようになるから何かひとつやるにしても取れる手段が増えるんだよね。

まぁ個人的にはPythonは下手に手をつけると算数しか出来ないバカな俺には数学出来ないといけないお仕事が降ってきそうでちょっと敬遠するけど。

後JAVAは個人的に肌に合わなかったのでやって良かったってなるのか分からないけど、
JavaScriptはWeb系やるならまず必須になるし、とりま後はC#辺りやっとけばいいんじゃないかと思う。

638 名前:デフォルトの名無しさん [2022/06/24(金) 04:14:34.15 ID:ctS3zPLY0.net]
後、このスレには俺みたいなジジイが結構いるみたいだから話しておくと、
遠い昔まだPCがマイコンとか呼ばれていた頃、すがやみつるって「ゲームセンターあらし」とかいう漫画描いてた人が「こんにちはマイコン」ってBASICでブロックの無いブロック崩しみたいなののプログラムを作る工程を漫画で説明しながら描いてたんだけど、
ちょっと前に「こんにちはPython 」って同じ感じの内容をPython でやってるのを出してたから話のネタに買ってもいいかも知れないよ。
ただ、新品買うほどの価値があるかは微妙だから中古でもいいと思うけど。

まぁスレ違いだからこの辺にしとくわ。

639 名前:デフォルトの名無しさん [2022/06/24(金) 04:39:40.48 ID:61TcLrsp0.net]
activecellを使って掛け算をしたい時どうすればいいのか分かりません
教えていただけたら嬉しいです。
inputboxで数値を入力してその数値を使って計算したいです。計算する時にactivecellを使いたいです

640 名前:デフォルトの名無しさん (ワッチョイ 1768-GvQ2) mailto:sage [2022/06/24(金) 07:42:23 ID:24qb8CGk0.net]
>>631
Sub foo()
Debug.Print ActiveCell.Value * InputBox("")
End Sub



641 名前:デフォルトの名無しさん (アウアウウー Sa47-vQ73) [2022/06/24(金) 09:49:37 ID:K2we1Lara.net]
こういうのが尼崎事件を起こすんだろうな

642 名前:デフォルトの名無しさん [2022/06/24(金) 12:20:36.40 ID:SlsiDUV+a.net]
需要と供給

643 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 15:06:54.11 ID:kZFfj4TG0.net]
難しい話ね。
これから他の言語も必要なら習得の必要あるしね。

644 名前:デフォルトの名無しさん [2022/06/24(金) 15:26:03.25 ID:bvc+MoD20.net]
VBA覚えるの大変ですね
理解してコピペできるくらいにはなりたい

645 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 15:31:46.16 ID:RLAl6U0RH.net]
一度VBAエキスパートとか取るくらい勉強すれば
毎回Offsetの横は行が先か列が先かどっちだったかな?って(Resizeでも同じことやってる)やってるワイでも
大体コピペで作れるくらいには成長するよw

646 名前:デフォルトの名無しさん [2022/06/24(金) 19:49:28.19 ID:bvc+MoD20.net]
>>637
ありがとう
やってみるか
参考書検討しようかな

647 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 20:26:28.92 ID:oJCwQA/d0.net]
コピペしたVBAってみんな捨てて去ってるのかな、貰ったことないかも。

648 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 21:29:08.60 ID:kZFfj4TG0.net]
コピペはダメと教わったがな最初の会社で。
あちぃなしかし今日は

649 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 21:34:54.88 ID:p6zHePCT0.net]
熱がこもって32度あるわ

650 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 21:35:55.33 ID:p6zHePCT0.net]
コピペしてそのまま使うことはほぼなくなる
コンパクトにまとめないと、後で見て何書いてるかわからなくなる



651 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 23:00:17.91 ID:oJCwQA/d0.net]
ネットにうpしてあった100行のやつをコピペして100000行にしてる、コンパクトという発想がなかったわ。そもそも意味わかんない行もあるけど消すと動かないし。
後任に渡そうと思ったけど恥ずかしいからやめとくか...。
おまえら上級者なんだね。

652 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 23:49:49.39 ID:ueFhN9Vh0.net]
VBAはコピペして動くからいいよな。
Pythonはだいたい動かない。
しかも、Pythonのページ作るやつて
断片的にソースを乗っけるから、なおさら動かない。

653 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 23:54:16.48 ID:WnxbT+0Sr.net]
コピペして動かすのって怖くないか?
少ない量ならまだしも100行だと何が起きてもおかしくない

654 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 01:09:59.54 ID:XeF3ZBAK0.net]
それを修正できるスキルがあれば別かもだけど、なかなかいないのでは

655 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 08:29:17.86 ID:hk0FSiYld.net]
ネットソースだとwsの指定とか省略されててコピペじゃ怖くて使えたもんじゃない

656 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 09:09:54.09 ID:HMw3/wS6H.net]
自分で一から書ける能力があればわざわざコピーなんざしないのさ。。。(-_-)

切り貼りつぎはぎだらけで変数の宣言がぐちゃぐちゃになってる
分かってくれる人いないかな(笑)

657 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 09:43:24.30 ID:XeF3ZBAK0.net]
独創でコード書けないと保守で詰むでしょ。

658 名前:デフォルトの名無しさん [2022/06/25(土) 10:00:09.34 ID:kapo/xgia.net]
コピペが悪いのではなく、コピペで作ったコードを自分が提供した責任があるのだよ

659 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 10:15:11.28 ID:HMw3/wS6H.net]
>>649
自分だけで時間短縮のために使ってるマクロだからそんなに困らないよ

みんなに配布するレベルはこれからもしないと思う^^

660 名前:デフォルトの名無しさん [2022/06/25(土) 10:49:20.62 ID:Wc9Qs34b0.net]
>>648
分かるけど理解はしない
それを許したらそこでおしまい



661 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 10:54:34.90 ID:PITDVbGU0.net]
まあ自分で使うだけならいいんじゃね

662 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 12:26:01.77 ID:W4jZJdCLd.net]
書ける能力あっても今までに作ったコードをコピペするだろ?
場合によっては共通関数の入ったモジュール程度を持ってくるにしても
お前らもしかして同じこと1から書いてるの?

663 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 12:41:36.76 ID:7YC4We+Er.net]
別部署に行って、「規則が変わるからこのマクロも修正してくれ」って言われ、中を見てみたらセレクトメゾットやコピーメゾットが使われてた時の絶望感
「クリップボードの履歴を有効にしていると正常に作動しない事があるから必ず無効にしてくれ」ってそれ書き方おかしくないか?
そして変数の宣言が強制されていなくて更に絶望する

664 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 12:56:07.50 ID:Fu1pMYi/M.net]
>>655のレベルもたぶん似たようなもんだよ

665 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 14:57:17.56 ID:XeF3ZBAK0.net]
>>654
と言うより、作って使用したらマクロは消しているのです。
再び必要になったら1から書いてますはい。
職場のローカルルールとして。

666 名前:デフォルトの名無しさん (ワッチョイ 3f7c-PGuA) mailto:sage [2022/06/25(土) 17:13:39 ID:ehcxDoIm0.net]
>>657
ないわー
関数自体が使いまわし前提の考え方だし

667 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:43:12.02 ID:hk0FSiYld.net]
>>654
理解しないでコピペするか理解して書いたコードを使い回すかの差は途轍もなく大きい

668 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 18:56:11.02 ID:XeF3ZBAK0.net]
それどころか回りの奴らはVBAにしろExcelの学習すらやろうとしない。
仕事終わったら飲みに行く事しか考えていない。休日も何も努力しない現実。
興味ないヤツには進めてもダメなのかな

669 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 19:21:59.19 ID:WbawSRHfM.net]
VBA使いに向上心を求めるのは酷でしょ
それがないからこそVBA止まりなのに

670 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 21:29:35.48 ID:Ujo38STt0.net]
>>660
自分が使うのは勝手にしろだけど、それで優越感に浸って「周りの奴らは~」とかキモすぎだろ
たかが仕事で使うの1つのツールごとき にここまでイキれるのはヤバいわ



671 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 21:31:08.83 ID:tv1Cabyi0.net]
他はすべて負けてるから何か一つでも勝てるものがほしいんや

672 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 21:32:27.25 ID:xn3lQ0RO0.net]
レスバで勝てば世界ランクあがるしな

673 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 21:44:09.88 ID:VazVwqbS0.net]
>>647
それってコピペしただけじゃ動かないってことよね?
動くように自分で指定すると思うんだけど、こわいってのはどういう事なんだぜ?

674 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 21:53:20.34 ID:Of9vbGQH0.net]
>>663
負けの数ではお前が一番だ

675 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 22:26:51.85 ID:XeF3ZBAK0.net]
勝利するかために複雑な知識や技術を身につけているのだが??
間違ってる?

676 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 22:29:13.51 ID:hk0FSiYld.net]
>>665
wsを指定しないとActiveSheetで動こうとするから誤作動の原になる

677 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 00:40:58.82 ID:NOZ7SEa20.net]
Webbrowserで証明書を自動選択する方法は無いものでしょうか?

678 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 00:44:34.36 ID:NC1QoP++r.net]
>>667
誰に勝利するの?
何に勝利するの?

679 名前:デフォルトの名無しさん [2022/06/26(日) 07:38:11.30 ID:5vPg/0Rp0.net]
他言語やったからって
excelやVBAでやったことが無駄になることはないよ
他の言語で作ったもののUTのエビデンスをとるのに
excelがもし無ければと思うとゾッとするし
テストデータ作成にもVBA使うととっても便利な場合が多いし

680 名前:デフォルトの名無しさん (ワッチョイ 8f63-BYhf) mailto:sage [2022/06/26(日) 09:43:13 ID:/e5N//9v0.net]
エクセルのある列に数字が入ってます。
そのエクセルと同じ階層にあるフォルダの下に
上記の数字から始まる名前のフォルダがあります。
(数字のあとに日本語が付いてます)
このフォルダの探し方を教えていただきたく



681 名前:デフォルトの名無しさん (ワッチョイ 0f63-BYhf) mailto:sage [2022/06/26(日) 09:45:37 ID:Xa6L6yDT0.net]
会社のパソコンでVBAを使って
pdfをテキストへ変換しています。
(com.adobe.acrobat.plain-text)
変換処理は不安定でエラーが出ることが多いが
成功することが多いです。
しかし有料ライセンスは一切買ってもらっていません。
これはライセンス違反ですよね??
違反ならもうやめます。

682 名前:デフォルトの名無しさん (ブーイモ MM5f-c/Mv) [2022/06/26(日) 09:56:38 ID:IFq6Yt8DM.net]
>>672
num=cells(行,列).value
dirname=dir(thisworkbook.path&"\"&num&"*",vbDirectory)

683 名前:デフォルトの名無しさん (ブーイモ MM5f-c/Mv) [2022/06/26(日) 09:59:07 ID:IFq6Yt8DM.net]
dirname=dir(thisworkbook.path & "\" & num & "*", vbDirectory)

684 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 10:18:26.90 ID:6drPPg2U0.net]
>>673
PowerQueryでもAdobeのAcrobatなしで
pdfをある程度変換出来るけど?

685 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 10:25:43.07 ID:yfX3wl/l0.net]
>>673
adobeに聞けとしか

686 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 11:39:03.04 ID:XMcnD9d40.net]
EULA読んでダメって書かれてなきゃいいだろ

687 名前:デフォルトの名無しさん [2022/06/26(日) 12:11:58.60 ID:hFDBYOe90.net]
クラスが入ってるCollectionの要素を置き換えるにはどうすればよいでしょうか?

Set col(2)=New MyClass()

とやってもできないんです。

688 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 12:23:08.37 ID:tixRR40Y0.net]
置き換えはダメだからRemoveしてAdd

689 名前:デフォルトの名無しさん [2022/06/26(日) 13:30:17.16 ID:hFDBYOe90.net]
>>680
そうですか
ありがとうございます

でもなぜ置き換えできないのでしょう?
そのしくみを理解したいのですが
スキルがあがるステップだと思うので

690 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 13:35:51.31 ID:VKkh0pnir.net]
IEの入力欄に値いれるマクロ使ってたんだけど、エッジに移行して動かなくなったんよ
エッジの入力欄いじる方法ってご存知ないですか?
調べてもよくわからなくて



691 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 13:39:54.64 ID:PhXCrOZEd.net]
VBAを投げ捨ててEdgeの拡張機能を作ろう

692 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 14:11:21.83 ID:1bCfGQVkd.net]
Sendkeys

693 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 15:05:50.62 ID:WjaufMigd.net]
まだInternetExplorer.Application は有効でしょ
サポートは切れたが動かなくなる訳ない

694 名前:デフォルトの名無しさん [2022/06/26(日) 15:26:20.76 ID:hFDBYOe90.net]
なぜMsedge.Applicationにしないの?

695 名前:デフォルトの名無しさん [2022/06/26(日) 15:32:17.63 ID:hFDBYOe90.net]
クラス(例:MyClass)が入ってるCollectionの要素(つまりMyClass)をある条件でsortしたいのですが
簡単な方法はないのですよね?
これは標準モジュールにそのソート用のsubかfunctionを書くのが一般的ですか?
「ある条件」というのが複数あるので、複数個それを作るのが面倒。
あといま思い付いたけど、そのCollectionをメンバとして含む親クラスをつくり、その親クラスにその複数のsortに相当するfunctionを作るのがカッコイイです?

696 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 18:21:23.39 ID:WjaufMigd.net]
たぶん用途的にArrayListが良いと思う
>>687

697 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 21:43:05.30 ID:h799Melv0.net]
VBAのマクロ名てなにか制限ある?
Sub n98()
MsgBox "a"
End Sub
というマクロを作ったんだが、実行できない。実行ボタンがグレーアウトする。
しかも、マクロボタンを押すとセルカーソルが彼方に飛ばされるんだが

698 名前:B
https://i.imgur.com/7iCfenT.mp4
[]
[ここ壊れてます]

699 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 22:29:47.48 ID:UUS+pyK9H.net]
>>689
ワイはそのコードコピペしたらちゃんと動いたよ
モジュールのコード上でF5キー押してみたら?

700 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 22:31:36.52 ID:UUS+pyK9H.net]
マクロ名の制限ももちろんあるよ
ググればすぐ出てくるはず

だけどこのコードのマクロ名は問題無い



701 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 22:39:05.59 ID:h799Melv0.net]
>>690
VBEでF5なら動くが、
エクセル本体で開発タブのマクロボタン押すとああなる。
ちなみにバージョンは2013。
マクロ名が英字2字+数字だと、マクロボタン押すとそのアドレスのセルに飛ばされるな。
もちろんマクロは実行できない。
そんな制限あったけ?
セルのアドレスて「予約語」になるのか?

702 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 23:12:48.18 ID:47IFcp1V0.net]
>>689
excel2010だけど全く同じ現象が起こるわ
F5からじゃくてAlt+F8な

703 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 23:30:30.80 ID:CNfWwh200.net]
この画面開いたらn98セルに行って勝手に選択(コピー?)してくれる
https://i.imgur.com/8G6jMt0.png

逆に、alt+f8でマクロを開いた状態でセル選択するとテキストボックスに反映されるので、
ここは参照かなにかで連動してるっぽい
https://i.imgur.com/cIRhTsz.png

704 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 07:11:11.91 ID:KEClHONvr.net]
>>694
予約語とかセル番地名、数字始まりは駄目

705 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 07:18:40.52 ID:pJh/2YwLH.net]
>>695
セル番地もダメだったのか、ウソついてごめんなさい

706 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 07:20:43.06 ID:kD2T1aicd.net]
セル番地名ってダメだったのか

707 名前:デフォルトの名無しさん [2022/06/27(月) 07:28:39.14 ID:JHJu1s6G0.net]
For each i in collection
 if a=1 then
  if b=1 then
   if c=1 then
    Debug.print "うんこ"
   end if
  end if
 end if
next i

こんな階層はしないほうがいいですか?もしそうならどうすべきですか?
ちなみに実際の条件文はa=1などのように単純ではなくてもっと複雑怪奇で長い文字列です。

708 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 07:42:09.30 ID:/YUVVdlZD.net]
インデント揃えてれば良いんじゃない?
それかある程度深くなったら別ルーチンや関数に飛ばすとか

709 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 07:44:02.36 ID:cx09ANOo0.net]
if a=1 and b=1 and c=1
にすればすっきり

710 名前:デフォルトの名無しさん (スプッッ Sdbf-tCSL) mailto:sage [2022/06/27(月) 08:00:18 ID:qwmHCu1Hd.net]
>>700
VBAはショートサーキットじゃないから遅くなる



711 名前:デフォルトの名無しさん (ワッチョイ 3f01-DrrO) mailto:sage [2022/06/27(月) 08:05:04 ID:3L19Fpz+0.net]
>>695
それどこかに書いてある?
まあ予約語や数字始まりがダメなのはわかるけどセルアドレスは盲点だわ

712 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:20:29.88 ID:WYWqaC3Yd.net]
>>698
何がしたくてそのIF文を書いてるかわからないけどELSEに対しての記述がなければ>>700みたいな書き方にしてもいいけど
自分はその程度のネストは許容範囲だけどね
それとなんでしないほうがいいと思ったかも書くと他の回答もらえるかもね

713 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:26:36.50 ID:iDqL/u9w0.net]
年取ると4階層なんかもう見たくない

714 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:27:26.36 ID:HPVEPi/ad.net]
Excel2021でも再現したわ
セル番地はモジュール名にできないのか、知らんかった

捨て変数とか作業ファイル名なんか普通にaaa1とか使ってるから、いつひっかかってもおかしくなかったのに
思い返してみると、なぜか捨てSubはtest1とかmacro1にしてた

715 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:31:15.07 ID:iDqL/u9w0.net]
今わかってる範囲では、モジュール名にできるけど挙動が少しおかしくなる
避けられるなら避けたほうが無難だろうね

716 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:34:13.54 ID:Kt0Hv+oPd.net]
>>692
英字1文字でも3文字でも飛ばされる
なんかの裏技に使えそうな気がする
遠くのセル範囲をちょっと確認したいとか

717 名前:デフォルトの名無しさん [2022/06/27(月) 09:36:09.63 ID:kVADuAyl0.net]
>>698
いわゆる早期リターンとかガード節ってやつ

For Each i In Collection
If a <> 1 Then GoTo continue
If b <> 1 Then GoTo continue
If c = 1 Then
Debug.Print "OK"
End If
continue:
Next

718 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:50:33.84 ID:WYWqaC3Yd.net]
>>708
自分としてはもともとの判定を変更するような回答はどうかと思ったりするんだよね
複雑怪奇とかいてるのでわかりやすい回答なら「if not (a = 1) then」にしたほうがいいのではないかと
それとそこまで書いたらcの判定もcontinueで飛ばしたほうがすっきりするかと

719 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 09:53:16.46 ID:H4LNDdnJ0.net]
>>707
マクロじゃなくてジャンプでいいってなるんじゃ

720 名前:デフォルトの名無しさん [2022/06/27(月) 10:00:09.47 ID:Do3p35pda.net]
>>698
内容がわかるようにコメントつければいいんじゃね



721 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 10:15:26.20 ID:3L19Fpz+0.net]
>>705-706
モジュール名にはできないけど>>694のは手続き名だからモジュール名で修飾(※)すれば呼び出せるよ
※ マクロ名の欄に直接 Module1.n98 のように入力する

722 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 10:19:02.79 ID:iDqL/u9w0.net]
>>712
スマン、勘違いしてた

723 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 10:24:13.47 ID:3L19Fpz+0.net]
>>698
一般論としてネストは浅い方が理解しやすいからそのコードであれば>>700>>708みたいにした方が読み易い
ただ>>701が言うようにVBAにはショートサーキット(短絡評価)がないので遅くなるのはいいとしても
If N <= UBound(A) And A(N) = 1 Then ...
みたいなのは
If N <= UBound(A) Then
If A(N) = 1 Then ...
のようにする必要がある

724 名前:デフォルトの名無しさん [2022/06/27(月) 10:29:53.48 ID:kVADuAyl0.net]
まあ、複雑な判定するならメソッドに切り出すのが間違いないわな
VBEだとIDEのサポートないから若干めんどくさいけど

725 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:00:14.42 ID:tRNW+/P90.net]
>>698
賛否あると思うが
For Each i In Collection: Do
 If a <> 1 Then Exit Do
 If b <> 1 Then Exit Do
 If c <> 1 Then Exit Do
 Debug.Print "OK"
Loop: Next
みたいな書き方もある

726 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:01:13.33 ID:tRNW+/P90.net]
最後の行間違えた
Loop Until 1: Next

727 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:05:37.12 ID:zkyvRAcfa.net]
あんまりにもネストするなら、判定文(if複数)だけ別プロシージャ(Function)として外出しして、TrueかFalseを返させるようにするかな
IsGoukaku みたいなプロシージャ名にすると何したいかがわかってメンテ楽だし

728 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:29:16.42 ID:gUdOjGv30.net]
セル番地がダメならダメでいいけど、あんな挙動をするのはバグだよ。
本来はメッセージだして弾くべきじゃね?
office365でも同じならだれかMSにチクってみてくれ。
以前、MSの掲示板にWinの不具合を書いたら、
速攻で消されたが、
こっちでも確認できたから開発にレポしといたていうメールが来て感動したわ。

729 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:31:14.56 ID:iDqL/u9w0.net]
>>719
365でも同じだよ

730 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:34:53.87 ID:gUdOjGv30.net]
>>700
if a=1 and b=1 and c=1
にすると内部では判断を3回することになる。

if a=1 then
if b=1 then
if c=1 then
にすると判断は少なくなるのだから、ネストするほうが正解じゃね?
もちろん、ifを書く順番は判定が少なくするようにする必要はあるが。



731 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:48:23.44 ID:Fr547gX6r.net]
>>719
ゆうてVBAとかアプデすんの?

732 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:52:04.31 ID:iDqL/u9w0.net]
してるよ

733 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:52:52.11 ID:nfvw1vkN0.net]
セキュリティ以外で?

734 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:57:18.86 ID:iDqL/u9w0.net]
うん

735 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 11:59:27.42 ID:iDqL/u9w0.net]
頻度はwindoewsやエクセルに比べたらかなり低いけど、やってるよ
確かちょっとずつ便利になってる。本当にちょっとだけ。関数が増えたりはしていないはず。
ソース探したけど見つからねぇ

736 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 12:02:08.29 ID:nfvw1vkN0.net]
ふーん。。
まあ元号はあったね。。
古臭いよね。。

737 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 12:04:52.44 ID:nfvw1vkN0.net]
言語仕様っぽいページはあった
https://docs.microsoft.com/en-us/openspecs/microsoft_general_purpose_programming_languages/ms-vbal/d5418146-0bd2-45eb-9c7a-fd9502722c74

結局代替がないからなあ

738 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 13:50:25.11 ID:FDoLWwM/d.net]
>>718
俺も大体これでやってる

739 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 19:05:07.99 ID:IOT9Z53O0.net]
>>698
そもそもi使ってねーじゃん

740 名前:デフォルトの名無しさん [2022/06/27(月) 19:57:12.47 ID:UdQiWAN30.net]
どなたか教えてください。

売掛金消し込みのマクロを作成しています。VBAでソルバーを自動化したいと思っています。

目的セル、制約条件の参照セルの開始行が40行ごとに下がっていき、指定値は数値ではなく、セルを指定したいです。

とりあえず、全部の変数をvariant型にしてますが、なかなか上手くいきません。



741 名前:デフォルトの名無しさん [2022/06/27(月) 20:18:45.52 ID:UdQiWAN30.net]
731です。

sub ソルバー()

dim 振込1 as variant
振込1=worksheets("ソルバー").range("n2:n8")

solverok setcell:= worksheets("ソルバー").range("i3"),
maxminval:=3,
valueof:=振込1,
bychange:=worksheets("ソルバー").range("e2:e40"),
enginedesc:="grg nonliner"


solveradd celreff:=worksheets("ソルバー").range("e2:e40"),relation:=4

solversolve userfinish=true

742 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:22:23.17 ID:jYXkLZ/o0.net]
で、何がうまくいかないの?

743 名前:デフォルトの名無しさん [2022/06/27(月) 20:26:50.30 ID:UdQiWAN30.net]
>>733

ソルバーを実行しても、目的セルが0のままで指定値にと一致する金額の組み合わせが見つかりません。

どの請求分の入金なのか、突合したいです。

744 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:35:36.69 ID:9IVJ+eiIa.net]
>>734
ソルバーわからんから確認させてください
振込1って変数は配列に入れた値を指定したいものですか?それともセル自体を指定したいものですか?
前者であればそれでいいですが、後者なら変数はRange型にする上で代入時に
Set 振込1 =〇〇
としないといけませんが…

745 名前:デフォルトの名無しさん [2022/06/27(月) 20:37:19.75 ID:UdQiWAN30.net]
連投すみません。

変数宣言して、for〜next構文でe列を("e"&i+40)や、n列も("n"&i+40)みたいにしたいんです。

d列には請求金額、e列は空白、目的セルにはsumproduct関数が入ってます。

指定値セルはn2:n8で、それぞれ違う金額が入力されてます。入金額とn2:n8内の金額が一致する組み合わせの請求金額をVBAを使って、求めたいです。

746 名前:デフォルトの名無しさん [2022/06/27(月) 20:39:44.13 ID:UdQiWAN30.net]
>>735

ありがとうございます。
ヘルプを確認したら、指定値はバリアント型で書けとあったので、なんとなくvariantにしていました。

747 名前:デフォルトの名無しさん [2022/06/27(月) 20:45:55.27 ID:qw9z/asOd.net]
>>737
マルチ死ね

748 名前:デフォルトの名無しさん mailto:sage [2022/06/27(月) 20:58:49.57 ID:jYXkLZ/o0.net]
とりあえず、rangeで回すんじゃなくてcellsで回したら?
n列はcells(i,14)
e列はcells(i,5)で

749 名前:デフォルトの名無しさん [2022/06/27(月) 21:09:33.28 ID:UdQiWAN30.net]
>>739
sub または functionが定義されませんエラーが出ます…

750 名前:デフォルトの名無しさん [2022/06/27(月) 21:10:43.06 ID:UdQiWAN30.net]
>>739

cellsも以前試したんですが、上手いこといきませんでした



751 名前:デフォルトの名無しさん [2022/06/27(月) 23:45:06.09 ID:8dHt2RWvM.net]
こんな奴が作るプログラムで金勘定とか笑えるわ
己を知らないって馬鹿の特徴なんだよな

752 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 00:04:39.14 ID:41/DPGawd.net]
ソルバーってカタカナで書くの余計分からないよ
素直にSolverで良いだろうに

上の困ってるのは一旦マクロの記録で動作確認お薦め

753 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 00:07:49.75 ID:bUNh/khy0.net]
>>742
2行目はよく解る www

754 名前:デフォルトの名無しさん [2022/06/28(火) 05:51:37.94 ID:kKObdKOQ0.net]
オレオレ詐欺の手伝い?

755 名前:デフォルトの名無しさん [2022/06/28(火) 07:36:23.45 ID:XbsSoqMza.net]
>>736
なんで会計ソフト使わないの?

756 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 07:54:25.17 ID:2SIMEAUf0.net]
Excelは万能ではないから会計ソフトでやるべき事柄

757 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 08:48:25.11 ID:8yuWSL180.net]
この世で最高のコードを見かけた

With Range("F27:F56")
.Value = .Value
End With

758 名前:デフォルトの名無しさん [2022/06/28(火) 09:10:04.94 ID:3ZxXgE6I0.net]
>>748
それの意味解る?
ちょっと前に同じ様なコード載せてた人いたけど
複数範囲は一度に設定できないって嘆いていたよ

759 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 09:10:36.27 ID:a//tJk240.net]
>>732
solverを使うときのパラメーターの設定の方法が間違ってんじゃない。多分値渡しではなくsetを使うと思うよ。
まずマクロの記録もう使ってなんでもいいからsolverで問題を解いてみて、solverを使うときの正しいVBA の書き方を確認しなさい。

760 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 09:52:29.46 ID:qOxYqvDuM.net]
>>698
Ifなんたらかんたらを使わないで
B2になんか文字が入っていたらC2を
B3になんか文字が入っていたらC3を…

をスマートに書くならどう書きます?

https://i.imgur.com/5VtTNti.jpg



761 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 11:02:29.10 ID:1UWi0IGcd.net]
>>751
こんな質問してマウントとりたいんだろうか・・・
こんな質問するならそのスマートな回答も書いておけばいいのに

762 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 11:15:10.25 ID:cqDrGvOU0.net]
VBA使わなくてもセルに関数書いときゃいいんじゃね

763 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 12:14:32.96 ID:S7aFTH1NM.net]
>>751
お前Access VBAスレにExcelの質問書き込みするんじゃねーよ
迷惑だ

764 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 17:20:05.57 ID:mlWlUbMB0.net]
すみません、神様達、教えてください

エクセルVBAでは
関数内関数はどうやって作れますか?
また複数の関数を目的別に整理する方法として
パッケージやモジュール単位にまとめたり
マップに収納したりはできるのでしょうか?

765 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 17:52:33.73 ID:fjXXNeRNM.net]
>>755
できる

vbeエディタウインドウを凝視しているとやり方が判るはず

766 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 17:59:52.62 ID:8yuWSL180.net]
>>756
具体的にやり方を教えてあげなよ

767 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 18:51:45.14 ID:gpLDnVSMr.net]
>>755
関数内関数ってこれのこと?
https://www.sejuku.net/blog/28904

768 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 19:15:28.84 ID:+0CREnk7H.net]
>>756
ちょっと凝視してみます

>>758
疑似コードですけど例えば、
Function out()
 Function in1()
 End Function
Dim a=Function in2()
End Function
out=Array(in1,a)
End Function

みたいな感じで
関数outの中に関数in1を宣言したり
変数に関数を代入して、returnしたりしたいのです

769 名前:デフォルトの名無しさん [2022/06/28(火) 19:22:25.73 ID:EFCYXnQm0.net]
ローカル関数もサポートされてないし
関数をオブジェクトとして扱えないので変数への代入も無理です

770 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 19:22:27.90 ID:+0CREnk7H.net]
>>756
標準モジュール単位で関数をまとめればいいってことでしょうか?



771 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 19:29:24.91 ID:+0CREnk7H.net]
>>760
ありがとうございます
なるほどです
すっきりしました、神様ありがとう

モジュールを使いながら関数を整理するか
関数用にファイルを作って管理するかします

772 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:14:33.61 ID:a//tJk240.net]
>>761
正解です

773 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:14:53.99 ID:a//tJk240.net]
それからモジュールには適当に名前を付けることができますので

774 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:17:06.37 ID:8yuWSL180.net]
関数内関数ってのは、関数の中で定義する関数のこと
phpだと

sub foo1
if a = b then

 sub foo2
  foo2=1
 end sub

else if

 sub foo2
  foo2=2
 end sub

end sub

みたいなことができる
あんまやらんけど

775 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:22:34.06 ID:a//tJk240.net]
>>759
関数内関数をそこで書いているようなやり方ではできないけれど、どうしてもやりたければ vbe オブジェクトを定義してそこにコードを書き込むという疑似なやり方はできる。あるいはコードを作成するプロシージャを作成してそのプロシージャを呼び出して引数を渡してコード作った後、そのコードを呼び出すみたいなことはできるのかもしれない。
コードを実行中に別のコードを作成するという経験がないんでエラーが出るかどうかは分からない。

ただ面倒だし見通しも悪くなるんで外側で関数を定義した方が簡単だと思うんだけれどなぜ関数の中で関数を定義したいのでしょうか。

776 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:32:39.05 ID:+0CREnk7H.net]
>>766
ありがとうございます
vbaがエクセル前提の言語と考えると
私が考えているような関数は使うべきでもないのだなって思いました

神様たちのアドバイスに感謝です
ありがとうございました

777 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:42:12.06 ID:+0CREnk7H.net]
>>765
ありがとうございます

778 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:50:26.07 ID:+0CREnk7H.net]
>>766
なぜ関数の中で関数を定義したいのか

すべての関数を同列に記載すると見通しが悪い気がして
例えば数式に関するものなら、calcurationでまとめ
出力に関するものなら、printでまとめ
保存に関するものなら、saveでまとめ
っていうように、目的別、機能別、階層別に関数をまとめると
後で見直したときに分かりやすいかなって

さらにfacadeみたいに間口を作れば
拡張も修正もしやすいかなって思いまして

779 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:56:44.33 ID:8yuWSL180.net]
>>755
>関数内関数はどうやって作れますか?
関数内関数はない
classは貧弱だけど、ある
ただvbaそもそもの概念として、エクセルのスクリプトであるという点がある
あんまり大きなclass作りたいなら、別言語の方が良いと思う
エクセルvbaはゲームとかもキツイ(メインloopが超貧弱でvbaを起動しっぱなしだとよく落ちる)

>また複数の関数を目的別に整理する方法として
>パッケージやモジュール単位にまとめたり
>マップに収納したりはできるのでしょうか?
標準モジュール単位でまとめられるけど・・・
エクセルvbaの標準モジュールは「どのシートにも共通する処理」のような意味合いで用いられる

よくも悪くも、vbaはエクセルのためにあるので
あまり壮大な事をするのには向いていない

780 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 20:59:53.87 ID:+0CREnk7H.net]
>>770
class調べてみます!
モジュールとclassが使えれば
見やすいコードかけるかも!

そんな壮大なプログラムを作るつもりなないのですけど
一処理、一関数にしたいとなると
ある程度の単位で処理をまとめていきたいなって

ご丁寧なご解説に感謝です
ありがとう、神様!



781 名前:デフォルトの名無しさん (ワッチョイ ff02-tQxS) [2022/06/28(火) 21:13:22 ID:i28fB/zi0.net]
>>750
アドバイスありがとうございます!

入金消し込みの自動化をせよと上司からの指示で、初心者なりになんとかやってるんですが、会計ソフトの会社でもお手上げな仕組みの売掛金管理のようです。

setとcellsでなんとか、試行錯誤してやってみようと思います!

またわからなくなったら、質問させて頂きます。

782 名前:デフォルトの名無しさん (アウアウウー Sad3-/ybv) mailto:sage [2022/06/28(火) 21:26:40 ID:WQvDBuzoa.net]
十年近くぶりに触るし上級者だったとかじゃないけど
VBAで
今開いてるPhotoshopの選択しているレイヤーを基準にExcelの指定セル範囲(例:A1からA20)を1セルごとにレイヤーを1枚作りセルの中身を文字ツール(テキスト)でレイヤーを作成。
例:ExcelのA1に「あいう」、A2に「えお」、A3に「123」が入力されていたとし、指定範囲選択(A1〜A3)を、開いてるPhotoshopにレイヤー追加しながらテキストレイヤー「あいう」、「えお」、「123」を作る(計3枚)。その際、Excelに近い見た目の形で…この場合、横に少し間隔を空けて「あいう」「えお」「123」が並ぶように作成する。(文字の大きさや色は直前に使ったpxサイズ、色とする)
って出来ますか?

783 名前:デフォルトの名無しさん (ワッチョイ 3f4f-60CD) [2022/06/28(火) 21:45:50 ID:3ZxXgE6I0.net]
いや、関数内関数?
まぁ似たようなものはあるよ。
GOSUBってのが。

ただ、これも負の遺産のひとつだから
あまり使うことはお勧め出来ないけど。

784 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 21:52:47.26 ID:/U22FX/80.net]
gosubは全然違うでしょ

785 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 22:11:43.10 ID:GB8Zx7jKM.net]
関数内関数いわゆる高階関数について、VBA関数には高階関数のための機能は無いけどワークシート関数のLAMBDAが該当する

786 名前:デフォルトの名無しさん mailto:sage [2022/06/28(火) 22:18:47.50 ID:8yuWSL180.net]
確かに!その発想は正解だが・・・だが・・・

787 名前:デフォルトの名無しさん [2022/06/28(火) 23:36:42.40 ID:EFCYXnQm0.net]
>>773
COM経由で操作できるっぽい。こんなのが引っかかった
https://minatoya.work/419/

788 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 07:26:36.96 ID:f9LCV9hba.net]
>>776
お前名前に騙されやすいタイプだろw
LAMBDA は単なる関数定義で VBA スレ的にはユーザー定義関数と変わらんぞ
ユーザー定義関数はマクロブックにしか入れられないから LAMBDA が作られた

789 名前:デフォルトの名無しさん (ワッチョイ 7fda-eqyh) mailto:sage [2022/06/29(水) 08:15:54 ID:SMNkprrA0.net]
他のプログラミングと同じだと思われているのかな LAMBDA 関数は

790 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 08:48:09.67 ID:sZpGYWcf0.net]
ユーザー定義関数では(コーディング時に)関数を自作することはできるが、(実行中に)関数内で関数を定義したり
(実行中の)関数の引数に関数そのものを与えるたりすることはできない
そもそもユーザー定義関数とLAMBDA関数はまったく別のもの

Excelの新関数「LAMBDA」(ラムダ)が一般提供開始 ~Excel数式が本格的なプログラミング言語に
https://forest.watch.impress.co.jp/docs/news/1387035.html



791 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 08:51:20.38 ID:GuRBEGnka.net]
>>778
ありがとう
そこのページ起点に頑張ってみる

792 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 08:55:02.95 ID:8rr9zLPCM.net]
関数型パラダイムをサポートしている言語か、最低でもC言語などで関数ポインタを使ったことがある人でないと高階関数の概念は理解が難しい

793 名前:デフォルトの名無しさん [2022/06/29(水) 10:34:47.30 ID:7c8LgVFIa.net]
privateで良くないか

794 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 12:27:16.10 ID:f9LCV9hba.net]
>>781
高階関数の話ならそこに書いてあるMAPとかSCANがLAMBDAを受けられる様になったことを言うべき
あと関数内関数と高階関数は全く別物だし実行中に定義できるか

795 名前:かどうかも関係がない []
[ここ壊れてます]

796 名前:デフォルトの名無しさん [2022/06/29(水) 13:48:20.01 ID:Es0nfTu8a.net]
記者がアホなんやで

797 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 14:05:01.02 ID:SMNkprrA0.net]
ネットの記事って怪しかったり間違っているのが多々あるよね

798 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 14:22:16.06 ID:3IrndTU40.net]
ネットの記事だけがそうだと思ってる?

799 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 14:30:17.44 ID:par7A0IW0.net]
はい次の方

800 名前:デフォルトの名無しさん [2022/06/29(水) 14:59:30.13 ID:0RCF24VI0.net]
.Netでもひとつの壁と言われているラムダ式が
VBAどころかEXCELで使えるようになるのか。
胸熱だが脱落者も増えるだろうな。



801 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 15:07:56.16 ID:Ajq9RLSRM.net]
一般的な意味での高階関数は数学的な抽象概念としての話ではあるけど、プログラム言語としては第一級関数の実装のことを言う場合が多い
(C言語の関数ポインタのように擬似的に実現する方法もある)

高階関数
https://ja.wikipedia.org/wiki/%E9%AB%98%E9%9A%8E%E9%96%A2%E6%95%B0

第一級関数
https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E9%96%A2%E6%95%B0

802 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 15:09:05.56 ID:JurptZkT0.net]
脱落者なんて増えないさ
世の中にエクセルの全機能使いこなしてる奴なんていないからな
理解できない機能は使われないだけだよ

803 名前:デフォルトの名無しさん [2022/06/29(水) 17:35:51.56 ID:0RCF24VI0.net]
>>791
読んでてよく分からんかったけど
要はアセンブラでいうところのアドレスの間接参照とか
間接修飾とか言われているやつで
.NetではDelegate、VBAではCallByNameによるコールバックって理解でいい?

804 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 17:43:32.68 ID:8wQcCZ0gd.net]
VBAでできない事をダラダラと話さず別スレいけばいいのに

805 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 17:56:17.53 ID:vfJ3sAv3M.net]
Excelで例えるなら関数を特定のオブジェクトのメソッドとしてではなく、それ自体を実体のあるオブジェクト(あるいはコレクション)と見做すようなもの
利用側の関数内で関数オブジェクト(のようなもの)を参照する手段として関数そのものをラムダとして扱う

806 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 18:54:09.74 ID:zPLPBKg6H.net]
エクセルもVBAも詳しくないんですけど
VBAは非同期処理でコールバック関数を使わないんですか?

807 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 19:06:05.99 ID:tW8kR1cqM.net]
イベント駆動型ですから

808 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 19:13:20.08 ID:i0xj9Opya.net]
>>794
高階関数っていうのを最近覚えたんだろうな
関数内関数に1mmも関係ないのにしつこく語ってる
他の言語スレだと瞬殺されるレベルだからこんなスレで管巻くしか無いんだろうw

809 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 19:15:29.13 ID:uu2mw40gD.net]
>>796
使おうと思えば使える

810 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 21:47:59.24 ID:zPLPBKg6H.net]
>>799
コールバック関数を使えるのなら
引数に関数参照できるということです?
なら変数に関数を代入できそう



811 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 21:55:21.60 ID:zPLPBKg6H.net]
>>797
非同期処理はイベント処理に依存してるってことでしょうか?
コメントありがとうございました
VBA初心者なのでいろいろ勉強していきます

812 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 22:13:03.71 ID:sZpGYWcf0.net]
>>800
特定のオブジェクトやクラスに所属する関数やAPIなどシステムで定義された関数(メソッド)であればコールバック関数で参照することはできる
グローバルのユーザー定義の関数はラムダ式で記述するなどの手段を使わない限りは無理

813 名前:デフォルトの名無しさん (ワッチョイ 4f2f-BYhf) mailto:sage [2022/06/29(水) 22:45:43 ID:JurptZkT0.net]
コールバック「関数」とはなにを指してるんだろうかねぇ

コールバックを実現する手段はイベント以外に
CallByNameとかApplication.Runとかでまあ実現できなくはない

814 名前:デフォルトの名無しさん (JP 0Ha3-tCSL) mailto:sage [2022/06/29(水) 22:55:30 ID:zPLPBKg6H.net]
コールバック関数は何を指しているのか
なぜラムダ式が存在するのか
即時関数とラムダはどこから分岐していったのか
関数プログラミングは本当に有益なのか
本当に変数は悪者で動的型付けは悪なのか
それらはもはや哲学なのかもしれません

815 名前:デフォルトの名無しさん (ワッチョイ ff68-TsA2) mailto:sage [2022/06/29(水) 23:01:15 ID:L0Xzxy470.net]
慣れれば別にどっちでも・・・って感じになるけどな

816 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 23:50:10.86 ID:HQQahVZ60.net]
>>783

自作の階乗作らせりゃ一発だろ。Cの関数へのポインタとか、可読性0に近い。組んでて楽しいけど、1ヶ月後の自分はこれを理解できるだろうかという疑問が湧くw

817 名前:デフォルトの名無しさん [2022/06/30(木) 05:47:49.15 ID:P7B/AZjs0.net]
まぁでもあんまりVBAでコールバック使う機会ないかな
呼び出しや生成元のモジュール側の関数を
呼び出された側や生成された側から呼び出すときに
密結合になるのを避けるためくらいにしか使ってない

818 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:16:43.81 ID:1TbRNwlJH.net]
>>807
エクセルVBAでDBのデータやファイルデータを読み込むとき
非同期にならないように処理するってことなんでしょうか?
例えばフラグを立ててdo-while、breakで処理待ちしてから次の処理に進むとか?
webのように処理と表示のタイムラグを気にするようなことがないのかもしれませんね

819 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:32:44.20 ID:wDIpT9iQ0.net]
それすんごい資源食わないか?

820 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:37:53.64 ID:1TbRNwlJH.net]
>>809
vbaはコールバックを使わないということらしいのですが
コールバックを使わずに非同期処理する方法があるのでしょうか?



821 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:47:00.24 ID:NKnrqd7g0.net]
ない(もしくはめちゃ面倒だ)から諦めろ
非同期やりたいなら他の言語使え

822 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:59:35.80 ID:wyi1xEzY0.net]
VBA走らせている間に漫画でも読んどけよ

823 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 08:04:39.54 ID:1TbRNwlJH.net]
え、昨夜のレスでは非同期使えるって言われたので
多言語と同じようにpromise的な処理があるのかと思いました
非同期めちゃくちゃ面倒ってことは
エクセル処理で非同期を使うという発想が間違っているのですね

なんかいろいろ勘違いしていたみたいでした
神様、先輩方、すみませんでした

824 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 08:14:56.75 ID:CdZVH0NpM.net]
vbsとか使って外部プロセスに追い出すのが簡単だな

で、何を並列処理したいのかな?

825 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 09:30:19.73 ID:TLf+rFOod.net]
JavaScriptの経験があるなら今更VBAなんかに手を出さなくてもOfficeスクリプト使えばいいでしょ
デスクトップでもサポートされたからもうVBAいらないよ

826 名前:デフォルトの名無しさん [2022/06/30(木) 10:09:22.67 ID:P7B/AZjs0.net]
>>815
え、マジ?
もう企業や教育者向けのじゃなくても開発出来るの?

827 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 10:36:29.60 ID:3IHNP7gZd.net]
ブック1開いてマクロ実行
待ってる間にブック2開いて手作業
ブック2保存して閉じたら、そのタイミングでブック1のマクロが停止
これって仕様?

828 名前:デフォルトの名無しさん (アウアウウー Sad3-sbT5) [2022/06/30(木) 11:24:18 ID:l3rHcZB/a.net]
排他処理なにそれおいしいの?

ファイル保存したらマクロが止まるのは仕様

829 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 15:49:46.55 ID:RZ5lqdEjd.net]
VBAいじっている間にいつの間にかボタン表面が白くなって
userformの背景色や、userformで使われているボタン表面のも同じ白色に変色
まったく新しくファイルを作っても同じ現象が起きる
オフィスをインストールし直しても同じ

例外的にいつもの正常なボタンの表面色で表示されるケースがある
https://i.imgur.com/t5RFNKa.png
この現象が起きる前に作ったファイルのコピーを作る。このコピーを開く。
このとき、セキュリティ警告が出てる間はなぜか正常なボタン表面色
コンテンツ~のボタンを押した瞬間にボタンが白くなる
Workbook_Openとかはそもそもない

今のおかしな状態が黒線の左側で、右側がセキュリティ警告が出ている状態

VBEでUserForm自体・ボタン・テキストボックス、これらの背景色BackColorの値は
&H8000000F&
これって正常な値ですよね?
つまり内部的には正常な値なのに表示はいずれも真っ白

windowsやモニタの設定の影響であればセキュリティ警告が出てようが無関係に白色化しているはず


何か原因わかる方いますか?
そもそもVBAが関係しているかどうかも分からないのですが。
ちなみに他のエクセルとは無関係のソフトウェアの色は特に変化はないように思います

830 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 15:56:36.78 ID:RZ5lqdEjd.net]
>>819ですが、文章ちょっとおかしなところがありました
ユーザーフォーム上のボタンも、ワークシートに直接おくボタンも同じように白色になっているということです
そもそもボタンだけじゃなくて&H8000000F&で色が表示されている部分は
どれもおかしくなっているような状態です



831 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 16:27:38.04 ID:CdZVH0NpM.net]
たいして白くない件

832 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 16:32:48.48 ID:RZ5lqdEjd.net]
>>821
真っ白です

→は例外的に正常に表示されるケース
←が現状
https://i.imgur.com/3Hy4Ot8.png

833 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 17:41:14.60 ID:1+oYjPxt0.net]
>>810
非同期と並列処理の区別をつけろよ
非同期=コールバックでもないしな

834 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 17:47:02.54 ID:1+oYjPxt0.net]
>>819
テーマが適用されてるだけな気がする

835 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 18:26:58.93 ID:m1ZMAziu0.net]
システムカラーの値
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/system-color-constants

836 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 21:06:49.66 ID:1TbRNwlJH.net]
>>823
そうですね
コールバックがマルチスレッドって言ってるわけでも
プロセスを分けるって言ってるわけでもないです
全ての非同期処理は並列処理でもないですし
コールバックは処理なので、非同期でもないですし
VBAは初めてなのでいろいろ勉強していきます
なんか変なこと言っていたらごめんなさい

837 名前:デフォルトの名無しさん (スッップ Sd5f-gXkX) mailto:sage [2022/06/30(木) 22:28:19 ID:SUgmTyTCd.net]
自分はやりたい事の手段の一つにExcelVBAがあるだけでExcelVBAでどこまでできるかってのは気にしてない
別の言語を選択すれば可能ならExcelVBAにこだわることもないしね
勉強するあたりのレベルならExcelVBAだけでなくほかの言語も勉強したほうがいいかもね

838 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 23:19:39.52 ID:1TbRNwlJH.net]
エクセルの参加人数はすごいと思います
参加人数の多いエクセルをプラットフォームとしてデータ処理できるVBAは
他の言語には見られない参加者人数の価値があります(これを英語で何と言ったか忘れましたが)
ハードもプラットフォームも、潜在的な参加者の数で価値を測るという考え方が正しければ
エクセルVBAは他の言語をはるかに凌ぐ学習価値があると思うのです

他の言語を学習しつつもVBAも使えるというのは
とても素晴らしいことなのだと、VBA初学者としても感じています
先生方、これからもご指導いただける機会がありましたらよろしくです

839 名前:デフォルトの名無しさん [2022/07/01(金) 00:44:30.82 ID:iVoRsqHDd.net]
>>828
お前は二度と来なくていいよ

840 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 00:49:35.03 ID:T8FFb7IX0.net]
>>828
ちょっと何いってるか分からない



841 名前:デフォルトの名無しさん [2022/07/01(金) 01:26:43.65 ID:miA2ycF9M.net]
魔界に転生するとしたら、リザレクの次くらいに持っていたいスキルですもんね。
転生するまでに習得したいと思います。

842 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 01:41:24.35 ID:wxGP1WcO0.net]
シート上に実行ボタンがあり、いろいろなBookから値を取得してメインのブックに張り付けるマクロがあるのですが、
Windows7+Excel2010とWindows10+Excel2016では、2016方が数倍動作が遅いです(数秒程度が10秒程度になる)。
ただし、時々2010と同程度で終わることがあり、原因がよくわかりません。
なんか、実行ボタンの押し方によって(クリックしてマウスポインタをすぐExcelのウィンドウ外に移動)、
速度が速くなるような気がしているのですが、そのようなことはあるのでしょうか?
あるとすれば、なにか対策や原因はあるのでしょうか?

843 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 02:14:42.23 ID:u7q4KnhWd.net]
>>832
2013あたりからExcelの内部構造が大幅に変わったらしい
Windowsも新しいほど重くなってる

マウスポインタの位置によって速度が変わるのは多いにあり得る
昔はボタンを押したままにするとアプリの動作が止まってたのが、いつのまにかずっと動き続けるようになったし

844 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 06:59:23.11 ID:JTFoUJU2H.net]
>>829
DBシステムとしては
操作のバリエーション、検索、演算エンジンともに
最高峰の素晴らしい言語システムなのに
初心者に冷たいコミュニティなのですね

>>830
ネットワーク経済性と似た発想の価値測定方法で
ソフトやハードの経済価値を推定する思考方法です

845 名前:デフォルトの名無しさん [2022/07/01(金) 07:51:36.56 ID:m7rasyZv0.net]
>>834
いやいや、DBシステムとして使うとすると
シートにSQL投げようとしたとき
インデックス貼れない時点で欠陥品だよ。

EXCELの本分はあくまで表計算。

846 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 08:45:57.76 ID:Dqsnfi220.net]
>>834
まずDBシステムじゃないし
COMから学んではどうか

847 名前:デフォルトの名無しさん (ブーイモ MM4f-2lfq) mailto:sage [2022/07/01(金) 09:01:55 ID:2BH0SskNM.net]
今どき簡易DBアプリはPowerAppsみたいなローコードツールを使えばよい
オンライン共有のAccessみたいなアプリがクソ簡単に作れてExcelやスプレッドシートとの連携も容易

848 名前:デフォルトの名無しさん [2022/07/01(金) 11:26:48.78 ID:MWfPFNZsa.net]
>>832
気のせいだからほっとけ

849 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 11:27:33.06 ID:B1H2Mtvqd.net]
自分としては質問があればそれにこたえるだけでいいと思うが
技術者が他の事にも手を広げるならクソ簡単かもしれないが
一般ユーザーが背伸びしてVBAを理解しようとしてるなら保守なんかも含めてハードル高いと思うんだよね
まあ言いたい人は好き勝手に言うだけだから止められないが

850 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 11:46:09.70 ID:Kpd5ohp2M.net]
自分としては質問があれば質問するだけでいいと思うが
一般ユーザーが背伸びして回答なんかハードル高いと思うんだよね
まあ言いたい人は好き勝手に言うだけだから止められないが



851 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 15:15:30.41 ID:Bx5b0a9x0.net]
大事な事だから二度と言うな

852 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 15:46:06.01 ID:Ry4wIvAM0.net]
どっちだよw

853 名前:デフォルトの名無しさん [2022/07/01(金) 15:50:37.55 ID:E3WEdYada.net]
背伸び?逆やろ
背伸びしようとするタイプはVBAなんて使わない
伸びない香具師がVBAに固執してる

854 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 15:51:42.30 ID:S5EpTQdXM.net]

「いいですか?1回しか言いませんからよく聞いてくださいね」
って言われたけど、なんで大事なことなのに1回しか言わないんだろう
そんなに大事なら確実に伝わるまで何回でも言うか書いて渡すかすべきだろ

855 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 15:56:44.16 ID:wWku/Klda.net]
俺、一回しか教えねーぞ!
やるから見て覚えろ盗んで覚えろな!
これ、昭和の意地悪い上司。
それが当たり前だった時代

856 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 15:57:57.34 ID:Ry4wIvAM0.net]
>>844
そうそう
アホちゃうの

857 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 15:59:37.00 ID:wWku/Klda.net]
>>843
めっちゃ分かる
何がなんでもマクロでやっているヤツって何なんだろうね

858 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 17:12:32.89 ID:B9UYAOsl0.net]
>>844 みたいな考えの奴はたいていちゃんと聞いてないしメモ渡しても無くしたりするしw

859 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 17:35:59.70 ID:Ry4wIvAM0.net]
>>848
メモ渡すってアホなん

860 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 17:57:54.04 ID:Dqsnfi220.net]
>>848
そういう奴でも同じ事何回か教えりゃ覚えるから、
分かんなかったらいくらでもまた聞けって言ってる
目的は教育コストの削減とかそいつの成長とかじゃなく仕事の完了な訳だから



861 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 18:43:10.74 ID:miA2ycF9M.net]
いやこれ、あわしろっていう新手の荒らしですよ。

862 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 19:33:27.88 ID:rTaPWcb90.net]
昭和からEXCEL使ってた人いる?

863 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 19:34:18.95 ID:B9UYAOsl0.net]
>>850
その場限りの相手ならそれが正解だけど>>849 みたいなポンコツは成長しないから今後とも仕事させるならとっとと切り捨てないと結局仕事の完了が遅れるだけ

864 名前:デフォルトの名無しさん [2022/07/01(金) 19:41:46.04 ID:m7rasyZv0.net]
>>852
そもそも昭和の時代にEXCELあったっけ?
あの頃ってロータス123とか
マルチプランの時代じゃないの?

865 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 19:42:01.43 ID:Gg+5fIBkM.net]
>>853
そういうことを言い出したら極論VBA使いもクビにして優秀なエンジニア雇えという結論にしかならん
雇用維持も企業の責任

866 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 19:52:08.13 ID:lB7C8CJv0.net]
>>833
複数のブックを別ウインドウで開くようになったからな
個人的にはユーザーフォームが最前面に来ないのがめんどい

867 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 19:52:42.66 ID:lB7C8CJv0.net]
あと最小化するとユーザーフォームも消えるのが嫌だな

868 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 20:32:48.53 ID:B9UYAOsl0.net]
>>854
最初の日本語版は1989年(平成元年)リリースだから日本語版を使ってた人は居ないはず
最初のExcelはMac用に1985年(昭和60年)にリリースされてるみたいだからもしかしたら触った人がいるかもしれない

869 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 20:38:52.77 ID:B9UYAOsl0.net]
>>855
別に辞めさせなくてもポンコツはポンコツで務まるような職場に移せば良いだけだろ

870 名前:デフォルトの名無しさん [2022/07/01(金) 21:05:26.47 ID:0+5KhUlf0.net]
vbエディターを開いたときに開いているブックのモジュールやらUFやらがバーっと開くのを止めさせたいんですが、どなたかご存じないですか?毎回重ねて並べて閉じるのがめんどい。



871 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 21:10:05.40 ID:CjhzObSj0.net]
ラジオボタンがクリック1回で反応しなくて2回マウスでカチカチって指定しないといけないんだけど、直し方わかる人いますか?(´・ω・`)PCの問題なんかな?

872 名前:デフォルトの名無しさん mailto:sage [2022/07/01(金) 21:42:37.97 ID:kFE+Jjo70.net]
マルチプランならあるな。
と言っても平成のはじめだけど。
あの時代はPC買うとおまけで違法コピーモノがもらえる時代だからな、
マルチプランも123も両方あったわ。
当時は123のほうが強かったんだよね。
Excelとマルチプランて名前が変わっただけじゃないの?

873 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 00:17:07.82 ID:7TC/SMOx0.net]
Excel3.0から使っていたら人ならいたよ。
とっくに定年退職されてます。
最近のExcelはごちゃごちゃしていて苦手と言っていたかな。

874 名前:デフォルトの名無しさん [2022/07/02(土) 00:35:50.92 ID:eLIQ72LUM.net]
Collectionについての質問なのですが
Collectionの要素をソートする場合
それ用のSubを作って、その中でソート後のCollection変数を作ってその中に順番に要素を1つ1つ入れていって最後に
set 元のcollection=新collection
とやる方法を考えつきました。

この方法で問題ないですか?それとももっとスマートな方法がありますか?

875 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 00:50:08.19 ID:vnn63W/20.net]
懐かしいの。
当時 IBM 5550とかいうパソコン使ってた記憶がうっすらある
そこでマルチプラン動かしてた
ところが海外拠点ではロータス123 の方が評判でどこかでそれに切り替えた記憶がある。同時に IBM 55505何かに変更したような記憶があるな

マック使ってたやつが Excel を自慢して確かに羨ましかったな
DOS V パソコンで Windows 3.1が動いてその上で Excel が動いた時は感激したな

876 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 01:12:48.41 ID:yZ67dQaR0.net]
昭和ならロータス123とアシストカルク使ってたな
あれはDOSだったかな?

877 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 01:21:18.54 ID:yZ67dQaR0.net]
DOSの頃はファイラーはFD、ネットはエアクラフト、お絵描きはkid98、音楽はMIMPIがデファクトスタンダードだった

878 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 01:36:45.55 ID:7TC/SMOx0.net]
昔は企業で使うPCソフトといえば表計算と文書ソフトぐらいだったもんね。

879 名前:デフォルトの名無しさん [2022/07/02(土) 06:04:41.51 ID:kG8DYDgz0.net]
>>864
良いんじゃない?それで。
用途にもよるけどコレクションにキーくっつけといて
別にキー一覧みたいのをソートして作っといて
そのキーからソートした順番に引っ張るっていう方法もあるけど。

880 名前:デフォルトの名無しさん [2022/07/02(土) 06:14:46.63 ID:v1xY47GsM.net]
>>869
あれれそうですか。
キーの方法も良さそうですね。

でもこんなひとはよく使用しそうなのに話が盛り上がらないのは
みんなのVBAのスキルが低レベルだからでしょうか?



881 名前:デフォルトの名無しさん [2022/07/02(土) 06:15:13.26 ID:v1xY47GsM.net]
x こんなひと
o こんなこと

882 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 06:29:09.78 ID:BdV6t7uW0.net]
すげーな、普通の人が寝る夜中に盛り上がらないからって他人を低レベル呼ばわり

883 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 06:35:31.84 ID:yZ67dQaR0.net]
>>870
かまってもらえないからみんなまとめて低レベル扱いですかそうですか
くさっ

884 名前:デフォルトの名無しさん [2022/07/02(土) 06:52:10.92 ID:kG8DYDgz0.net]
>>870
なるほど、ただの煽りかも知れないけど
あまり人前でそう言うことは言わない方がいい。

人を嫌な気分にさせるし
自惚れ屋と思われて周りからも疎まれることになる。
自分の為にも思ったことは口にしたり書き込んだりする前に一度考えてから実行する方が良いよ。

885 名前:デフォルトの名無しさん [2022/07/02(土) 07:31:29.49 ID:LyZZMtStD.net]
>>870
当たり前の処理のどこに盛り上がる要素があると思うのか
そもそもソートが必要なものにcollection(リスト)使おうって時点で
データ構造の選択を間違ってる可能性が大きい

886 名前:デフォルトの名無しさん [2022/07/02(土) 07:35:58.08 ID:+UfCFyJWM.net]
わかった
じゃあいい

887 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 07:38:04.43 ID:Vi0lNJ4o0.net]
釣られすぎ

888 名前:デフォルトの名無しさん [2022/07/02(土) 07:40:07.80 ID:+UfCFyJWM.net]
For-Next文の中だけで使う局所ローカル変数を定義する場合は
そのFor-Nextブロック内で
Dim a as String
でいいんですっけ?
それともモジュールの先頭で?

たしかVBAでは局所ローカル変数の概念がなくて
Sub/Function内すべての場所で使える気がするのだけど。

889 名前:デフォルトの名無しさん [2022/07/02(土) 07:49:38.67 ID:kG8DYDgz0.net]
>>878
局所ローカルという呼び方をするのかは兎も角
関数やメソッド以下のスコープ変数は基本的には設定出来ない。

変数宣言をする場所についてはVBAに限らず
そのスコープが始まる頭のところに書くのが一般的だよね。
ただ、言ってる通り別に先頭に書かなくても問題なく実装は出来る。

890 名前:デフォルトの名無しさん [2022/07/02(土) 07:49:48.13 ID:vz70zrJPM.net]
>>870
盛り上がったじゃないか
良かったな



891 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 07:49:50.15 ID:LyZZMtStD.net]
>>878
言うとおり局所ローカル変数は存在しないのでFunctionやSubの中ならどこでもいいよ
モジュール先頭(Function、Subの外側)だとグローバル変数かパブリック変数になるからその目的ならダメ

892 名前:デフォルトの名無しさん [2022/07/02(土) 07:58:43.11 ID:+UfCFyJWM.net]
>>879
>>881
なるほどありがとうございます。
やっぱりできないのですね。

でもSub/Function先頭に書くと可読性が著しく下がる(この意味が分からない人はスキル低すぎ)のでやめときます。
われわれのように複雑なプログラミングをしてる人にとってはVBAの言語はいろいろ不便に感じますね。

893 名前:デフォルトの名無しさん [2022/07/02(土) 08:01:20.13 ID:kG8DYDgz0.net]
>>882
だからそう言った言い方はやめた方がよいかと。
モロに自分が「単一責任原則も知らずにスパゲッティコード組みます」と言ってるようなものだから。

894 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 08:27:22.57 ID:bQuvSXdqD.net]
>>882
COBOL書いたら死んでしまいそうな人

895 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:00:40.59 ID:At3W7bIA0.net]
>>878
まあ好みだけど俺は変数宣言は可能な限り使う直前って決めてるからそのケースならループ内で宣言する

896 名前:デフォルトの名無しさん (ワッチョイ 0a63-63P4) mailto:sage [2022/07/02(土) 09:30:40 ID:6d3aqhyk0.net]
チゲ鍋みたいだな局所ローカル

897 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 09:41:11.94 ID:qJpeB53K0.net]
DSのプチコンでローカル変数のありがたさを思い出したな

898 名前:デフォルトの名無しさん [2022/07/02(土) 09:55:37.37 ID:COZLaCzbF.net]
局部もろ観え

899 名前:デフォルトの名無しさん (ワッチョイ 87da-3xOz) mailto:sage [2022/07/02(土) 12:13:59 ID:vnn63W/20.net]
>>885
何回も変数宣言を実行することになるのかな。そうなら理論的にはメモリの無駄と速度の低下が発生するんじゃないの

900 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 13:17:36.46 ID:Y5ZkAX2p0.net]
ReDimの存在



901 名前:デフォルトの名無しさん (ワッチョイ 8a01-BQ8I) mailto:sage [2022/07/02(土) 13:53:14 ID:At3W7bIA0.net]
>>889
宣言文と実行文の違いを学ぼうか

>>890
ReDim は実行文だよ

902 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 14:54:16.39 ID:7TC/SMOx0.net]
久々に熱いスレになったね

903 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 16:46:05.89 ID:vnn63W/20.net]
>>891
普通の文と同じように実行されるわけはないと思ったんで疑問形で書いたんだけど

でもどういう法則があるのかよくわからんから質問したの

宣言文と実行文で検索しても参考になる記事はなかった

教えてくれませんか?

904 名前:デフォルトの名無しさん mailto:sage [2022/07/02(土) 17:08:32.73 ID:At3W7bIA0.net]
>>893
VBA 宣言 ループ とかでググればいいかと
https://thom.hateblo.jp/entry/2018/06/02/185716
一部の例外はあるけど基本的に宣言文は最初にまとめて処理される
なのでサブルーチンに入った時点で変数は作成されるからメモリーの無駄とか速度低下はないよ

905 名前:デフォルトの名無しさん (ワッチョイ 87da-3xOz) mailto:sage [2022/07/02(土) 18:56:13 ID:vnn63W/20.net]
>>894
おおー、なるほど。
よくわかった、ありがとさん。

906 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 12:22:53.01 ID:Jv7ZJhwXr.net]
>>882
なんでわざわざ煽る言い方するわけ?
マシで理解できないわ

907 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 12:39:04.19 ID:v1f+WlYn0.net]
スレ立ち上げ当初みたいに、こうやって真面目な議論してれば良スレなんだよな。

あんたらハメ外せばすぐ毛の話。。。

908 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 13:05:07.71 ID:Fpu/jUUc0.net]
質問者の質も落ちた

909 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 16:27:46.74 ID:v1f+WlYn0.net]
初期の頃、Excel板かここかは忘れたけど、質問も即答してくださる凄い回答者が何人かいた覚えがある。

今はいなくなったよね。
質問側も意味不明な質問ばかり。

910 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 17:15:16.28 ID:ur8aI9T40.net]
そういえば昔って質問にもテンプレなかったっけ



911 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 18:58:18.36 ID:95K4DRnu0.net]
てか議論するスレでもないけどな

912 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 21:36:18.00 ID:v1f+WlYn0.net]
思い出した。昔はいくつかのVBAスレがあった

913 名前:デフォルトの名無しさん mailto:sage [2022/07/03(日) 21:53:26.02 ID:+uLGaU5J0.net]
【VBA エキスパート】 Excel / Access https://kizuna.5ch.net/test/read.cgi/lic/1640108986/
素人にVBA仕込んだ https://medaka.5ch.net/t

914 名前:est/read.cgi/prog/1642131517/
VBAのフリーランスエンジニアは需要ありますか? https://medaka.5ch.net/test/read.cgi/prog/1598637098/
Excel VBA 質問スレ Part76 https://mevius.5ch.net/test/read.cgi/tech/1651339421/
VBAなんでも質問スレ Part3 https://mevius.5ch.net/test/read.cgi/tech/1631184381/
Access VBA 質問スレ Part2 https://mevius.5ch.net/test/read.cgi/tech/1544620479/
★今VBAを勉強してるんだが★ https://medaka.5ch.net/test/read.cgi/php/1214626617/
[]
[ここ壊れてます]

915 名前:デフォルトの名無しさん (オッペケ Sr23-BXQt) mailto:sage [2022/07/04(月) 12:09:05 ID:0Cy5iXrvr.net]
回答者はすぐマウントとってくるしな
>>882みたいな質問者なのにマウント取ってくる意味わからんやつもいるし
能力低すぎとか、われわれのような複雑な~って頭おかしすぎるだろ

916 名前:デフォルトの名無しさん [2022/07/04(月) 13:01:53.71 ID:OO2ZWbG3d.net]
>>904
それ、しつこくForがどうのと聞いていた例のあいつだから

917 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 16:21:37.95 ID:vF9E34H30.net]
>われわれのように

うん。われわれって誰?
脳内でしょ恐らく

ふつーよ、自分から複雑な事やっていますアピールとかするかぁ??
もしかして釣られているのか俺ら

918 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 16:28:28.96 ID:g5E8ZW1ad.net]
決まった様式のExcelファイルがあって、それを見やすく加工するマクロを組んで自信で使ってた際に、それを部内に展開したいってなった場合どう配布するのが正解なんだろう。
使う人はマクロの知識は全くないものとして。

1.xlamにして配布
アドインの設定をしてあげる必要がある。
使用頻度の低い人にアドインを入れるメリットが薄い。

2.マクロだけ入れたxlsmを配布
加工したいxlsxファイルと同時に開いてもらってマクロを実行してもらう。
手間が増える。

3.VBSに書き換えて配布
書き換えが面倒。

4.VBSとxlsmを配布してVBS実行でxlsm起動とマクロ実行
処理に時間がかかりそう。

使用頻度の高くないマクロをアドインとして登録するのは起動時間のロスになりそうだから避けたいんだけど、他の人に特定のマクロを手軽に実行させるのはどういう方法がいいだろうか?

919 名前:デフォルトの名無しさん [2022/07/04(月) 17:17:05.04 ID:CvyJwule0.net]
>>907
> 2.マクロだけ入れたxlsmを配布
> 加工したいxlsxファイルと同時に開いてもらってマクロを実行してもらう。
> 手間が増える。

これでいい。手間って配布の手間のこと?
共有サーバーのどっか特定の場所に読み取り専用にしたxlsmファイル置いといて
ここのマクロファイル使って作業してくれって告知だけすればいい
不具合が見つかって修正した場合も同名ファイルで上書きするだけだから楽だと思うよ

920 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 17:57:33.89 ID:oo1ug/2UD.net]
俺は上書き保存が怖いので.xltmを渡してる



921 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 18:50:46.28 ID:tF6z07pca.net]
>>909
リードオンリーで開くにしとけばいいだけじゃね?

922 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 19:05:52.33 ID:g5E8ZW1ad.net]
>>908
Excelファイル2つ開いてマクロ実行して閉じるっていうのが操作的に手間かなと思ったけど、共有フォルダに置いといてそれを開いて使ってもらうのは無難に使いやすそう。ありがとう。

後出しで申し訳ないんだけど、うちの会社のPCがウイルス対策だとかで毎日起動時にマクロ有効化設定を強制オフ(有効化メッセージ出ずにオフになるやつ)にされるせいで、トラストセンターから毎日有効化設定してね、っていう雑な仕組みになってるんだ。
自身は設定オンにするVBSなりbatで対応してるけど、他の人だとExcel開いてトラストセンターで設定変更の事前動作も必要に。

アドインやVBSなら有効化しなくても動作するんだけど、そうなるとドラッグドロップで動作するVBSだと使う側の手間は省けるだろうか。

923 名前:デフォルトの名無しさん mailto:sage [2022/07/04(月) 19:58:33.04 ID:Ujf5qvvVd.net]
1. xlsmを共有フォルダに保存
2. 読み取り専用で開く
3. xlsm上の別シートに出力結果をVBAで作成
4. 出力結果シートを新規ブックにVBAで移動 (ws.move)
5. 新規ブックをダイアログボックスで保存させる


毎回これでやってる

924 名前:デフォルトの名無しさん [2022/07/04(月) 22:40:20.14 ID:CvyJwule0.net]
>>911
この環境下でも
(セキュリティを無効化して対象のxlsmを開く)VBSなりbatファイルの実体を共有に置いて
そのショートカットだけを配布がベストだと思う

> ドラッグドロップで動作するVBSだと使う側の手間は省けるだろうか
組織内のユーザーのリテラシーにもよるけど、
xlsmでもWorkbook_Openで即ファイルピックアップダイアログ開かせれば大差ないし、
なにより保守がしんどいでしょ

もし複雑な加工内容への変更依頼がきたら?
あるいは今後別のマクロの作成依頼が来て、それもすべてVBSで配布しろと言われるかもしれない

VBEもIDEとしてはアレだけど、
ブレークポイント置けないDebug系メソッドないモジュール分割気軽にできないVBSで開発し続けるの何倍も大変だと思うよ

925 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 01:05:42.67 ID:jbzqjuV/a.net]
>>912
> 3. xlsm上の別シートに出力結果をVBAで作成
> 4. 出力結果シートを新規ブックにVBAで移動 (ws.move)
新規ブック作ってそこのシートに直接結果を出力した方が楽じゃね?

926 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 07:41:15.60 ID:HXH2KDmV0.net]
>>907
VBSを配布して、そこに処理対象ファイルをドラッグドロップしてもらうのが、ユーザ側としては1操作で完結して使いやすいと思う
ユーザに慣れない操作を押し付けて手間を増やしたら本末転倒だしね

ところで「加工」て何するの?
大部分が編集不可の共有ひな型ブックならともかく、人間が好き勝手にいじったブック中から「加工」対象を特定するのは大変だろ

927 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 08:39:26.47 ID:ZlAE1xYZd.net]
別にVBSにこだわる必要は無い
Powershell でも良いでしょ

928 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 09:04:16.75 ID:MtIzSAoXd.net]
>>915
加工についても恥ずかしながら前スレで相談させてもらって一応解決することができました。
・web上からDL出来る名簿がpdf
・pdfをacrobatでexcel変換するとセル位置や結合が不揃い
・目的は名簿データをそれぞれ横一列のデータにしたい

vbaにて処理は出来るようになったけど、他の人が使いたいという意見があり、今回配布手段についてご相談させてもらった次第です。
https://i.imgur.com/XgHnIpg.png
https://i.imgur.com/cXouZTg.png

929 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 09:33:47.87 ID:gxzY68gk0.net]
・WebからDLするドキュメントをCSVにでもしてもらえるよう社内調整する
が一番ラクで確か

930 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 11:30:39.29 ID:X6XwWL+o0.net]
最近、Alt+F11でVBEを開くと、アドインのコードが表示されるようになったんだけど、
仕様が変わったのか、表示されるような設定にしてしまったのか。。
皆さんは表示されますか?



931 名前:デフォルトの名無しさん [2022/07/05(火) 11:43:19.49 ID:QxOevurCa.net]
上の人間の指示通りにするので悩まない

932 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 11:57:42.97 ID:Fkl5GJtU0.net]
>>919
されますよ。

933 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 12:00:27.76 ID:X6XwWL+o0.net]
>>921
毎回アドインのコードが表示されているウィンドウを閉じていますか?
それとも、どこかの設定を変更すると表示されなくなりますか?

934 名前:デフォルトの名無しさん mailto:sage [2022/07/05(火) 12:47:27.21 ID:HXH2KDmV0.net]
>>917
成程。流れ見てないけど、ここにマトモに助けてくれる人がいるというのは意外(失礼w)
acrobatによるpdfのexcel変換過程で色んな気まぐれ要素によりフォーマットが乱れそうな予感がするが、それを吸収するコーディング努力の継続こそスキル上達の早道
頑張って下さい

935 名前:デフォルトの名無しさん (ワッチョイ 73da-XUZM) mailto:sage [2022/07/05(火) 19:57:34 ID:Fkl5GJtU0.net]
>>922
スマン、何かの設定いじったら直った記憶
覚えてなくてすまん

936 名前:デフォルトの名無しさん (ワッチョイ deda-auNL) mailto:sage [2022/07/06(水) 18:47:05 ID:8WsZe39w0.net]
ちんぽじ

937 名前:デフォルトの名無しさん (ワッチョイ 73da-XUZM) mailto:sage [2022/07/06(水) 19:59:54 ID:D5LMB4PC0.net]
2023でるかもね

938 名前:デフォルトの名無しさん mailto:sage [2022/07/06(水) 21:31:49.12 ID:RzEtlOC+0.net]
VBAxSeleniumでchromeはオプション設定が出来るけどedgeは出来ないと思ってたんだが、出来るんだな。
ネットでもうまくいかないていう情報が多い。

Chromeの場合
Driver.AddArgument ("user-data-dir=" & fso.BuildPath(CurrentDirectory, "chrome_vba"))

Edgeの場合
driver.SetCapability "ms:edgeOptions", "{""args"": [""user-data-dir=" & Replace(fso.BuildPath(CurrentDirectory, "edge_vba"), "\", "\\") & """" & _
"] }"

まあjsonで渡してるんだが、VBAてjsonてこんな風にデータベタ打ちしか方法がない?

939 名前:デフォルトの名無しさん mailto:sage [2022/07/08(金) 15:51:01.23 ID:vIJsrl8u0.net]
ダウンロードしたVBAマクロ入りファイル、デフォルト無効化が取り消し。MicrosoftがOfficeの仕様を再度変更
https://pc.watch.impress.co.jp/docs/news/1423419.html

940 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 15:06:01.33 ID:TbXhrDsy0.net]
えぇ((( ;゚Д゚)))恐い



941 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 16:22:28.20 ID:Rxyi1Cuq0.net]
ダウンロードして使うことがないからどっちてもええよ

942 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 01:16:29.22 ID:TTL+d6j7a.net]
コロコロ変わるのは昔から
また変更あるぞ

943 名前:デフォルトの名無しさん [2022/07/11(月) 01:40:13.99 ID:vt1vW9IA0.net]
インターネット経由がどうたらというのは、古いマイクロソフトと新しいマイクロソフトの内部抗争にすぎない。

944 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 04:21:24.13 ID:/TJLjZUe0.net]
ああゆう最先端の企業でも老害が威張り散らしているのかな

945 名前:デフォルトの名無しさん [2022/07/11(月) 04:31:29.20 ID:vt1vW9IA0.net]
ビルゲイツ派はAzue妨害派だろうな

946 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 09:41:27.04 ID:67sTwPgvM.net]
大口の客がゴネたんだろう
VBAがいつまでも使えるのもそういう方々のお陰なのだからVBAer達は感謝しないと

947 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 18:14:40.24 ID:/TJLjZUe0.net]
分かったよ

948 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 15:11:11.33 ID:cdOR/i1g0.net]
客先から毎日送られてくるpdfに対し、特定の部分だけを抜いてexcelに出すというものを作りたいです

流れとしてはwordで開いてコピペ→そこから必要な部分だけ整形
という流れで考えており概ねできたのですが、pdfをwordに落とした時に文章がそのまま文章でコピーされる時と1行ずつテキストボックスやら画像やらでコピーされる時がありうまく実用化出来ません

上記か、あるいはその他の方法でも良いので安定的にコピーする方法は無いでしょうか?

ちなみにpdfは定型フォーマットに記載された日報のような形式で、手動なら文字はそのままコピペできます、フォーマットはいつも同じですが中の文章は行数が日により異なります

949 名前:デフォルトの名無しさん [2022/07/13(水) 17:04:46.28 ID:+TgcJMJe0.net]
>>937
客先にテキストでもくれと依頼すればいいだろ

950 名前:デフォルトの名無しさん [2022/07/13(水) 17:32:17.47 ID:H0DndFW/a.net]
pdfを書き換えたい訳じゃなくて中身を読みたいだけなら
pdfreaderを使うのが一番楽



951 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 18:07:17.76 ID:jvbf7mTW0.net]
PDFは人間のため、印刷のために開発された仕組み
データの順番がどんだけ変わっても人間の目には同じに見えるようになってるから、中身をプログラムで自動的に取り出すのには向いてない

厳密には不可能じゃないとしても、ものすごく大変
できるだけ別の方法を考えた方がいい

952 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 18:39:04.67 ID:tqig4XWpd.net]
そのPDFが紙からスキャンしたものじゃなく文字データとして残ってるなら、ワード経由しなくてもacrobatreaderで開いてコピペするのが早いとは思う。

PDFをExcelに変換する手段があるなら、変換してマクロで必要な所を抽出できそうだけど元ファイル次第では難しいか?

953 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 19:16:11.37 ID:RAwbutPOM.net]
GOOGLEドライブに入れてドキュメントで開けばOCR使えるからそれを試してみては

954 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 19:23:52.41 ID:F58RRgFgM.net]
pdfってhtmlのようなテキストだったりする、意外と知られていない?

955 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 19:30:34.74 ID:XpRrYrAX0.net]
>>937
パワークエリ

956 名前:デフォルトの名無しさん (ワッチョイ fdce-TkQT) mailto:sage [2022/07/13(水) 19:51:06 ID:jvbf7mTW0.net]
>>943
中身はテキストなんだけど、データの順番が入れ替わっても同じ見た目の文書が再現できる
だから人間から見て正しい順序で取り出すのが大変
いっぺん出力してOCRした方が早いぐらい

957 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 20:29:31.07 ID:RAwbutPOM.net]
>>943
ここの連中にはよく知られている
pdfの解析はめちゃくちゃキツイ

958 名前:デフォルトの名無しさん [2022/07/13(水) 20:29:35.01 ID:+TgcJMJe0.net]
>>943
馬鹿なら黙っていればいいのに
htmlじゃねーよ

959 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 20:34:43.23 ID:RAwbutPOM.net]
>>947
「のような」って書いてる
マークアップされてるって事ぐらい分かるでしょ

960 名前:デフォルトの名無しさん [2022/07/13(水) 20:40:59.71 ID:+TgcJMJe0.net]
>>948
マークアップじゃないし
馬鹿は黙っていればいいのに



961 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 20:55:32.87 ID:RAwbutPOM.net]
馬鹿じゃねーよ
テキトーに言ってるだけだ

962 名前:デフォルトの名無しさん [2022/07/13(水) 21:36:26.72 ID:bpgpUpce0.net]
バイナリファイルをマークアップされてるって表現する人はじめてみた

963 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 22:51:54.33 ID:bvCBiwjA0.net]
とはいっても取引先からのデータは大半がpdfだからなぁ

964 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 23:54:44.21 ID:vJ6Ng0OKd.net]
そんなもん会社によるだろ
言えばExcelやCSVで送ってくれるとこも普通にある

965 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 00:12:44.49 ID:X42JNt2t0.net]
マーキングするために会社の上司が部下の女に触りまくってるじゃん

966 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 07:26:28.96 ID:5ehEa+FTd.net]
技術力だけで生きていくか、コミュ力も高めて生きていくかの「差」が今回の質問で明らかになったね

今回の場合、コミュ力あるやつならとっくに客先はpdfとは別にcsvとかテキストファイルを送る方向で動いてるよ

俺はコミュ力を高めていく
お前らは今後も無理難題をひたすら解決する技術力を高めていけw

967 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:00:06.43 ID:E22ufzJOM.net]
今回のデータをcsvで頂戴したく存じます

コミュも何も一行メール送るだけでいいだろう
むしろこれ出来ないなら何もできんだろ

968 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:06:18.41 ID:KsBnasMha.net]
社内規定で社外に送信するデータはPDFとなっておりますので、ご期待に沿えず申し訳ありません。

969 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:12:38.64 ID:1tikFi/NH.net]
そういうコミュニケーションとれない奴は、
仕様を決めるときにもコミュニケーションとれないから思い込みで作るまである

970 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:14:11.08 ID:YsqOWTP3d.net]
根本解決を目指すアドバイスはいいけど、どんなデータかも質問者と客先の状況も分からないのに、データ貰えば解決(ドャァは乱暴じゃない?

少なくともwordで開いても文字認識がまばらだったりするって時点で、綺麗な様式から出力したデータじゃないのは確かだし、質問者がそういう回答を求めてないとは思わない?



971 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:21:48.07 ID:E22ufzJOM.net]
>>959
OCRか元データもらう以外の解決策があるなら、かなり聴きたい

972 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:24:09.60 ID:lnbsEUJQM.net]
OCRのがマシって回答出てるだろ
現実から目をそらすな

973 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 08:49:50.07 ID:vNge93QI0.net]
最初に「CSVなどで依頼しても無理でした」とか書いてくれれば無駄な争いは避けたのかもな

974 名前:デフォルトの名無しさん [2022/07/14(木) 10:19:52.64 ID:dxotV0yqa.net]
>>947
++
>>949
++
>>951
ほんそれ

975 名前:デフォルトの名無しさん [2022/07/14(木) 21:34:12.70 ID:L5ignm6zd.net]
A列のセルに列挙された複数単語の商品名から重複した単語のみを除くことは可能でしょうか?

A
1 RED BLUE APPLE
2 RED BLUE BANANA
3 RED BLUE GREEN ORANGE
4 RED BLUE YELLOW WHITE GRAPE
5 RED BLUE WHITE CHERRY

↑これらのデータを↓のように整形したいです。

B
1 APPLE
2 BANANA
3 GREEN ORANGE
4 YELLOW GRAPE
5 CHERRY

「RED BLUE APPLE」は同一セル内にスペースで区切られて入力されています。
データ量は1回あたり100行程度になります。セル内の単語、単語の数は毎回異なります。

ご教示いただけますと幸いです。よろしくお願いいたします。

976 名前:デフォルトの名無しさん [2022/07/14(木) 21:34:41.90 ID:TfuP8Uyl0.net]
6進数?を通常の時刻表記に直す方法教えてください。
例)1.3→1:30
  2.45→2:45

977 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 21:37:17.58 ID:TLlcUFbPa.net]
>>965
A1に時間が入っているとして
=TIME(INT(A1),A1-INT(A1),0)

978 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 21:41:07.21 ID:0fmyum11H.net]
>>955
コミュ力の定義はなんですか?典型的なインデックスは何ですか?

979 名前:デフォルトの名無しさん [2022/07/14(木) 21:44:41.57 ID:zzetjp0td.net]
>>964
可能です。
はい、次。

980 名前:964 mailto:sage [2022/07/14(木) 22:56:36.99 ID:X42JNt2t0.net]
>>968
ご回答いただきまして誠にありがとうございます。



981 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:23:30.65 ID:BkEIWbQgd.net]
>>964
自分ならだけどこんな感じかと Mainのループは最大行数を取得してくれ _をスペースに置き換えてくれ
Sub_Main()
____Dim_i_As_Long
____For_i_=_1

982 名前:_To_5
________Dim_a_As_String
________a_=_Cells(i,_1).Value
________Dim_j_As_Long
________For_j_=_1_To_5
____________If_i_<>_j_Then
________________a_=_CutWord(a,_Cells(j,_1).Value)
____________End_If
________Next
________Cells(i,_2).Value_=_a
____Next
End_Sub
[]
[ここ壊れてます]

983 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:23:50.53 ID:BkEIWbQgd.net]
Function_CutWord(a_As_String,_b_As_String)_As_String
____Dim_aa()_As_String
____aa_=_Split(a,_"_")
____Dim_bb()_As_String
____bb_=_Split(b,_"_")
____Dim_c_As_String
____c_=_""
____Dim_i_As_Long
____For_i_=_LBound(aa)_To_UBound(aa)
________Dim_j_As_Long
________For_j_=_LBound(bb)_To_UBound(bb)
____________If_aa(i)_=_bb(j)_Then
________________Exit_For
____________End_If
________Next
________If_j_>_UBound(bb)_Then
____________If_c_<>_""_Then
________________c_=_c_&_"_"
____________End_If
____________c_=_c_&_aa(i)
________End_If
____Next
____CutWord_=_c
End_Function

984 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:43:51.22 ID:qWN4wD1T0.net]
https://mevius.5ch.net/test/read.cgi/bsoft/1654860173/7
に似てる

985 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 23:52:28.92 ID:fadaSACN0.net]
気持ちわりぃなそのコード

986 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 00:00:11.50 ID:9RgIX2Zba.net]
>>973
どの辺りが?
それとも気持ち悪いって言いたかっただけ?

987 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 00:30:48.57 ID:1ECLhEg6a.net]
なんでスペースがアンダーバーなんだとは思うな
俺も見た目が受け付けなかったわ

988 名前:デフォルトの名無しさん [2022/07/15(金) 00:48:33.55 ID:kd+ZBNkRd.net]
いや、そもそも自作自演だろ

989 名前:デフォルトの名無しさん (ワッチョイ fdce-TkQT) mailto:sage [2022/07/15(金) 01:18:26 ID:mFCZ39Ni0.net]
Sub Main()
  Dim a As String
  Dim i As Long
  Dim j As Long
  For i = 1 To 5
    a = Cells(i, 1)
    For j = 1 To 5
      If i <> j Then a = CutWord(a, Cells(j, 1))
    Next
    Cells(i, 2) = a
  Next
End Sub

Function CutWord(a As String, b As String) As String
  Dim aa() As String
  Dim bb() As String
  Dim c As String
  Dim i As Long
  aa = Split(a, " ")
  bb = Split(b, " ")
  For i = LBound(aa) To UBound(aa)
    Dim j As Long
    For j = LBound(bb) To UBound(bb)
      If aa(i) = bb(j) Then Exit For
    Next
    If j > UBound(bb) Then
      If c <> "" Then c = c & " "
      c = c & aa(i)
    End If
  Next
  CutWord = c
End Function

990 名前:964 [2022/07/15(金) 02:31:06.28 ID:bSLom3XEd.net]
早速ご回答いただいた皆様、ありがとうございました!
ほぼ思い通りの結果を得ることができました。

ちなみにですが、
例えばA6に「DOG CAT RABBIT COW BEAR」というデータがある場合、
各単語がどれとも重複していないため「DOG CAT RABBIT COW BEAR」そのまま5単語が残ります。

各データのユニークな単語を最小数で残すことは可能でしょうか?
下記のような形です。

A
1 RED BLUE APPLE
2 RED BLUE BANANA
3 RED BLUE GREEN ORANGE
4 RED BLUE YELLOW WHITE GRAPE
5 RED BLUE WHITE CHERRY
6 DOG CAT RABBIT COW BEAR



B
1 APPLE
2 BANANA
3 GREEN ORANGE
4 YELLOW GRAPE
5 CHERRY
6 DOG

度々申し訳ございませんが、よろしくお願いいたします。



991 名前:デフォルトの名無しさん [2022/07/15(金) 02:36:26.14 ID:WFW52ORLM.net]
いつものあいつだぞ

992 名前:デフォルトの名無しさん (ワッチョイ fdce-TkQT) mailto:sage [2022/07/15(金) 06:01:47 ID:mFCZ39Ni0.net]
最小限の定義が不明

993 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 07:03:30.04 ID:ymO8mssad.net]
Sub Main()
  Dim a As String
  Dim i As Long, j As Long
  Dim last As Long
  last = Cells(Rows.Count, 1).End(xlUp).Row
  For i = 1 To last
    a = Cells(i, 1)
    For j = 1 To last
      If i <> j Then a = CutWord(a, Cells(j, 1))
    Next j
    Cells(i, 2) = a
  Next i
End Sub

Function CutWord(a As String, b As String) As String
  Dim aa() As String
  Dim bb() As String
  Dim c As String
  Dim i As Long, j As Long
  aa = Split(a, " ")
  bb = Split(b, " ")
  For i = LBound(aa) To UBound(aa)
    For j = LBound(bb) To UBound(bb)
      If aa(i) = bb(j) Then Exit For
    Next j
    If j > UBound(bb) Then c = c & aa(i) & " "
  Next i
  CutWord = Trim(c)
End Function

994 名前:デフォルトの名無しさん (スッププ Sd43-jVDF) mailto:sage [2022/07/15(金) 07:30:27 ID:KClfAjojd.net]
俺のコードをいじってくれてうれしいが
Valueとったり改行いじったりしてるだけで行数減らしてるだけなんて結局マイルールのこだわりを主張してるだけなんだよな
こんな方法あるぜってのが見たいわ

>>978
6が「DOG」になる最小数という意味が不明
先頭の単語を返すだけならCutWordの最後でaとcが同じ値になったらaa(LBound(aa))を返すようにすればいいのでは

995 名前:デフォルトの名無しさん (アウアウウー Sa09-/dRU) mailto:sage [2022/07/15(金) 07:47:41 ID:9RgIX2Zba.net]
value取るのは

996 名前:改悪で草 []
[ここ壊れてます]

997 名前:デフォルトの名無しさん (アウアウウー Sa09-DHlW) mailto:sage [2022/07/15(金) 08:08:12 ID:DqNyEc18a.net]
>>964
複数回現れる単語を削除すればいいのか?
Sub X964()
Dim Sheet As Worksheet: Set Sheet = ...
Dim Dictionary As Object: Set Dictionary = CreateObject("Scripting.Dictionary")
Dim LastRow As Long: LastRow = SheetSheet.Cells(Rows.Count, "A").End(xlUp).Row
Dim Row As Long
For Row = 1 To LastRow
Dim Word As Variant
For Each Word In Split(Sheet.Cells(Row, "A").Value, " ")
If Dictionary.Exists(Word) Then
Dictionary(Word) = Dictionary(Word) + 1
Else
Dictionary.Add Word, 1
End If
Next
Next
For Row = 1 To LastRow
Dim Uniques As String: Uniques = ""
For Each Word In Split(Sheet.Cells(Row, "A").Value, " ")
If 1 < Dictionary(Word) Then
If Uniques = "" Then
Uniques = Word
Else
Uniques = Uniques & " " & Word
End If
End If
Next
Sheet.Cells(Row, "B").Value = Uniques
Next
End Sub

998 名前:デフォルトの名無しさん (アウアウウー Sa09-DHlW) mailto:sage [2022/07/15(金) 08:10:06 ID:DqNyEc18a.net]
>>973
気持ち悪いとは思わないけどちょっと非効率かなとは思う

999 名前:デフォルトの名無しさん (ワッチョイ cbda-VQN5) mailto:sage [2022/07/15(金) 08:49:49 ID:pxeFAKZo0.net]
そのコードカッケェ!

1000 名前:デフォルトの名無しさん (スフッ Sd43-TkQT) mailto:sage [2022/07/15(金) 09:42:45 ID:D6klNH8hd.net]
Sub sample3()
  Dim r As Long
  Dim z As Long '最終行
  Dim s As String '全データ
  Dim a() As String '単語リスト
  Dim i As Long
  z = Cells(Rows.Count, 1).End(xlUp).Row
  For r = 1 To z
    Cells(r, 2) = Cells(r, 1)
    s = s & Cells(r, 1) & " "
  Next r
  a = Split(s, " ")
  For i = LBound(a) To UBound(a)
    If Len(s) - Len(a(i)) > Len(Replace(s, a(i), "")) Then '2回以上出てくるか
      For r = 1 To z
        Cells(r, 2) = Trim(Replace(Cells(r, 2), a(i), "")) '各セルから削除
      Next r
    End If
  Next i
End Sub



1001 名前:デフォルトの名無しさん (アウアウウー Sa09-jVDF) mailto:sage [2022/07/15(金) 09:47:20 ID:kfkt8EAfa.net]
効率どうこう言う前に重複した単語がでるような関数はどうかと思うのw

1002 名前:デフォルトの名無しさん [2022/07/15(金) 13:22:47.81 ID:kd+ZBNkRd.net]
ここでRuby馬鹿がRubyではこうなるとか書くのは見えている

1003 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 19:00:37.71 ID:f/pTHFXb0.net]
オレンジ色のオレンジはどうなの?

1004 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 19:14:37.65 ID:pxeFAKZo0.net]
どんなに良コード書いても難癖付けられるのがこのスレ

1005 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 02:37:29.28 ID:hVvvoOFI0.net]
userformをshowした直後にunloadするとexcelが落ちるのは何とかならんかのぉ
hideじゃだめなんじゃunloadじゃないと

1006 名前:デフォルトの名無しさん [2022/07/16(土) 07:52:34.81 ID:1SMMBEmo0.net]
UserForm1.Show vbModeless
Unload UserForm1

って意味なら、別に落ちなかったけど

1007 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 08:52:29.38 ID:eHBMNsDF0.net]
逆になんでhideじゃダメなの

1008 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 13:26:34.40 ID:NLVpHfZz0.net]
とりあえずEXCELが落ちるっていうコードと環境出せ
話はそれからだ

1009 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 18:00:44.38 ID:2WLM14wy0.net]
>>978
Ruby で作った

require "csv"

input_str = <<"EOT"
RED,BLUE,APPLE
RED,BLUE,BANANA
RED,BLUE,GREEN,ORANGE
RED,BLUE,YELLOW,WHITE,GRAPE
RED,BLUE,WHITE,CHERRY
DOG,CAT,RABBIT,COW,BEAR
EOT

csv = CSV.new( input_str )
input_ary = csv.read # 2次元配列

# 各単語の出現回数を数える。Hash の初期値は、0
hash = input_ary.each_with_object( Hash.new( 0 ) ) { |row, hash|
row.each { |word| hash[ word ] += 1 }
}

# 出現回数が2以上の単語を削除する
input_ary.map! { |row|
row.delete_if { |word| hash[ word ] >= 2 }
row
}

# 2次元配列を、CSV 文字列に変換する
csv_str = input_ary.map( &:to_csv ).join
puts csv_str

1010 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 19:45:04.74 ID:vYu+PcKIa.net]
>>996
廃止決定した言語じゃん



1011 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 00:22:00.69 ID:lEW2LcQY0.net]
あんたら色んな言語を習得していてエリートなんだな?
5ちゃんねるなんかにいてもったいねーわ

1012 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 02:44:22.32 ID:rPHWMq+g0.net]
>>995
993と同じ、2行だけ
エクセルは2013

>>994
閉じたWebbrowserを再表示する方法がわからないので仕方なく

1013 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 04:50:23.78 ID:fLi6s9i70.net]
こいつの書くコード、rubyとしてもクソコードなのがほんとひどい

1014 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 77日 2時間 26分 42秒

1015 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<275KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef