Excel VBA 質問スレ Part76at TECH
Excel VBA 質問スレ Part76 - 暇つぶし2ch2:デフォルトの名無しさん
22/05/01 10:10:19.02 Pk0oKD+E0.net
2げろ

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

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

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

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

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

8:デフォルトの名無しさん
22/05/01 21:39:32.49 Rd1MW2220.net
レス古事記の相手すんなよ...

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

10:デフォルトの名無しさん
22/05/02 23:18:57.97 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:デフォルトの名無しさん
22/05/02 23:38:34.90 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:デフォルトの名無しさん
22/05/03 10:09:18.61 F3b8ltuB0.net
先生方教えて!
エクセルを1枚1枚開いてvbaによって加工したい場合、
マクロの表示からそのvbaを選ぶのが一般的なんでしょうか。
FileDialogをつかって複数エクセルを一気に加工するほうが
自分は楽なんですが契約社員にはわかりづらいそうで。。

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

14:デフォルトの名無しさん
22/05/03 13:25:25.46 xaGln49G0.net
理解が十分でない契約社員には直感的にわかりやすい上記の方法
そのうち慣れて面倒になってきたら下記の方法(バッチ)
2つのアプローチを用意するのがいいかもしれませんね
コンピュータになれていなかったり入れ替わりが多い契約社員というところがポイントですね
私もVBAを他人に提供することが多いから参考になるわー

15:デフォルトの名無しさん
22/05/03 13:57:26.99 nOtJseDM0.net
Nextじゃなくて、Next iって書かなきゃあかんと言われたよ

16:デフォルトの名無しさん
22/05/03 14:12:22.20 utR4VoxQa.net
iが足りなかったからか

17:デフォルトの名無しさん
22/05/04 14:54:21.99 Bmz10qTz0.net
前スレ987で質問した者です。
アドバイスありがとうございます。
2019に変わる際にPCがwin7からwin10に変わり性能もアップしたのでVBA処理も早くなるかと思っていたのですがそのようなバグが出るようになりました。
自分1人で使ってる範囲では良いのですが複数が利用しているため質問させて頂きました。
PC性能があがりEXCELがついてこれてない可能性もありますね。

18:デフォルトの名無しさん
22/05/04 16:13:00.23 waxP/JpN0.net
Excel板なら人間の性能を上げろって揶揄されるからな

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

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

21:デフォルトの名無しさん
22/05/04 21:05:48.55 hxvZ+FeqM.net
>>20
所有権の問題ではなく馬鹿だからわからないだけでは?

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

23:デフォルトの名無しさん
22/05/04 22:17:07.14 hNQ/TBre0.net
数秒待たせればエラーに成らないなら、原因判明するまでは待たせる方式で
或いは
最終的に鳥瞰図が欲しいなら、数値データをDXFとして出力してjw-cadとかで描画とか
  URLリンク(www.hakko.co.jp)  作者に問い合わせしながら検討とかも
URLリンク(www.apptec.co.jp)  
URLリンク(movies.woxikon.co.nz)
URLリンク(www.tipsfound.com)
URLリンク(www.nichibun-g.co.jp)
この辺は既にご承知かも ぜんぶちゃんと目を通した訳では無いから抜粋ということで
グラフ機能を応用して鳥瞰図(風)にしてるってことかな

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

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

25:デフォルトの名無しさん
22/05/04 23:54:17.61 4EN2kx2R0.net
>>24
むかしファイルメーカーから画像を取り出してExcelに貼り付けるマクロ書いたことあるわ。
クリップボードからExcelに貼るときにちょいちょいエラーが出て苦労した。
最終的にはエラーが出たところからリランできるようにして人力で最後まで走り切った。
継続的に長い期間使うマクロではなかったんでね。
クリップボードって入れ終わるタイミングが掴めないから処理が難しいね。
オレが調べた限りでは完全に技術的に解決する方法は見つけられなかった。
完全自動化は一旦棚に上げておいて、人間の補助も込みで運用を考えた方が現実的かも。

26:デフォルトの名無しさん
22/05/05 00:43:02.91 vV+xUHQR0.net
IEとセッション共有するにはどうすればいい?

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

28:デフォルトの名無しさん
22/05/05 09:37:07.07 yaYLZP+d0.net
>>26
まずIEはセッションなど持っていない。
そして今IE は使えないだろう?
強制的にEdgeにされるはずだ。
そしてそのEdge も当然セッションなど持っていない。
EdgeもIEもクライアントサイドのものだからだ。
セッションはサーバーサイドの概念だからな。
そしてサーバーサイドをEXCELのVBA で制御するとか意味分からん。
大人しくAsp.NetでもやっておくかせめてVBS で制御しとけ。

29:デフォルトの名無しさん
22/05/05 11:18:53.52 vV+xUHQR0.net
わざとだろうけど、EdgeでもCookieでもいいよ。

30:デフォルトの名無しさん
22/05/05 11:27:47.75 BSjK1PJD0.net
>>11
ありがとうございます。

31:デフォルトの名無しさん
22/05/05 16:06:00.40 FeY8iOM40.net
【ひろゆき】テレビ見る奴はバカ!?正論論破!
「テレビ見てる奴バカすぎだろ!!マジでバカしかいない!!」聞けば納得の正論!!
【ひろゆき】みなさん要注意です…テレビ見ると頭悪くなります
⇒テレビが馬鹿向けに作られてる衝撃の理由がヤバ過ぎる…
【ひろゆき】マジで「ざまあみろ」って思いましたね。
●●する奴にテレビ業界は破壊されました…ひろゆきがテレビがオワコン化した理由を話す
【ひろゆき】芸能界の闇!松本人志とか東野幸治はエクセルすら使えないんだよ?
ワイドナショーで言ってたw【教えて!ひろゆき先生/切り抜き】
【ひろゆき】なぜテレビは面白くなくなったのか?
その理由をひろゆきとひげおやじが分析する【切り抜き/論破/TV】

32:デフォルトの名無しさん
22/05/07 10:41:14.26 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:デフォルトの名無しさん
22/05/07 11:01:22.01 QtF4T6fHa.net
ascの結果をstringに変換しないで入れたからかな
出先なので試せないが

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

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

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

36:デフォルトの名無しさん (ワッチョイ b7ce-PvPk)
22/05/07 12:05:46 WpJq4eDb0.net
公式ドキュメントには、Hex関数の返り値は8桁以下の文字列と書いてあるのに16桁返ってくるな
どういうことだ?
URLリンク(docs.microsoft.com)

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

38:デフォルトの名無しさん
22/05/07 13:00:38.34 WpJq4eDb0.net
うーん、これはちょっと想定外の結果、かなあ
知らないでいるとハマりそうだわ
Sub test2()
  s = "&H8"
  For i = 1 To 15
    s = s & "0"
    Debug.Print Hex(s)
  Next
End Sub

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

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

41:デフォルトの名無しさん
22/05/07 16:06:22.67 7L5Eu3N/a.net
>>38
型宣言しないタイプ?

42:デフォルトの名無しさん
22/05/07 17:29:10.04 stouWQDp0.net
VBAってマトモな会社は使用禁止でしょ

43:デフォルトの名無しさん
22/05/07 19:21:47.63 WpJq4eDb0.net
>>41
>>38のケースは宣言してもしなくても結果同じでは

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

45:デフォルトの名無しさん
22/05/07 20:33:59.56 gH0nu0qIa.net
>>44
64bit 版のドキュメントが間に合ってないだけだろ

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

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

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

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

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

51:32 (ワッチョイ 9f02-PvPk)
22/05/08 08:41:56 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:デフォルトの名無しさん
22/05/08 19:44:09.25 J4Oeet0G0.net
kou
'a
str = "転"
long_ = Asc(str)

53:デフォルトの名無しさん
22/05/08 22:42:32.67 CUGu1qGH0.net
high は何のため

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

55:デフォルトの名無しさん
22/05/09 14:49:08.99 Ww9cdHsy0.net
脳内思い込み
一番タチ悪い

56:デフォルトの名無しさん (ワッチョイ 3ebb-HNGk)
22/05/09 18:18:14 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:デフォルトの名無しさん
22/05/10 10:07:55.18 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:デフォルトの名無しさん
22/05/10 10:19:04.03 ODIjuWluM.net
一生に一度しか使用しない機能は実装されません

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

61:57
22/05/10 11:44:31.14 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:デフォルトの名無しさん
22/05/10 11:55:55.13 G5I31YZG0.net
Cを必要なだけ右に寄せてからその操作すれば?
ぴったり位置合わせしたいとかなら  URLリンク(www.moug.net) 辺り参考に

63:デフォルトの名無しさん
22/05/10 11:58:47.56 Q/OuvBXU0.net
>>56
どのチェックボックス?フォーム?activeX?

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

65:57
22/05/10 21:53:08.05 4FhYKkQU0.net
>>63
ありがとうございます。調べてやってみます!

66:デフォルトの名無しさん
22/05/10 21:54:52.33 4FhYKkQU0.net
>>61
ありがとうございます。参考にします。

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

68:デフォルトの名無しさん
22/05/12 01:22:53.69 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:デフォルトの名無しさん
22/05/12 02:12:42.08 y5qWaFnT0.net
>>67
常識
URLリンク(blog.apar.jp)

70:デフォルトの名無しさん
22/05/13 15:49:14.84 m1gysKVC0.net
Dim a
a = Range("A1:B2")
これだけでaが2×2の配列になるとたった今知ったのですが
このことを手放しに使って良いのでしょうか、それとも邪道だから
Dim a(2, 2)なり要素数まで指定した方が良いのでしょうか。

71:デフォルトの名無しさん
22/05/13 15:56:46.69 Bn5ry0500.net
>>69
問題ない
VBA使えるやつならみんな知ってる

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

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

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

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

76:デフォルトの名無しさん
22/05/13 22:54:29.72 BcFt2CuGD.net
aは要するにポインタだからな

77:デフォルトの名無しさん
22/05/13 22:58:14.08 JesbR9jP0.net
c以上ならポインた

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

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

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

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

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

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

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

85:デフォルトの名無しさん
22/05/14 10:48:24.07 0kHlnQQT0.net
オレオレ自慢

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

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

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

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

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

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

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

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

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

95:デフォルトの名無しさん
22/05/14 15:15:38.33 VTp6T5x/0.net
>Excelエキスパート集団
それはない

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

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

98:デフォルトの名無しさん
22/05/14 18:32:44.86 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:デフォルトの名無しさん
22/05/14 18:58:29.62 lDPvxjtFD.net
>>94
方眼紙はじめとした使い方への皮肉だろ

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

101:デフォルトの名無しさん
22/05/14 19:20:25.44 VTp6T5x/0.net
>>97
ExecuteExcel4Macroはデフォで無効にされた
なんか知らんが俺も動かせなかったからもうベタ書きで
URLリンク(forest.watch.impress.co.jp)
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:デフォルトの名無しさん
22/05/14 19:26:19.82 msymY1pp0.net
内容あまり理解出来てないのかもしれないけど
B500の行取得してワークブックオープンで引数ファイルパス500で開いてデータ抜きたいところ抜けば良いのではないでしょうか。
4使うあたり処理を重くしたくないのでワークブックを開きたくないようにも見えますが

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

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

105:デフォルトの名無しさん
22/05/15 08:18:10.46 Jt2O43PNd.net
参照設定は?

106:デフォルトの名無しさん
22/05/15 13:24:19.34 K6VbLnva0.net
>>68
即レスいただいてたのに遅くなりました。ありがとうございます。
常識なんですね。とてもためになりました。
少数が原因だろうと思いつつもローカルウィンドウの値は整数だし
Fixしても発生するので困ってました。ありがとうございます。

107:デフォルトの名無しさん
22/05/15 15:21:30.27 xmtudDvv0.net
>>104
してある
してないと違うエラーメッセージだったような

108:デフォルトの名無しさん
22/05/15 17:45:40.00 SLK6Xy6bp.net
>>106
参照不可はない?

109:デフォルトの名無しさん
22/05/15 17:49:03.93 i2BwfRJap.net
>>83
依頼元の情報提供不足。対象件数とか。

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

111:デフォルトの名無しさん
22/05/15 20:48:22.92 xHyGsu5B0.net
ブックの作成の際にワークブック変数にセットする
set=workbooks.add

112:デフォルトの名無しさん
22/05/15 21:20:44.06 i/ziY72x0.net
変数に格納するってのは名前をつけてあげるみたいな意味合いがある気がする
変数作ってセットすれば呼び出しやすい

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

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

114:97
22/05/15 23:36:58.31 VONG1GsX0.net
>>101
おっしゃる通りワークブックを開きたくなかったんです
諦めて>>100さんの手法でいきました
ありがとうございました。

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

116:デフォルトの名無しさん
22/05/15 23:53:26.84 sFHTlWBy0.net
>>113
URLリンク(officetanaka.net)
フルパス指定すればいけるっぽいけどそーゆー話ではないのかな?

117:デフォルトの名無しさん
22/05/16 00:14:35.90 D08mu/WY0.net
セルとかSelectするのは最後くらいだもんなあ

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

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

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

121:デフォルトの名無しさん
22/05/16 10:02:47.99 a802uHDS0.net
ワイなら大まかに
「データをURLでフェッチする」機能
「データをシートに表現する」機能
とかに分けてそれぞれの中でループする
どんなデータ取るんかとか知らんけど
過去の気象データなら変化ないんやろから(少しずつしか追加されないし)
あらかたDLしちゃって毎日追加する運用でよくね
Accessで動くか知らんがワイなら楽だし(R)DBにして、
Excelは表現に特化させる
まあDBとして考えるなら119の言うように特定のデータをカラムとして取り込むほうがいいけどね

122:デフォルトの名無しさん
22/05/16 11:38:04.10 DOkjRxjB0.net
>>115
この人の書くコードは読みやすいよね

123:デフォルトの名無しさん
22/05/16 13:47:28.98 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:デフォルトの名無しさん
22/05/16 22:38:43.92 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:デフォルトの名無しさん
22/05/17 06:57:27.10 OSHWxoLA0.net
>>110
ありがとうございます
まさかこんな単純な解決法だったなんて
勉強になりました

127:デフォルトの名無しさん
22/05/17 14:46:10.58 le3TeRDS0.net
>>123
こんな感じ?
URLリンク(i.imgur.com)

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

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

130:デフォルトの名無しさん
22/05/17 23:08:31.99 le3TeRDS0.net
>>127
>上に隣接するa群の一番上(1 a)の数字を参照
この部分
E,F列は切り替わった部分を取得している。row()にすることで、切り替わった部分を取得できる
maxで、切り替わった直近を取得
あとはindexmatchでA列を取得

131:デフォルトの名無しさん
22/05/18 00:40:35.16 54FLML710.net
>>127
人様に迷惑掛けるだけの人?

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

133:デフォルトの名無しさん
22/05/18 23:31:31.92 yWpeDHxGd.net
Application.RUN

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

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

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

137:デフォルトの名無しさん
22/05/19 16:56:56.93 OfQgMZCZ0.net
>>134
API使ってバックグラウンドで制御してるなら見る

138:デフォルトの名無しさん
22/05/19 17:15:23.09 ednyHaa30.net
>>135
URLリンク(youtu.be)

139:デフォルトの名無しさん
22/05/19 18:18:22.53 H0TVdlz+M.net
ゆっくり茶番劇® か

140:デフォルトの名無しさん
22/05/19 18:19:37.44 OfQgMZCZ0.net
>>136
面白そう、家帰ったら見よう

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

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

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

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

144:デフォルトの名無しさん
22/05/19 23:27:11.45 uClc3Hkf0.net
ゆっくりの顔はこれから無料で使用できなくなるんだよね?

145:デフォルトの名無しさん
22/05/19 23:45:08.95 EjpQ3dyV0.net
できる
動画名にゆっくり茶番劇って入れたらダメ

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

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

148:デフォルトの名無しさん
22/05/20 14:24:00.71 Sdn4LcDR0.net
>>145
使えるぞ
>>144が馬鹿なだけ

149:デフォルトの名無しさん
22/05/20 15:47:49.30 J0VXxMmC0.net
>>144
まぁ、やってみなはれ。
URLリンク(www.microsoft.com)

150:144
22/05/20 16:37:29.66 zIX8lMtd0.net
アドインを入れなきゃ使えんなんて知らんわ。
まあ、やってみるよ。

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

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

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

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

155:デフォルトの名無しさん
22/05/20 22:12:27.54 jYa2tCV10.net
文字には勝てんよwww

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

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

158:デフォルトの名無しさん
22/05/21 07:53:33.56 QJ4+3poJ0.net
それは見なきゃいいだけじゃね

159:デフォルトの名無しさん
22/05/21 08:06:57.86 UbenPHXM0.net
>>156


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

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

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

163:デフォルトの名無しさん
22/05/21 13:24:13.30 yO41HbkGd.net
64bitだとdatepickerが使えないんだけど代替有りますか?

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

165:デフォルトの名無しさん
22/05/22 00:44:38.46 VeiX84dqd.net
クリップボードに
あああ いいい
123  たたたた   ららら 12ああ
000 1
かかか 

あかさ たなは 358 22558
のようにランダムな文字列や数字がはいっています。
空白や改行の数もランダムですがどちらも5個いないです。
あああ、や、いいい、の間は空白や改行のどちらかです。
文字列または数字を、空白か改行で区切って
横に10列ずつに並べたいです。
A1に「かかか」B1に「いいい」おなじように繰り返してJ1に「あかさ」、次はA2に「たなは」が入るようなイメージです。

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

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

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

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

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

改行を空白に置換する

splitで分ける

配列をセルに入れる

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

171:デフォルトの名無しさん
22/05/22 08:05:25.80 kuwcJLnp0.net
どういう順番にしたらA1にかかかが来るのかがよく分からない

172:デフォルトの名無しさん
22/05/22 08:09:48.09 g+ilDpCn0.net
A1に「かかか」

A1に「あああ」
間違えてるだけだろ、それぐらい見抜こう

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

174:デフォルトの名無しさん (アウアウウー Sac7-xdJx)
22/05/22 09:43:55 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:デフォルトの名無しさん
22/05/22 10:01:24.95 q4bvZkadM.net
>>172
あらキレイ

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

177:デフォルトの名無しさん
22/05/22 10:37:59.11 TDPiVbwY0.net
>>163
VBAスレでいうのもアレだと思うけど
「改行、スペースで区切られたテキストデータを、10個ずつ(10列ずつ)で改行されるデータとして抽出したい」
って考えると正規表現可能なテキストエディタでやったほうが良いような気がする。
( | |\r\n) を \t
\t+ を \t
((.*?\t){2}) を $1\r\n
にみたいな感じで

178:デフォルトの名無しさん
22/05/22 13:05:55.15 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:デフォルトの名無しさん
22/05/22 19:14:42.01 Np0e+b7dd.net
常にそうだとは言わないけど、VBAでいろんなことしようとする人って
会社内でセキュリティに縛られてVBAしか使えないような環境でこっそりやってる場合が多いんじゃね
うちなんてpowershellさえ使えない

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

181:デフォルトの名無しさん
22/05/22 21:19:32.54 uG5Z2bGad.net
163です。
レスくださった方ありがとうございました。
結論から言うと、>>172を加工してなんとなくうまくできました。
A1セルは「あああ」が正しいです。すみません。

182:デフォルトの名無しさん
22/05/22 21:33:47.57 g+ilDpCn0.net
それぐらい分かってるから大丈夫だ

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

184:デフォルトの名無しさん
22/05/23 17:51:32.07 KArKRscP0.net
何の表示だよ

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

186:デフォルトの名無しさん
22/05/23 18:38:04.00 nw7KfNpjD.net
ループ内で都度再表示させればいいんじゃねーの

187:デフォルトの名無しさん
22/05/23 18:45:16.94 S7FOVsdv0.net
excelのシートのA列に◎オプションボタンActiveXを付けた、B列には商品名(3000件くらいある)を入れた。
◎ りんご
◎ みかん
◎ ぶどう
◎ ばなな
ぶどうを選んだら、TRUEになった番号は「3番」って返ってきているのですが、3000件を設定するのが大変で一括で設定できる方法があれば何かヒントを教えてください。

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

189:デフォルトの名無しさん
22/05/23 20:48:26.86 e/WRg45j0.net
>>183
DoEvents

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

191:デフォルトの名無しさん
22/05/23 21:43:20.23 2/Utrmz50.net
Do Eventsってイマイチちゃんと意味を理解しない状態で使ってる気がする
なんか図形でアニメみたいな動きさせるとか
入れると安定したり

192:デフォルトの名無しさん
22/05/23 23:30:03.20 e/WRg45j0.net
>>189
WindowsというOSの(ほぼ)すべてがイベントで動いてる
キー入力も画面表示もディスクアクセスも、何をするにもイベントが必ず使われる
普通に使ってるだけで、ユーザーの関知してないところで毎秒数十万回以上のイベントが発生してて、その一部は溜めたり無視することもできる
そこで溜まったイベントをまとめて処理するのがDoEvents

193:デフォルトの名無しさん
22/05/23 23:44:03.30 lhQpV8J50.net
肥溜めの水で流すボタンだな

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

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

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

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

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

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

200:デフォルトの名無しさん
22/05/24 13:00:25.03 voOeNnQV0.net
60歳70歳の古参プログラマーじゃないんだからさ

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

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

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

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

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

206:デフォルトの名無しさん
22/05/25 06:07:16.42 BON/kfv30.net
privateを削除するんじゃなくて?
物理的にクリック?

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

208:デフォルトの名無しさん
22/05/25 06:45:16.14 1b7KkSYk0.net
application.runは駄目でした

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

210:デフォルトの名無しさん
22/05/25 07:53:58.12 SJVW4y9pr.net
プロシージャの中身を外出ししようとか考えたのか?

211:デフォルトの名無しさん
22/05/25 08:31:27.12 2Cw1QSym0.net
>>203
Call

212:デフォルトの名無しさん
22/05/25 09:47:51.39 rgUSKbgWd.net
いやここはレイズだ

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

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

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

216:デフォルトの名無しさん
22/05/25 20:44:02.25 rgUSKbgWd.net
会社のマクロにパスワードが掛かってる、かつ起点となるマクロはその会社の方のマクロって事かな?
1. 会社のExcelと個人で用意したxlsm(個人用ブックである必要無し)を準備する
2. vbs やps1の外部ファイルから会社のVBA実行→個人で用意したxlsm内のVBA実行
これで行けるんでねえの?

217:デフォルトの名無しさん
22/05/25 20:52:50.14 D9uW2fk+0.net
変更する技術がないなら触らない方が良いと思うよ

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

219:デフォルトの名無しさん
22/05/25 21:14:00.59 oImj9UUVM.net
ややこことは辞めたほうがいいね

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

221:デフォルトの名無しさん
22/05/26 00:34:12.72 O+gRo7JH0.net
会社用のマクロ実行したあと、個人用マクロを実行するだけの作業なのに
あくまでも自分の分からない領域まで手を入れたいってのは分からんな
マクロ壊して分かりづらい変なトラブルになったら責任云々とかになりかねないかもしれんぞ
214のやり方がむりなら諦めるか上長に相談するべきやと思うで

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

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

224:デフォルトの名無しさん
22/05/26 07:56:10.65 JEeygHRrr.net
>>220
工夫するのは上長に100個もある無駄なExcelファイルについて改善を提案すべきじゃね
下手なやつの自動化は害にしかならない
それでだめなら自分の責任でこういうやり方していいかとか聞くとかそういう流れにはもうしたんやろ?
外部から呼ぶ214のやり方で無理なら諦めろ
改善して見込める君の給与メリットがそれほどの額じゃないんやろ
これ公務員とかならマジで税金の無駄やなw

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

226:デフォルトの名無しさん (ワッチョイ 8a3d-Td31)
22/05/26 14:50:09 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:デフォルトの名無しさん
22/05/26 15:48:41.66 5fQbWZ9ra.net
上司に黙ってデータ改竄とかしたら
会社の資産を横領できちまうな

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

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

230:デフォルトの名無しさん
22/05/26 22:05:05.56 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:デフォルトの名無しさん
22/05/26 22:19:00.22 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:デフォルトの名無しさん
22/05/26 22:19:48.67 KppvSZ/JH.net
やっぱりずれた。。。(>_<)

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

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

235:デフォルトの名無しさん
22/05/26 22:46:06.64 KppvSZ/JH.net
>>231
>>232
ごもっとです、、(;^_^A
今日は疲れたので明日ちょっと調べて試行錯誤してみます。レスいただきありがとうございました。

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

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

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

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

239:デフォルトの名無しさん (ワッチョイ 768c-aDUG)
22/05/26 23:42:29 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:デフォルトの名無しさん
22/05/26 23:50:53.02 HeWhwrio0.net
>>228
・最初にセルの内容をvariantの2次元配列に格納。
・そのvariantを弄くり倒す。
・ほしい結果になったvariantを最後に書き戻す。
セルはフォントだの背景色だの罫線だの表上のアドレスだのとにかくいろんな


241:情報がてんこ盛りなので、valueみてりゃいい処理ならできるだけ書き換えない。



242:デフォルトの名無しさん
22/05/27 00:18:49.05 JbgC4v+W0.net
あと、蛇足なんだけどソースでやってることそのものをコメントで書いてもあまり意味が…。
'配列をループ
For i = UBound(A, 1) To 2 Step -1
とか
'「If」で検索
If A(i, 6) = "Distribution (PCW; Sales value)" Then
は、いらないのではと。

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

243:デフォルトの名無しさん
22/05/27 00:19:25.67 JbgC4v+W0.net
あ。ループは俺の読み間違いだ。ごめんなさない。

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

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

246:デフォルトの名無しさん
22/05/27 01:16:57.81 +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:デフォルトの名無しさん
22/05/27 02:06:50.25 +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:デフォルトの名無しさん
22/05/27 06:53:03.71 0WSlRFUXd.net
>>241
お何か良いアイデアかも
横からだけど使わせて貰おう

249:デフォルトの名無しさん
22/05/27 06:53:21.55 XEPyrX550.net
>>237
おそら>>243さんもそうかな?
あの後寝てしまい申し訳ありません。
8時くらいになるかと思いますが動かしてみますのでお待ちくださいm(__)m
夜遅くまでどうもありがとうございます!(´;ω;`)
>>238
スミマセン、・そのvariantを弄くり倒す。
からもうよくわからないレベルです。。でもありがとうございます。
>>239
基本はネットで拾ったコードを貼っているので、、
でも自分の参考にはなってます笑。
ありがとうございます。
>>241-242
ちょっと時間あるときに勉強してみますね(;^_^A

250:デフォルトの名無しさん
22/05/27 07:26:42.06 XEPyrX550.net
>>243
えっ!!何が起こったの?
こっちも5秒で終わりましたっっ!!!えええぇ信じられないスゴイスゴイ!!!(笑)
ちょっと後でゆっくりF8で動かしてみようと思います!!!
本当に助かりました!ありがとうございました!!!
(´;ω;`)

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

252:デフォルトの名無しさん
22/05/27 08:09:16.73 XEPyrX550.net
>>244のは見出しが消えるのを修正したコードでしたね(;^_^A
あと、会社のPCで動かしてみたら2秒もかかりませんでした。
素晴らしいコード、本当にありがとうございましたm(__)m 配列の勉強したいと思います。

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

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

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

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

257:デフォルトの名無しさん
22/05/27 12:57:26.47 fJfHid2B0.net
定常業務としてはExcelではやらなくなるにしても、
10万行相手に、最初の試行錯誤をExcelでやってみる
というのはよくある話かと。
設計云々はそれが分かってから。

258:デフォルトの名無しさん
22/05/27 13:09:45.71 X2EnXYhx0.net
ワイの感覚では数百行とかでもExcel脱却したいし、
こんなんSQLと適当なスクリプトですぐ済むやろ
Excelになってるから重くなったりしちゃうだけで
Accessはしらん
みんなExcel万能思想すぎるんだよなあ

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

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

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

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

263:デフォルトの名無しさん
22/05/28 02:17:11.31 wx0k8mom0.net
そもそも個人用ってオマ環

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

265:デフォルトの名無しさん
22/05/28 03:40:33.21 Yook3X5e0.net
>>261
データいじる前にバックアップしないのか?

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

267:デフォルトの名無しさん
22/05/28 06:07:09.43 PBRR2XJta.net
>>261
なんでこんなスレ見てるんだ?

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

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

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

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

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

272:デフォルトの名無しさん
22/05/28 11:39:37.94 81XaDMLN0.net
>>263
cd /
rm -Rf *

273:デフォルトの名無しさん
22/05/28 12:20:10.23 XKEF46cS0.net
そも2進数なんてvbaにあったっけ

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

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

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

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

278:デフォルトの名無しさん
22/05/28 16:00:35.49 gUD13Ggk0.net
マーカー付折れ線グラフで、マーカーの色と透明度を変えるマクロがなんかうまく行かなくて、
折れ線の線種や色、透明度は素直に変更出来ても、
マーカーの色がデフォルトに戻ったり、透明度を変更出来なかった。
マクロの記録を取ると何やら不可解なコードになり、
再実行すると余計なコード?でエラーになったり。
日本語サイトではなかなか解決策を見つけられず、
英語サイトを漁ってみたら、だいぶ昔に整理がなされていた。
なんと、なぜか唐突に「前景色」と「背景色」をセットで指定してから
透明度を指定すると上手くいくんだと。
URLリンク(www.andypope.info)
他にも、マーカーのスタイルを最後に指定しないと上手くいかない説(Mac版固有?)とか。
URLリンク(forum.ozgrid.com)
VBAの中で、グラフの線種やマーカー種類、色のプロパティに対して、
マーカーの体系は取って付けたというか、
なんか入り組んでて把握しにくい。
Excelの歴史の中で、これは後付けだったのかしら?

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

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

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

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

何時何分何秒?
今日中に

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

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

285:デフォルトの名無しさん
22/05/28 22:12:40.91 IaZrO6TYM.net
操作を間違うと処理が狂ってUsersの中身を全て消そうとしてくるマクロになら遭遇したことある
あとはシンプルにブックやシートの指定をちゃんとしてなくて別に開いてたファイルをメチャクチャにしちゃうとかがまぁよくある可愛い話
あとは別に危険ではないけど新規ブックを作成してそこにマクロを乗せてローカルで実行させるってマクロが
書き込んでくるコードにOption Exli


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



287:デフォルトの名無しさん
22/05/28 22:16:27.20 Yook3X5e0.net
>>281


288:デフォルトの名無しさん
22/05/28 22:31:28.88 K6Jk35Ar0.net
初心者でよくあるのは
「すみまdーん、先輩、SQLのDELETE文の発行部分でWHERE区付け忘れてデータ全部消しちゃいましたー」って奴かな
もちろんUPDATE区の場合もある。
当然、UT環境でテストする前だからそうそう致命的になることはないけど
その環境で同時期にテストしてた人達には平謝り、最低1日分のテストデータ作り直しになったりして白い目で見られるようになったりはするな。

289:デフォルトの名無しさん
22/05/28 22:53:19.43 OmoOa5jA0.net
すみまdーんで吹いた

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


テスト・・・・


って概念無いの?

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

cd /
rm -fr \*

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

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

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

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

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

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

294:デフォルトの名無しさん
22/05/29 01:15:45.22 Tyr7S/P60.net
いや、単にExcel歴30年以上とかのベテランでょ

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

296:デフォルトの名無しさん
22/05/29 03:06:21.80 5DW63Q/F0.net
初心者と経験者との間にはかなりの差があるのは確か

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

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

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

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

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

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

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

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

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

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

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

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

309:デフォルトの名無しさん
22/05/29 12:29:48.36 Orp1XQOd0.net
表の左にラジオボタンを配置、表をリボンのフィルタ機能で絞り混むと、ラジオボタンが大集合してしまう。
これを何とかしようとセル移動しても一緒に移動しない設定にしたら今度は絞るとラジオボタンが残ったままになる。
フィルタで絞ったところの左のボタンだけ表示させる方法教えてください。

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

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

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

313:デフォルトの名無しさん
22/05/29 13:49:12.25 82tDbVM80.net
>>303
何という結論 笑

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

315:デフォルトの名無しさん
22/05/29 14:22:21.96 Tyr7S/P60.net
どんな層がきてるのかな?
事務員さんばかり?

316:デフォルトの名無しさん
22/05/29 14:27:51.93 Ocf930r70.net
ハゲて層な人かへ来ています

317:デフォルトの名無しさん
22/05/29 14:28:07.01 Ocf930r70.net
ハゲて層な人が来ています

318:デフォルトの名無しさん
22/05/29 14:47:38.40 tM27peK8d.net
むしろ剛毛で困ってるstep 3でdeleteしたいわ

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

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

321:デフォルトの名無しさん
22/05/29 18:47:14.53 Tyr7S/P60.net
禿と白髪だらけってどっちが印象悪い?

322:デフォルトの名無しさん
22/05/29 18:53:36.06 Ocf930r70.net
ハゲです

323:デフォルトの名無しさん
22/05/29 19:01:01.21 5/KWOkVq0.net
>>317
眉毛なし

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

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

326:デフォルトの名無しさん
22/05/30 08:08:23.93 OyYzutpm0.net
白人様ならスキンヘッドが似合うから許す

327:デフォルトの名無しさん
22/05/30 08:22:04.62 5eMIb3Vrd.net
イッピーカイエー、マザファッカー

328:デフォルトの名無しさん
22/05/30 08:49:54.54 6bPCzkava.net
Excelできるヤツは禿が多い噂

329:デフォルトの名無しさん
22/05/30 10:02:36.84 9WWLvtDBM.net
なんでわかった?

330:デフォルトの名無しさん
22/05/30 10:14:24.43 Yd1KWPfN0.net
……君のような勘のいいガキは嫌いだよ

331:デフォルトの名無しさん
22/05/30 10:46:02.07 111npCAX0.net
ハゲに関する英国法廷の判決と
Calling a man ‘bald’ is sex-related harassment, employment tribunal rules
(男性を「ハゲ」と呼ぶのはセクハラ、雇用法廷の裁定)
URLリンク(www.theguardian.com)
米イェール大法学部教授の反論
It’s Not Sexual Harassment to Call Someone ‘Bald’
(誰かを「ハゲ」と呼ぶのはセクシャルハラスメントではない)
URLリンク(www.bloomberg.com)
後者の日本語訳論
URLリンク(courrier.jp)
スレチ、お粗末。

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

Private Sub CommandButton1_Click()

End Sub

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

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

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

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

336:デフォルトの名無しさん
22/05/30 13:30:00.03 0Z9/8mJh0.net
>>328
自分で試すことってできませんか?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch