X

Excel VBA 質問スレ Part76

レス数が1000を超えています。これ以上書き込みはできません。
2022/05/10(火) 11:44:31.14ID:4FhYKkQU0
>>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
2022/05/10(火) 11:55:55.13ID:G5I31YZG0
Cを必要なだけ右に寄せてからその操作すれば?
ぴったり位置合わせしたいとかなら  https://www.moug.net/tech/exvba/0120023.html 辺り参考に
2022/05/10(火) 11:58:47.56ID:Q/OuvBXU0
>>56
どのチェックボックス?フォーム?activeX?
2022/05/10(火) 13:26:52.13ID:EvytVRjpd
>>57
Controls.Addでマクロにパーツを作らせて位置を指定するか自動計算させれば簡単
自分でイベント作る必要はあるかも
2022/05/10(火) 21:53:08.05ID:4FhYKkQU0
>>63
ありがとうございます。調べてやってみます!
2022/05/10(火) 21:54:52.33ID:4FhYKkQU0
>>61
ありがとうございます。参考にします。
2022/05/11(水) 07:58:45.59ID:VwZpfkps0
>>62
「チェックボックス」だけの情報だと二つあるんですね
すみません。
調べたところフォームのほうのチェックボックスでした。
2022/05/12(木) 01:22:53.69ID:UrRQ3K070
'これ実行するとどうなりますか?
'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
2022/05/12(木) 02:12:42.08ID:y5qWaFnT0
>>67
常識
https://blog.apar.jp/program/8900/
2022/05/13(金) 15:49:14.84ID:m1gysKVC0
Dim a
a = Range("A1:B2")

これだけでaが2×2の配列になるとたった今知ったのですが
このことを手放しに使って良いのでしょうか、それとも邪道だから
Dim a(2, 2)なり要素数まで指定した方が良いのでしょうか。
2022/05/13(金) 15:56:46.69ID:Bn5ry0500
>>69
問題ない
VBA使えるやつならみんな知ってる
71デフォルトの名無しさん (ワッチョイ d35f-PvPk)
垢版 |
2022/05/13(金) 16:05:23.39ID:zF4dJdoD0
それ便利だけど誤読しやすいので静的メソッドにしてる
ArrayExt.FromRange(Me.Range("A1:B2"))
みたいな
2022/05/13(金) 19:41:50.80ID:q/KvZ9/90
officescript調べてみたけど意外と分かりやすかった
これならVBAがなくなっても大丈夫そう
2022/05/13(金) 19:50:05.37ID:q/KvZ9/90
>>69
型使わないとバリアント型だから二次元配列になるわけか
2022/05/13(金) 19:53:17.10ID:q/KvZ9/90
ちなみに参考にしてる人はこう書いてた
Dim a As Variant
a = Range("A1:B2").Value
2022/05/13(金) 22:54:29.72ID:BcFt2CuGD
aは要するにポインタだからな
2022/05/13(金) 22:58:14.08ID:JesbR9jP0
c以上ならポインた
2022/05/13(金) 23:28:52.57ID:94QyLQ1Xa
>>69
誰も書いていないので驚いたが、
その方法でもいい、のではなくて、
その方法しかない。
あとは Variant を明示するかしないかの違いだけ。
2022/05/14(土) 01:49:07.38ID:5NJ35cqH0
セルの値を取得して書き換えて…ってやるより二次元配列で処理する方が体感3倍くらい速いから、高速化したいなら配列使えばいいよね
ただ他の人もわかるようにとかメンテナンス性考えると避けた方が無難だったり、ケースバイケース
2022/05/14(土) 04:08:54.94ID:wh2tsa6Q0
他人の使い勝手なんか微塵も考えていないヤツが大半だろ現場じゃあ
2022/05/14(土) 04:13:11.38ID:JIfRBOPe0
Variantはポインタじゃなくて共用体
そもそもVariantオブジェクトはVBA固有の機能じゃなくてWindowsに組み込まれてて、別の言語からも自由に使える
どういう場面で役に立つのかわからんけど
2022/05/14(土) 04:32:51.17ID:bV9+cuz+M
ポインタ的な使い方するならVariant型ではなくてObject型
Dim a As Object (総称オブジェクト型)
Rangeオブジェクトに特定するなら
Dim a As Range (固有オブジェクト型)
82デフォルトの名無しさん (ワッチョイ 9b4f-aONe)
垢版 |
2022/05/14(土) 08:18:11.37ID:ddohEedh0
Variantってよく分からん型だよな
Objectもそうでないものも仕舞えるし
.Netで封印されたのも頷ける
2022/05/14(土) 10:07:30.24ID:BHEGSPOf0
>>78
配列の方が断然早いよね。
富○通がVBで作ったEXCEL名簿出力アプリが5時間以上かかってるのが、俺がEXCELVBAで組んだのは30分で終わる。
しかも富○通のはデータ1行ごとにコピペしてるので
動かしてる間コピーのバッファが奪われて他の作業が一切できない。
84デフォルトの名無しさん (ワッチョイ d710-aONe)
垢版 |
2022/05/14(土) 10:48:24.07ID:0kHlnQQT0
オレオレ自慢
2022/05/14(土) 10:57:42.22ID:jjfnS8MSd
VBのコードみてVBAにする際に少し手直しした程度なんだと思うが
どの程度のデータか不明だけど30分もかかるような処理も自分としてはNGだわ
まあどっちも夜流して朝みればいいなら5時間でも一緒程度
2022/05/14(土) 11:08:32.24ID:XMrr4JDhr
何分とかかかる時点でRDBとか外出ししてやれないかとか考えちゃう
Excelには荷が重いんじゃないかとね
2022/05/14(土) 11:27:37.36ID:x+cFGSU+a
どんだけ長い処理でも耐えられて2分までだわ
30分かかるとか論外
2022/05/14(土) 11:39:20.09ID:tj4PNqc2d
そんなに処理に時間がかかるってことは多分生データが数Gクラスだろうからaccessやexcelでは非効率だろう
ここに>83の間抜けさがよく現れてる
2022/05/14(土) 11:43:13.01ID:5E8BmIH10
そんな大規模なデータを扱ったことないからわからないけど
30分もかかったら途中で無限ループに入ってんだろなと思って止めてしまうわ
2022/05/14(土) 11:59:12.73ID:VTp6T5x/0
vbaを30分も動かすってどんな処理だよ
あとあまり長い時間動かしっぱなしにすると大体フリーズしてるぞ
2022/05/14(土) 12:14:29.94ID:jjfnS8MSd
どんな処理でも構わないけどExcelのプロセスが起動してるときに新規のExcel起動>ファイルを開くで開けばいいけど
無意識のうちにダブルクリックなんかで開こうとしたらVBA実行中のプロセスで開かないとも限らないから
30分の拘束ってのは日中ならなし
2022/05/14(土) 12:55:50.88ID:JIfRBOPe0
そんなに速くしたら、フリーズしてないか監視する仕事の人がクビになっちゃうだろ
ああいうのは、わざと1日かかるように作ってあるんだよ
2022/05/14(土) 13:31:33.15ID:wh2tsa6Q0
なんでExcelエキスパート集団の富○通がそんなクソ遅いマクロ書くのか不思議だ。
2022/05/14(土) 15:15:38.33ID:VTp6T5x/0
>Excelエキスパート集団
それはない
95デフォルトの名無しさん (スップ Sdcf-lPuq)
垢版 |
2022/05/14(土) 16:41:13.43ID:9uXA4NxPd
富士通が直接作っているのでないだろうし、たった一つの例で全部がわかったつもりになる幼稚なアホ
2022/05/14(土) 18:27:44.98ID:msymY1pp0
あんまり処理に時間かかるようなやつならプログレスバーやらひとまず動いてることがわかるようなものを入れとくわ
2022/05/14(土) 18:32:44.86ID:qaSd7ep40
1.xlsx、2.xlsx、3.xlsx、・・・、1000.xlsxという連番のブックがあって
そのすべてにssssというシートがあって
そのすべてのD2(R2C4)セルにデータがあるとして

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

ExecuteExcel4Macroとか使ってそんなに難しくなくやれるかと思いきやまるでうまくいかない…
2022/05/14(土) 18:58:29.62ID:lDPvxjtFD
>>94
方眼紙はじめとした使い方への皮肉だろ
99デフォルトの名無しさん (ワッチョイ 2d5f-yvGd)
垢版 |
2022/05/14(土) 19:14:09.21ID:yHnyJFGQ0
>>97
他に条件や例外がないなら自分で書いてる通り「そんなに難しくない」が、どこで詰まってるの?
2022/05/14(土) 19:20:25.44ID:VTp6T5x/0
>>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
2022/05/14(土) 19:26:19.82ID:msymY1pp0
内容あまり理解出来てないのかもしれないけど

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

4使うあたり処理を重くしたくないのでワークブックを開きたくないようにも見えますが
2022/05/14(土) 19:51:35.87ID:jjfnS8MSd
こんな感じになる文字列を作ればいけないか?(フォルダ名とファイル名を変更していく)
MsgBox ExecuteExcel4Macro("'フォルダ名\[1000.xlsx]ssss'!R2C4")
2022/05/15(日) 01:22:22.35ID:xmtudDvv0
MSHTML.HTMLDocumentのbody.outerHtmlに何か代入しようとすると、
あるPCでは問題なく出来るのに、
別のPCではアプリケーション定義のエラーがでる
何故?
ソースは同じなのに
2022/05/15(日) 08:18:10.46ID:Jt2O43PNd
参照設定は?
2022/05/15(日) 13:24:19.34ID:K6VbLnva0
>>68
即レスいただいてたのに遅くなりました。ありがとうございます。
常識なんですね。とてもためになりました。

少数が原因だろうと思いつつもローカルウィンドウの値は整数だし
Fixしても発生するので困ってました。ありがとうございます。
2022/05/15(日) 15:21:30.27ID:xmtudDvv0
>>104
してある
してないと違うエラーメッセージだったような
2022/05/15(日) 17:45:40.00ID:SLK6Xy6bp
>>106
参照不可はない?
2022/05/15(日) 17:49:03.93ID:i2BwfRJap
>>83
依頼元の情報提供不足。対象件数とか。
2022/05/15(日) 20:29:54.61ID:EFSZcQ6p0
VBAで作ったブックを指定するにはどうやるのがいいんでしょうか
VBAで複数ブックを作るとBook1、Book2、…となりますが、
どうやってそれぞれのブックを指定してやればいいのかが分かりません
2022/05/15(日) 20:48:22.92ID:xHyGsu5B0
ブックの作成の際にワークブック変数にセットする
set=workbooks.add
2022/05/15(日) 21:20:44.06ID:i/ziY72x0
変数に格納するってのは名前をつけてあげるみたいな意味合いがある気がする

変数作ってセットすれば呼び出しやすい
2022/05/15(日) 22:58:08.71ID:e0cA7YQF0
Set wb = ThisWorkbook
Set ws = wb.Worksheets("sheet名")
とやっといて、
カーソル移動したいだけなのに、
ws.Range("B3").Select
とやったら、
「RangeクラスのSelectメソッドが失敗しました」
と出て動かなくなって・・・???

原因はRange.Selectやる前に
当該sheetをActivateしていないことだと
今日、ようやく知ったアタシが通り過ぎますよ・・・
2022/05/15(日) 23:36:58.31ID:VONG1GsX0
>>101
おっしゃる通りワークブックを開きたくなかったんです

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

ありがとうございました。
2022/05/15(日) 23:39:04.92ID:km049kvp0
>>112
VBAやっててSelect使うことなんてほぼ無いんだからその仕様を知らないことを気にしなくていい
2022/05/15(日) 23:53:26.84ID:sFHTlWBy0
>>113
http://officetanaka.net/excel/vba/tips/tips28.htm
フルパス指定すればいけるっぽいけどそーゆー話ではないのかな?
2022/05/16(月) 00:14:35.90ID:D08mu/WY0
セルとかSelectするのは最後くらいだもんなあ
2022/05/16(月) 01:37:32.91ID:PWfPx8Kl0
>>107
無いんだよね
代入が出来ないだけで表示は出来るんだけど、
""の空文字すら入れられないのは何なのか…
型が一致しないエラーでもないし
仕方がないからDocument.writeで代用したけど
2022/05/16(月) 07:25:27.55ID:x3MSJzWb0
>>114
気象庁の過去気象データ1時間値を
DLしようとしたら、
1日ごとにURLが違うので、
1日分を読んではコピペさせてるんだけど・・・
単体項目なら1年分一度に落とせるけど、
1観測地点の全項目は1日ごとの模様
2022/05/16(月) 09:05:21.75ID:gw7DnXAE0
>>118
データをコピペするだけならカーソル移動は必要ない
それと、1日ずつDLだと365回になるけど、項目ごとなら15項目、15回のDLで済むからずっと早く終わると思うんだけど
2022/05/16(月) 10:02:47.99ID:a802uHDS0
ワイなら大まかに
「データをURLでフェッチする」機能
「データをシートに表現する」機能
とかに分けてそれぞれの中でループする

どんなデータ取るんかとか知らんけど
過去の気象データなら変化ないんやろから(少しずつしか追加されないし)
あらかたDLしちゃって毎日追加する運用でよくね
Accessで動くか知らんがワイなら楽だし(R)DBにして、
Excelは表現に特化させる
まあDBとして考えるなら119の言うように特定のデータをカラムとして取り込むほうがいいけどね
2022/05/16(月) 11:38:04.10ID:DOkjRxjB0
>>115
この人の書くコードは読みやすいよね
2022/05/16(月) 13:47:28.98ID:CQNp6U12M
>>119
>>118
> データをコピペするだけならカーソル移動は必要ない

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

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

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

' 単位読取りテーブルのデータ行をコピーして、
' DBテーブル最終行の次行から貼り付ける
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
123デフォルトの名無しさん (スプッッ Sddb-lC0j)
垢版 |
2022/05/16(月) 22:38:43.92ID:zF5DsILOd
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を入力
これを終わりまで自動入力したいのですが、どう書けばいいでしょうか。
いまいち説明がうまくできなくてすみません。
2022/05/17(火) 06:57:27.10ID:OSHWxoLA0
>>110
ありがとうございます
まさかこんな単純な解決法だったなんて
勉強になりました
2022/05/17(火) 14:46:10.58ID:le3TeRDS0
>>123
こんな感じ?
https://i.imgur.com/1sgRHL7.png
126デフォルトの名無しさん (ブーイモ MMe1-mtI6)
垢版 |
2022/05/17(火) 19:15:44.32ID:ZA1GChKVM
>>123
>いまいち説明がうまくできなくてすみません。
問題を上手く説明できる事は、プログラミング能力の上達にとても大事な事。
127デフォルトの名無しさん (スプッッ Sddb-lC0j)
垢版 |
2022/05/17(火) 22:53:48.79ID:bIs4gfyOd
>>125
ありがとうございます。
試してみてるのですが、画像G14が何をしてるか教えていただけないでしょうか・・

>>126
(・へ・)
2022/05/17(火) 23:08:31.99ID:le3TeRDS0
>>127
>上に隣接するa群の一番上(1 a)の数字を参照
この部分

E,F列は切り替わった部分を取得している。row()にすることで、切り替わった部分を取得できる
maxで、切り替わった直近を取得
あとはindexmatchでA列を取得
2022/05/18(水) 00:40:35.16ID:54FLML710
>>127
人様に迷惑掛けるだけの人?
130デフォルトの名無しさん (ワッチョイ 9b4f-aONe)
垢版 |
2022/05/18(水) 23:00:11.54ID:08bF+6I50
質問です
EXCELのアプリケーションを別途立ち上げて
それをVBAを実行しているブック側から制御することは可能でしょうか?
可能だとすればどのようにすれば実現できますか?
2022/05/18(水) 23:31:31.92ID:yWpeDHxGd
Application.RUN
2022/05/19(木) 06:39:30.30ID:3ImK9i5g0
VBAエキスパートの本見てみたけどこの範囲なら取得するのは楽勝だな
2022/05/19(木) 12:33:14.63ID:uClc3Hkf0
VBAの資格、人気度高いね。
ただ企業によっては何それ??的な見方されるのがちょっと。。
2022/05/19(木) 15:57:56.76ID:ednyHaa30
VBAでWinアプリ制御するマクロの動画作ったんだが誰も見てくれないや。
そういう需要てないのか?
2022/05/19(木) 16:56:56.93ID:OfQgMZCZ0
>>134
API使ってバックグラウンドで制御してるなら見る
2022/05/19(木) 17:15:23.09ID:ednyHaa30
>>135
https://youtu.be/DL9MuwJfXVw
2022/05/19(木) 18:18:22.53ID:H0TVdlz+M
ゆっくり茶番劇® か
2022/05/19(木) 18:19:37.44ID:OfQgMZCZ0
>>136
面白そう、家帰ったら見よう
2022/05/19(木) 21:37:06.79ID:3ImK9i5g0
RPA使わなくてもVBAでも結構出来るんだよね
キーボード、マウス操作出来るしなんなら読み上げも出来るし
アプリ立ち上げと組み合わせれば色々出来る
2022/05/19(木) 22:26:16.70ID:JItdutDu0
RPAは自動化そのものだから、
VBAでRPAを実現してるだけだぞ
141デフォルトの名無しさん (ワッチョイ c38c-i+mZ)
垢版 |
2022/05/19(木) 23:19:27.75ID:5QG/OJCT0
>>136
動画名にExcelって必ず入れとかないと
この手のネタを見たい人に検索で見つけてもらえない

あと時々Excelで予定表の作り方とか番外編としてド素人受けするネタをエサとしてupするとか
2022/05/19(木) 23:27:11.45ID:uClc3Hkf0
ゆっくりの顔はこれから無料で使用できなくなるんだよね?
2022/05/19(木) 23:45:08.95ID:EjpQ3dyV0
できる
動画名にゆっくり茶番劇って入れたらダメ
2022/05/19(木) 23:51:09.33ID:ednyHaa30
>>141
トンクス。
オレのExcel2013だから今風のネタが作れないんだよね。
祝日込の予定表作ろうかと思ったら、自分のやつじゃpowerquery使えないことに気づいたわ。
だから誰もやってないネタとしてRPAもどきをやってみた。
2022/05/20(金) 12:02:22.42ID:QJ3dWDHN0
2013でパワークエリ使っていた同僚いたけど、どうやったのだろ??
146デフォルトの名無しさん (ワッチョイ 9b8e-lPuq)
垢版 |
2022/05/20(金) 14:24:00.71ID:Sdn4LcDR0
>>145
使えるぞ
>>144が馬鹿なだけ
2022/05/20(金) 15:47:49.30ID:J0VXxMmC0
>>144
まぁ、やってみなはれ。
https://www.microsoft.com/ja-jp/download/details.aspx?id=39379&CorrelationId=85f847dd-369e-4417-b604-6a2f3c673084
2022/05/20(金) 16:37:29.66ID:zIX8lMtd0
アドインを入れなきゃ使えんなんて知らんわ。
まあ、やってみるよ。
2022/05/20(金) 18:17:06.14ID:QJ3dWDHN0
確かに。知っている人は少ないはず。2013にパワークエリアドイン。
2022/05/20(金) 21:07:42.32ID:vMDI6+gYM
>>149
使いたくて見つけられないのは馬鹿だと思うよ?
2022/05/20(金) 21:09:21.29ID:7ynD7rzD0
ニッチな動画すぎるわ
こういうのはたまに腕前を見せる程度でいいと思うぞ
2022/05/20(金) 21:34:55.10ID:Dykg0reN0
エクセル動画って意外と伸びないんだよ
再生数あげてる動画も、数年かけてやっとこさ5桁とかそんなん
2022/05/20(金) 22:12:27.54ID:jYa2tCV10
文字には勝てんよwww
2022/05/21(土) 00:43:35.28ID:tFOC1nFU0
YouTubeでしょ?
Excel動画の一部で100万回とか200万回再生動画あるけど、あれは例外かな?
配信者が人気度高いとか?
2022/05/21(土) 01:12:54.43ID:FuQQRFwo0
ぶっちゃけいちいち動画にするのやめてくれとしか思わんな
テキストに書いてくれと
2022/05/21(土) 07:53:33.56ID:QJ4+3poJ0
それは見なきゃいいだけじゃね
2022/05/21(土) 08:06:57.86ID:UbenPHXM0
>>156
2022/05/21(土) 08:54:23.72ID:ZErRlfK3d
たいがいのことは検索すればブログと動画と両方出てくる
好きな方を見ろとしか
2022/05/21(土) 09:03:39.72ID:9Ja/LFqb0
>>153
文字だとさ、その分の数行を細切れに書くやつがいてさ、
その分だけ見せられても困る事が多い。
解説書気取りなんだろうけど。
VBAならいいけど、pythonとかだと全体が見れないとな。
2022/05/21(土) 12:06:30.15ID:zgbylN/DM
>>159
ドーガってソース全体見せながら饅頭が喋るの?
2022/05/21(土) 13:24:13.30ID:yO41HbkGd
64bitだとdatepickerが使えないんだけど代替有りますか?
2022/05/21(土) 22:05:53.36ID:UbenPHXM0
>>161
無いんだな、これが
あと64bitじゃなくて2013か2016あたりから使えないはず
2022/05/22(日) 00:44:38.46ID:VeiX84dqd
クリップボードに

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

000 1
かかか 


あかさ たなは 358 22558

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

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

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


うまく伝わっているかわかりませんが、どのようなコードを書いたらいいですか?
164デフォルトの名無しさん (スップ Sdba-LYQt)
垢版 |
2022/05/22(日) 02:13:20.90ID:EshCCJ/od
>>163
まずはちゃんと伝えるように書け
2022/05/22(日) 02:46:34.46ID:EqID4SVmM
>>163
よくわからん部分もあるが
クリップボードからテキストフォーマットのデータをstrに読み込んで改行ごとに分割(spritかね)
分割した文字列を更にスペースごとに分割して2次元配列にいれる
あとはそれをセルに転写すればいいんじゃないの?
分けるのが改行と空白両方ならどっちかにリプレースしてからスプリット
2022/05/22(日) 06:43:53.78ID:e+a5DD9Ja
>>163
とりあえずその状態で欲しい結果を書け
2022/05/22(日) 06:45:54.76ID:g+ilDpCn0
>>163
連続する改行と空白を消す。
for i = 1 to 5
a = Replace(a, vbCrLf & vbCrLf, "")
a = Replace(a, " " & ” ” , "")
next

改行を空白に置換する

splitで分ける

配列をセルに入れる
2022/05/22(日) 06:46:20.24ID:g+ilDpCn0
>>166
A1に「かかか」B1に「いいい」おなじように繰り返してJ1に「あかさ」、次はA2に「たなは」が入るようなイメージで
2022/05/22(日) 08:05:25.80ID:kuwcJLnp0
どういう順番にしたらA1にかかかが来るのかがよく分からない
2022/05/22(日) 08:09:48.09ID:g+ilDpCn0
A1に「かかか」

A1に「あああ」

間違えてるだけだろ、それぐらい見抜こう
2022/05/22(日) 08:43:32.82ID:kuwcJLnp0
書かれてる仕様を思い込みで勝手に書き換えたらいかんでしょ
作り込む前に確認を取らなきゃダメだよ
2022/05/22(日) 09:43:55.92ID:aVdyttIba
>>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
2022/05/22(日) 10:01:24.95ID:q4bvZkadM
>>172
あらキレイ
2022/05/22(日) 10:11:15.36ID:RbyXtd/h0
>>173
綺麗に見えるだろ?
このコード、死んでるんだぜ…ヘヘッ
2022/05/22(日) 10:37:59.11ID:TDPiVbwY0
>>163
VBAスレでいうのもアレだと思うけど

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

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

にみたいな感じで
2022/05/22(日) 13:05:55.15ID:QBTEeDJr0
>>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に「かかか」』の謎
・この整形処理前後の処理(処理全体、本当の処理目的)
などにもよるけど。
2022/05/22(日) 19:14:42.01ID:Np0e+b7dd
常にそうだとは言わないけど、VBAでいろんなことしようとする人って
会社内でセキュリティに縛られてVBAしか使えないような環境でこっそりやってる場合が多いんじゃね

うちなんてpowershellさえ使えない
2022/05/22(日) 21:09:09.39ID:2g8+RnwC0
>>177
VBAとVBScript/Jscriptはそれの定番だよ。
IEがなくなるとスクレイピングができなくなるよな。
そういう環境下だと、どうするんだろう。
2022/05/22(日) 21:19:32.54ID:uG5Z2bGad
163です。
レスくださった方ありがとうございました。

結論から言うと、>>172を加工してなんとなくうまくできました。
A1セルは「あああ」が正しいです。すみません。
2022/05/22(日) 21:33:47.57ID:g+ilDpCn0
それぐらい分かってるから大丈夫だ
2022/05/23(月) 17:38:33.02ID:KrqlZBhkM
表示するのにラグを発生させたい場合sleepかウェイトを試して見たのですがソースの途中に入れても実行最初に止まって全部表示されてしまうのですがなにかいい方法はないのでしょうか
2022/05/23(月) 17:51:32.07ID:KArKRscP0
何の表示だよ
2022/05/23(月) 17:58:05.38ID:KrqlZBhkM
セルに挿入です
for文を挟んでいるとどうもすべて止まって一括表示されてしまいます
2022/05/23(月) 18:38:04.00ID:nw7KfNpjD
ループ内で都度再表示させればいいんじゃねーの
2022/05/23(月) 18:45:16.94ID:S7FOVsdv0
excelのシートのA列に◎オプションボタンActiveXを付けた、B列には商品名(3000件くらいある)を入れた。
◎ りんご
◎ みかん
◎ ぶどう
◎ ばなな

ぶどうを選んだら、TRUEになった番号は「3番」って返ってきているのですが、3000件を設定するのが大変で一括で設定できる方法があれば何かヒントを教えてください。
2022/05/23(月) 20:02:47.45ID:BtAHO3WV0
>>181
なんのためのラグかを書けばもう少しマシなやり方を教えてくれるかも
2022/05/23(月) 20:48:26.86ID:e/WRg45j0
>>183
DoEvents
2022/05/23(月) 20:58:57.01ID:BtAHO3WV0
Sub foo()
Range("a1:z100").Formula = "=rand()"
End Sub
こういうのを徐々に表示したいってなら、無理だ
2022/05/23(月) 21:43:20.23ID:2/Utrmz50
Do Eventsってイマイチちゃんと意味を理解しない状態で使ってる気がする

なんか図形でアニメみたいな動きさせるとか
入れると安定したり
2022/05/23(月) 23:30:03.20ID:e/WRg45j0
>>189
WindowsというOSの(ほぼ)すべてがイベントで動いてる
キー入力も画面表示もディスクアクセスも、何をするにもイベントが必ず使われる

普通に使ってるだけで、ユーザーの関知してないところで毎秒数十万回以上のイベントが発生してて、その一部は溜めたり無視することもできる
そこで溜まったイベントをまとめて処理するのがDoEvents
2022/05/23(月) 23:44:03.30ID:lhQpV8J50
肥溜めの水で流すボタンだな
192デフォルトの名無しさん (スップ Sdba-LYQt)
垢版 |
2022/05/23(月) 23:54:22.46ID:hvqO78Q3d
>>190
中途半端な知識の人の回答だな
所詮はExcel使いか
2022/05/24(火) 00:04:30.71ID:voOeNnQV0
そうか?
2022/05/24(火) 01:52:28.78ID:KUFh4POM0
ググって読んでもさっぱりわからんがプロシージャの共通化(´・ω・`)これかも。
2022/05/24(火) 02:50:59.45ID:iiO+sB1VM
>>190
ExcelのVBAがWindowsの全てのイベントを処理しているとでも思ってんの?
いつの時代のWindowsだよ
196デフォルトの名無しさん (ワッチョイ 372f-tVBN)
垢版 |
2022/05/24(火) 06:09:04.44ID:VAh5gH+20
>>195
話せ。
197デフォルトの名無しさん (ワッチョイ 0eda-yjPv)
垢版 |
2022/05/24(火) 06:13:25.21ID:3Lu4tPby0
タスク
2022/05/24(火) 13:00:25.03ID:voOeNnQV0
60歳70歳の古参プログラマーじゃないんだからさ
2022/05/24(火) 21:38:10.53ID:ylp1zOdx0
Loop中など他からの割り込みの余地入れる=DoEventsかと思ってました
厳密な意味は知らずに使ってました
2022/05/24(火) 22:07:09.92ID:kwRZndg1d
昔はWindowsのイベントループそのものだったけど、今は>>199くらいの認識の方が正しいよ
今のExcelは裏でスレッド使いまくってるから複雑
2022/05/24(火) 22:24:18.97ID:L7ubAEHL0
少しまだ難しいですが、とりあえずはwindowsの処理で無視していた分を一旦返してあげるみたいな処理なのだと認識しました。
2022/05/24(火) 22:30:40.02ID:1UrgJSe10
昔はシングルコアで激重だったから適度に返さないとすぐに応答なしになった
今はマルチタスクで割と重い処理も平気
2022/05/25(水) 05:02:47.05ID:1b7KkSYk0
個人用マクロブックのプロシージャからシートに挿入されているマクロのボタンを押す方法を教えて下さい
2022/05/25(水) 06:07:16.42ID:BON/kfv30
privateを削除するんじゃなくて?
物理的にクリック?
2022/05/25(水) 06:43:21.13ID:1b7KkSYk0
物理的にではなくシート側のボタンのクリックイベントのプロシージャを個人用マクロブックのプロシージャから動かしたいです。
2022/05/25(水) 06:45:16.14ID:1b7KkSYk0
application.runは駄目でした
207デフォルトの名無しさん (ワッチョイ 0eda-yjPv)
垢版 |
2022/05/25(水) 06:47:11.61ID:Vyx13HCI0
イベントとか言うから初心者が勘違いする
2022/05/25(水) 07:53:58.12ID:SJVW4y9pr
プロシージャの中身を外出ししようとか考えたのか?
2022/05/25(水) 08:31:27.12ID:2Cw1QSym0
>>203
Call
2022/05/25(水) 09:47:51.39ID:rgUSKbgWd
いやここはレイズだ
2022/05/25(水) 18:45:23.11ID:cRKMftFU0
>>206
呼び出し先のブック名は入れてるのかもしれないけどモジュールが複数あってモジュール名は入れてない、とか?
2022/05/25(水) 19:54:25.66ID:ZQqE1PHN0
説明が少なくて申し訳ありません。
マクロボタンのついた会社の帳票のマクロボタンを押して処理をした上に自分の個人用マクロブックの処理がしたいです。私は会社の帳票のマクロを変更する技術も権限もないのでこのような形を取っています
213デフォルトの名無しさん (アウアウウー Sac7-yjPv)
垢版 |
2022/05/25(水) 20:09:39.86ID:ySKajOtFa
やっちゃいけないことじゃねーの
2022/05/25(水) 20:44:02.25ID:rgUSKbgWd
会社のマクロにパスワードが掛かってる、かつ起点となるマクロはその会社の方のマクロって事かな?

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

これで行けるんでねえの?
2022/05/25(水) 20:52:50.14ID:D9uW2fk+0
変更する技術がないなら触らない方が良いと思うよ
2022/05/25(水) 21:08:25.40ID:UbZSbjiw0
そもそも権限のないものを突破しようってのは倫理的にどうなのって気がするが
まずは上司なりなんなりに相談するところからじゃね
2022/05/25(水) 21:14:00.59ID:oImj9UUVM
ややこことは辞めたほうがいいね
2022/05/25(水) 22:29:41.62ID:BtdSsAyL0
パスワードかかってるマクロなんて適当な野良アプリでわかるけどな
2022/05/26(木) 00:34:12.72ID:O+gRo7JH0
会社用のマクロ実行したあと、個人用マクロを実行するだけの作業なのに
あくまでも自分の分からない領域まで手を入れたいってのは分からんな
マクロ壊して分かりづらい変なトラブルになったら責任云々とかになりかねないかもしれんぞ

214のやり方がむりなら諦めるか上長に相談するべきやと思うで
2022/05/26(木) 06:53:49.33ID:FGzk4ul90
>>219
100個ぐらいあるエクセルファイルを開いて、そのエクセルファイルのマクロボタンを押して一回目の処理をして次に個人用マクロブックに作った処理をしてエクセルファイルを上書き保存して閉じるを繰り返さなくてはいけないのでマクロ化したいのです。エクセルファイル側のプロシージャを個人用マクロブック側に持たせるのが一番簡単かなと
221デフォルトの名無しさん (ワッチョイ 9a4f-9R20)
垢版 |
2022/05/26(木) 06:58:26.73ID:5W+gZAxj0
その会社の帳票マクロとやらのファイルを開いてボタン押せるんならSendKeys使えば何とかなるんじゃねーの?(鼻ホジ)
2022/05/26(木) 07:56:10.65ID:JEeygHRrr
>>220
工夫するのは上長に100個もある無駄なExcelファイルについて改善を提案すべきじゃね
下手なやつの自動化は害にしかならない
それでだめなら自分の責任でこういうやり方していいかとか聞くとかそういう流れにはもうしたんやろ?

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

これ公務員とかならマジで税金の無駄やなw
2022/05/26(木) 08:40:43.23ID:MTu1kK/A0
公務員なんて文系の仕事だから、効率のいいデータ整理やプログラミングができるやつなんてほぼいない
しかし理系の人材に役所仕事させるのは税金の浪費以上にもったいない
2022/05/26(木) 14:50:09.50ID:6r93DwI70
>>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"
225デフォルトの名無しさん (アウアウウー Sac7-yjPv)
垢版 |
2022/05/26(木) 15:48:41.66ID:5fQbWZ9ra
上司に黙ってデータ改竄とかしたら
会社の資産を横領できちまうな
226デフォルトの名無しさん (ワッチョイ 8b01-8jyA)
垢版 |
2022/05/26(木) 18:34:16.06ID:MJ/jCOeZ0
農協で30年勤めたOLがやりそうなイメージ。
227デフォルトの名無しさん (ワッチョイ 8b01-8jyA)
垢版 |
2022/05/26(木) 18:36:23.42ID:MJ/jCOeZ0
郵便局の場合、昭和のころから歴代の局長が引き継いでそう。
漁協の場合、いくつもの窃盗グループがありそう。
悪いこととは知らなかったって言いそう。
2022/05/26(木) 22:05:05.56ID:KppvSZ/JH
今日いちにち会社で配列に関する記事を読んでましたがここ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
2022/05/26(木) 22:19:00.22ID:KppvSZ/JH
一応こんな感じのデータです

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
2022/05/26(木) 22:19:48.67ID:KppvSZ/JH
やっぱりずれた。。。(>_<)
2022/05/26(木) 22:28:17.29ID:dA4WjGxV0
>>228
Excelの行を1行1行Deleteするのはどうやっても重くなるから出力用の配列を作るのがいいかな
2022/05/26(木) 22:30:55.09ID:6l5xx5Q8d
配列を使ってんなら配列の中で削除処理しないとそりゃあ意味無いでしょ
2022/05/26(木) 22:46:06.64ID:KppvSZ/JH
>>231
>>232

ごもっとです、、(;^_^A
今日は疲れたので明日ちょっと調べて試行錯誤してみます。レスいただきありがとうございました。
234デフォルトの名無しさん (ワッチョイ 768c-aDUG)
垢版 |
2022/05/26(木) 23:00:25.66ID:Wrt5fLCv0
いつもやる方法があるけどどのくらい早いのかはよくわからん
2022/05/26(木) 23:01:04.69ID:6l5xx5Q8d
ユニークなキー列がもしあればディクショナリー使うのが速いよ
まあ難しければ配列でも全然良いけど
2022/05/26(木) 23:26:48.34ID:KppvSZ/JH
>>234
少なくとも私のコードよりは速いんじゃないかな。。
15万行を10分以上かかってます(;^_^A

>>235
ディクショナリーとは初めて聞きました。でもユニークなキーがありませんでした。。
SKU Codeという商品コードは基本ユニークなんですが3行ずつ同じ商品コードが並んでるんです。。(;^_^A
237デフォルトの名無しさん (ワッチョイ 768c-aDUG)
垢版 |
2022/05/26(木) 23:42:29.81ID:Wrt5fLCv0
>>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
2022/05/26(木) 23:50:53.02ID:HeWhwrio0
>>228
・最初にセルの内容をvariantの2次元配列に格納。

・そのvariantを弄くり倒す。

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

セルはフォントだの背景色だの罫線だの表上のアドレスだのとにかくいろんな情報がてんこ盛りなので、valueみてりゃいい処理ならできるだけ書き換えない。
2022/05/27(金) 00:18:49.05ID:JbgC4v+W0
あと、蛇足なんだけどソースでやってることそのものをコメントで書いてもあまり意味が…。

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

とか

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

は、いらないのではと。


もひとつ、削除系処理は下からループさせたほうが無難な気がしないでもない。
2022/05/27(金) 00:19:25.67ID:JbgC4v+W0
あ。ループは俺の読み間違いだ。ごめんなさない。
2022/05/27(金) 00:22:08.18ID:5SJXPRgg0
>>235
Dictionary使うならユニークなキーがなくても行番号をキーに突っ込めば大体応用効くよね
アイテムはArrayで格納すればいいし
2022/05/27(金) 00:30:45.85ID:5SJXPRgg0
ちなみに行削除は、DeleteTargetRowみたいなRange型の変数を使って、削除対象の行が出たらその変数にUnionしていってまとめて削除、がまだ速いかな
243デフォルトの名無しさん (ワッチョイ 768c-aDUG)
垢版 |
2022/05/27(金) 01:16:57.81ID:+979Xq8C0
>>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
244デフォルトの名無しさん (ワッチョイ 768c-aDUG)
垢版 |
2022/05/27(金) 02:06:50.25ID:+979Xq8C0
myRange.Offset(1, 0).Resize(myRange.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy tempSheet.Range("A1")
を下に修正
myRange.SpecialCells(xlCellTypeVisible).Copy tempSheet.Range("A1")
2022/05/27(金) 06:53:03.71ID:0WSlRFUXd
>>241
お何か良いアイデアかも
横からだけど使わせて貰おう
2022/05/27(金) 06:53:21.55ID:XEPyrX550
>>237
おそら>>243さんもそうかな?

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

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

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

>>241-242
ちょっと時間あるときに勉強してみますね(;^_^A
2022/05/27(金) 07:26:42.06ID:XEPyrX550
>>243
えっ!!何が起こったの?
こっちも5秒で終わりましたっっ!!!えええぇ信じられないスゴイスゴイ!!!(笑)

ちょっと後でゆっくりF8で動かしてみようと思います!!!
本当に助かりました!ありがとうございました!!!
(´;ω;`)
2022/05/27(金) 07:28:44.47ID:XEPyrX550
>>244
見落としてましたスミマセン。修正してなくてもめちゃくちゃ速く動きましたが
こちらも動かしてみますね。ありがとうございました!m(__)m
2022/05/27(金) 08:09:16.73ID:XEPyrX550
>>244のは見出しが消えるのを修正したコードでしたね(;^_^A

あと、会社のPCで動かしてみたら2秒もかかりませんでした。
素晴らしいコード、本当にありがとうございましたm(__)m 配列の勉強したいと思います。
2022/05/27(金) 08:25:54.12ID:0WSlRFUXd
質問者の要望事項がクリアだったしサンプルコードや表のイメージを出してくれたから回答がしやすかったと思います
殆どの質問者はそんな事までしないクレクレちゃんだから
2022/05/27(金) 08:34:33.43ID:XEPyrX550
>>250
昔のテンプレに沿った質問の仕方してなかったのでダメ元でしたが
最低限やるべきことはクリアしてたみたいで良かったです。
(*^-^*)
2022/05/27(金) 10:41:33.58ID:X2EnXYhx0
>>250
これはほんとにそう
ふわっと伝えるだけできちんと勝手に書いてくれると思ってるやつの多いこと
253デフォルトの名無しさん (ワッチョイ 97f6-8jyA)
垢版 |
2022/05/27(金) 11:15:34.63ID:S0cy91Tb0
エクセルで10万行以上とか設計が間違ってる
2022/05/27(金) 12:57:26.47ID:fJfHid2B0
定常業務としてはExcelではやらなくなるにしても、
10万行相手に、最初の試行錯誤をExcelでやってみる
というのはよくある話かと。

設計云々はそれが分かってから。
2022/05/27(金) 13:09:45.71ID:X2EnXYhx0
ワイの感覚では数百行とかでもExcel脱却したいし、
こんなんSQLと適当なスクリプトですぐ済むやろ
Excelになってるから重くなったりしちゃうだけで
Accessはしらん

みんなExcel万能思想すぎるんだよなあ
2022/05/27(金) 13:45:31.62ID:x8n9vcRZ0
職場で与えられた環境でどうにかしようとすると、
結果的にVBAやバッチファイル、PSスクリプトになる気がする
2022/05/27(金) 14:07:07.28ID:s+hQ4v9CM
SQL書けるんだったら
そもそも質問主はこのスレに来とらんことに気付かない、
ただのマウンテンゴリラはウセヤガレ
2022/05/27(金) 14:16:48.65ID:pbjQK1XdM
VBAもできないからこのスレにいるわけで、間違った道に進む前に正してあげるのは良い
2022/05/27(金) 20:25:14.34ID:e5D1B4Eg0
個人用マクロブックからエクセルのシートのマクロを動かす方法がわかりました。ファィル名をtest.xlsm、シートのボタンに登録してあるマクロをsub test()~end subとして
Application.Run"'test.xlsm'!Sheet1.test"
これで動きました。Run以下をダブルクォーテーション、ファイル名をシングルクォーテーションで囲むのがポイントです。
260デフォルトの名無しさん (ワッチョイ abda-CQbZ)
垢版 |
2022/05/28(土) 02:17:11.31ID:wx0k8mom0
そもそも個人用ってオマ環
2022/05/28(土) 03:26:15.21ID:wx0k8mom0
権限のない新入社員が勝手にマクロ作って社内のデータ壊したらどうなるかわかっているのかな?
そのデータほんとに削除していいのですか?
条件ミスって消してはいけないデータ削除してしまったら・・・
やろうと思えばできるけど俺は怖くて自前のマクロなんか動かしたいとは思わんのだがな
2022/05/28(土) 03:40:33.21ID:Yook3X5e0
>>261
データいじる前にバックアップしないのか?
2022/05/28(土) 05:54:52.90ID:2n2fc/gL0
>>261
間違えてデータを削除するプログラムを書いてしまうなんて普通ありえるのだろうか?AIが暴走するといかんからパソコンやスマホを使うのもやめたほうがいいレベルの発言だな
2022/05/28(土) 06:07:09.43ID:PBRR2XJta
>>261
なんでこんなスレ見てるんだ?
2022/05/28(土) 08:04:53.73ID:oqZ/P1Bcr
これをループで100個くらいのブックに処理するらしいから漏れのほうが怖いね、ワイ的には
「自動化したから漏れたんだ」とか言われたら今後やりづらくなる
2022/05/28(土) 09:48:04.57ID:PJ5ZLRH80
他の.xlsxのファイルの中身を、新たにExcelの画面を開かずに、
配列などに読み込む方法はありますか?
読み込みたいファイルのレコード数は毎回違うのですが、
可能なのでしょうか
2022/05/28(土) 09:52:31.71ID:SCHew0ynd
マクロ4.0
もしくはアドレス直指定

visible=False だと実際は開いてても見えないように出来たんだっけか?
2022/05/28(土) 11:35:21.85ID:4vP5xCiD0
aに16進数のABを代入するときは
a=&HAB
だけど、
aに2進数の100を代入するときはどう書く?
a=&B100
だとエラーになるんだが・・・・
269デフォルトの名無しさん (ワッチョイ 2b2c-2OYr)
垢版 |
2022/05/28(土) 11:39:37.94ID:81XaDMLN0
>>263
cd /
rm -Rf *
2022/05/28(土) 12:20:10.23ID:XKEF46cS0
そも2進数なんてvbaにあったっけ
2022/05/28(土) 13:12:36.54ID:bNMWJIq90
2進数を表すリテラルはないので、16進数や8進数で代用。
変換できればいいのならワークシート関数にある。
2022/05/28(土) 13:19:54.56ID:Yook3X5e0
>>268
専用の命令はないことも関数のサンプルもググったらすぐ見つかったが他人を辞書代わりにするつもりとかか?
273デフォルトの名無しさん (ワッチョイ 934f-XmKI)
垢版 |
2022/05/28(土) 14:33:33.04ID:K6Jk35Ar0
旧BASICやアセンブラ扱ってた奴なら
少なくとも1バイト、多ければ2バイトまで表現出来る
2の倍数を覚えてるから無問題
274デフォルトの名無しさん (ワッチョイ abda-CQbZ)
垢版 |
2022/05/28(土) 15:36:05.64ID:wx0k8mom0
>>263
初心者が作ったマクロなめんなw
2022/05/28(土) 16:00:35.49ID:gUD13Ggk0
マーカー付折れ線グラフで、マーカーの色と透明度を変えるマクロがなんかうまく行かなくて、
折れ線の線種や色、透明度は素直に変更出来ても、
マーカーの色がデフォルトに戻ったり、透明度を変更出来なかった。

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

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

なんと、なぜか唐突に「前景色」と「背景色」をセットで指定してから
透明度を指定すると上手くいくんだと。
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の歴史の中で、これは後付けだったのかしら?
2022/05/28(土) 16:15:07.22ID:2QSEcnRR0
>>274
お前がその新入社員とやらに苦しめられた経験があるのは分かったから、このスレから消えろ。
2022/05/28(土) 17:51:43.48ID:2n2fc/gL0
>>274
初心者が作ったマクロで危険度が高いやつの具体例をあげてみて。今日中に書き込みがなければ、その程度とみなすから
2022/05/28(土) 19:18:12.47ID:6Sv+ENTH0
タコペッティのユーチューブチャンネルより

・週2日出社、週2日在宅の週4日勤務が最高の働き方だと提唱したい
・週休3日制になったら給料を減らされる??そんな考えだからいつまで経っても貧乏なんだよ...
・【朗報】「在宅勤務OK」の求人、コロナ前と比べて7 7倍に上昇!
・【驚愕】リモートワーク求人が13倍に増加w
リモートワークができる人とできない人とでますます格差は広がる...
・【悲報】「会社員に戻りたい!」というフリーランス、全体の3%しかいないw
・【悲報】副業が解禁されても、副業を見つけられずに困窮する会社員が続出...
  日頃から副業をやっておくことの重要性を再認識しよう
・【驚愕】5人に1人は本業よりも副業収入の方が多いことが判明w 
本業よりも稼げる副業とはなんなのか??
279デフォルトの名無しさん (ワッチョイ 518e-95+F)
垢版 |
2022/05/28(土) 20:21:06.97ID:/6Rfh39q0
>>277
幼稚な馬鹿がよく使うマウント取ったと自分で思い込むために使う言葉

何時何分何秒?
今日中に
2022/05/28(土) 20:58:43.99ID:Yook3X5e0
>>277
あるとしたらもともと設定してある参照先やリンクや関数とかを知らずに上書きしたうえで保存するとかかね
このセルはいじらないでくださいって手作り感のあるコメントとか見たことない?
2022/05/28(土) 21:54:10.82ID:2n2fc/gL0
初心者の作ったマクロに悩まされたエピソードがいくらでも出てくるかと思いきや単なる作り話かい?なめてたのはお前の方だったな
2022/05/28(土) 22:12:40.91ID:IaZrO6TYM
操作を間違うと処理が狂ってUsersの中身を全て消そうとしてくるマクロになら遭遇したことある
あとはシンプルにブックやシートの指定をちゃんとしてなくて別に開いてたファイルをメチャクチャにしちゃうとかがまぁよくある可愛い話

あとは別に危険ではないけど新規ブックを作成してそこにマクロを乗せてローカルで実行させるってマクロが
書き込んでくるコードにOption Exlicitが含まれてるせいで変数の宣言を強制するにチェックを入れてるとエラー停止するマクロに遭遇した時はおったまげたな
2022/05/28(土) 22:16:27.20ID:Yook3X5e0
>>281
284デフォルトの名無しさん (ワッチョイ 934f-XmKI)
垢版 |
2022/05/28(土) 22:31:28.88ID:K6Jk35Ar0
初心者でよくあるのは
「すみまdーん、先輩、SQLのDELETE文の発行部分でWHERE区付け忘れてデータ全部消しちゃいましたー」って奴かな
もちろんUPDATE区の場合もある。

当然、UT環境でテストする前だからそうそう致命的になることはないけど
その環境で同時期にテストしてた人達には平謝り、最低1日分のテストデータ作り直しになったりして白い目で見られるようになったりはするな。
2022/05/28(土) 22:53:19.43ID:OmoOa5jA0
すみまdーんで吹いた
2022/05/28(土) 23:22:53.49ID:ns5NBh1I0
>>261


テスト・・・・


って概念無いの?
2022/05/28(土) 23:33:20.31ID:ns5NBh1I0
>>263
本気でsuしたあとに

cd /
rm -fr \*

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

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

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

その方針だと石器時代にすら進めんわ。
2022/05/29(日) 00:01:38.67ID:cc4+tff/0
マクロのブック自体を保存する処理なんか入れてて、しょうもない状態で保存しちゃってたのは見たな
結局以前のバージョンから戻してたけど
2022/05/29(日) 00:54:19.29ID:AvSqkoWo0
ここにいる的確な回答する人って絶対他の言語やってるよなって思う
2022/05/29(日) 01:15:45.22ID:Tyr7S/P60
いや、単にExcel歴30年以上とかのベテランでょ
2022/05/29(日) 03:05:24.56ID:IyXpp6fQ0
Excel歴10年以上あると、「あ。これExcel単体じゃ無理だけど、Excelを呼ぶシェルから呼べば秒」って場面ないかな?
2022/05/29(日) 03:06:21.80ID:5DW63Q/F0
初心者と経験者との間にはかなりの差があるのは確か
2022/05/29(日) 06:13:59.41ID:1Frm/WJwa
>>286
テストのつもりが間違って本番環境に接続しててぶっ壊す例なんていくらでもあるだろw
2022/05/29(日) 07:36:30.39ID:6qc9k+Up0
>>293
だから具体的な例をあげてみてよ。
想像でものを語るな
2022/05/29(日) 07:46:58.86ID:5POrq48Ha
相当具体的だと思うが?
接続文字列の内容を知りたいとかか?w
2022/05/29(日) 08:04:47.09ID:cc4+tff/0
あーコピペしてそれをループすればいいと思ったのか
N+1みたいなの書いてmax connectionsかなんかでDBに接続できなくしたのもいたなあ
297デフォルトの名無しさん (ワッチョイ 934f-XmKI)
垢版 |
2022/05/29(日) 08:21:24.43ID:Mw5w5FDK0
>>293
確かにあるあるだけど
初心者に本番環境弄らせることはまずない
そんなこさせる会社や現場は既に破綻している
2022/05/29(日) 08:33:34.28ID:TXsSTtjO0
あるあるだけどまずないってどっちだよ
2022/05/29(日) 08:41:22.22ID:3FlTI83O0
たまによくあるの親戚
2022/05/29(日) 10:12:00.37ID:6qc9k+Up0
初心者はVBAどころか関数使うのも生意気とされる職場もあるからな。電卓で計算して結果を表に手入力してるようなとこだと
2022/05/29(日) 12:04:43.00ID:g2O32ybKa
>>297
> 初心者に本番環境弄らせることはまずない
お前さんの経験値が低いだけかと
> そんなこさせる会社や現場は既に破綻している
そうだね、でもあるという事実は変わらんけどね
2022/05/29(日) 12:08:27.47ID:+JwoCmYYD
そこマウント取ってどうするの?って話題で盛り上がるよねこのスレ
2022/05/29(日) 12:18:30.79ID:6qc9k+Up0
質問スレなんて基本的に初心者の来る場所なのに、そこで初心者はマクロ使うなと言われてもね
304デフォルトの名無しさん (ワッチョイ 915f-yO3c)
垢版 |
2022/05/29(日) 12:25:41.24ID:G+XUYeIa0
VBAがExcel内の機能しか扱えないよう制限された設計になってるのならわかるが
実際にはファイルやデータベース操作、
やろうと思えばHTTP通信やUI Automationだって「できてしまう」以上、
危険な挙動は常に発生しうるでしょ
2022/05/29(日) 12:29:48.36ID:Orp1XQOd0
表の左にラジオボタンを配置、表をリボンのフィルタ機能で絞り混むと、ラジオボタンが大集合してしまう。
これを何とかしようとセル移動しても一緒に移動しない設定にしたら今度は絞るとラジオボタンが残ったままになる。

フィルタで絞ったところの左のボタンだけ表示させる方法教えてください。
2022/05/29(日) 12:30:57.02ID:+JwoCmYYD
しうるから使うなではなく、
使うなら気を付けろでいい話でしょ
本人のやらかしの責任を負うわけではないんだしさ
なんならVBAもしくはム全般でのやらかしスレでも作ってそこでやる?
2022/05/29(日) 12:36:51.39ID:+JwoCmYYD
>>305
ここで聞くとスレタイにちなんだ回答になるけど良い?
2022/05/29(日) 12:50:30.05ID:Orp1XQOd0
>>307
先生お願いします!
2022/05/29(日) 13:49:12.25ID:82tDbVM80
>>303
何という結論 笑
2022/05/29(日) 14:16:13.78ID:43IRGv4Ka
てか、初心者云々は別にしてマクロ書かない人が来るスレじゃないでしょ
2022/05/29(日) 14:22:21.96ID:Tyr7S/P60
どんな層がきてるのかな?
事務員さんばかり?
312デフォルトの名無しさん (ワッチョイ 992f-SJsm)
垢版 |
2022/05/29(日) 14:27:51.93ID:Ocf930r70
ハゲて層な人かへ来ています
313デフォルトの名無しさん (ワッチョイ 992f-SJsm)
垢版 |
2022/05/29(日) 14:28:07.01ID:Ocf930r70
ハゲて層な人が来ています
2022/05/29(日) 14:47:38.40ID:tM27peK8d
むしろ剛毛で困ってるstep 3でdeleteしたいわ
315デフォルトの名無しさん (ワッチョイ 934f-XmKI)
垢版 |
2022/05/29(日) 18:08:08.67ID:Mw5w5FDK0
>>301
そうか
破綻したブラック企業に勤めているのか
大変だな
2022/05/29(日) 18:28:41.40ID:hxkiJ2jHa
>>315
もう定年退職したけどうちの会社は普通に存続してるけど?
いろいろな部署があることも知らないとか零細にお勤めなのかな?w
2022/05/29(日) 18:47:14.53ID:Tyr7S/P60
禿と白髪だらけってどっちが印象悪い?
318デフォルトの名無しさん (ワッチョイ 992f-SJsm)
垢版 |
2022/05/29(日) 18:53:36.06ID:Ocf930r70
ハゲです
319デフォルトの名無しさん (ワッチョイ b902-CQbZ)
垢版 |
2022/05/29(日) 19:01:01.21ID:5/KWOkVq0
>>317
眉毛なし
2022/05/29(日) 19:43:11.20ID:EFc1zn8HM
エージェント47の見た目が悪いようには見えないからハゲはセーフです
2022/05/29(日) 20:10:27.98ID:AWvveSwHa
それはいつもの「ただしイケメンは除く」って奴だからお前らはアウトだよ
2022/05/30(月) 08:08:23.93ID:OyYzutpm0
白人様ならスキンヘッドが似合うから許す
2022/05/30(月) 08:22:04.62ID:5eMIb3Vrd
イッピーカイエー、マザファッカー
2022/05/30(月) 08:49:54.54ID:6bPCzkava
Excelできるヤツは禿が多い噂
2022/05/30(月) 10:02:36.84ID:9WWLvtDBM
なんでわかった?
2022/05/30(月) 10:14:24.43ID:Yd1KWPfN0
……君のような勘のいいガキは嫌いだよ
2022/05/30(月) 10:46:02.07ID:111npCAX0
ハゲに関する英国法廷の判決と
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/

スレチ、お粗末。
2022/05/30(月) 11:31:07.50ID:pTyzyEGo0
ユーザーフォーム上のボタンをクリックすると、

Private Sub CommandButton1_Click()

End Sub

のように挿入されますが、この挿入位置には法則性はありますか?
2022/05/30(月) 12:13:30.87ID:OyYzutpm0
じゃあ今度からこのスレのみんなの事を禿って呼んでええか?
2022/05/30(月) 12:20:22.39ID:wDXjGZuh0
俺はExcel全然できないんだけど
2022/05/30(月) 12:20:41.12ID:Yd1KWPfN0
毎回豊田真由子口調で言うなら許す
2022/05/30(月) 13:30:00.03ID:0Z9/8mJh0
>>328
自分で試すことってできませんか?
2022/05/30(月) 14:03:07.86ID:OgQlhvU6M
この、は♥げ♥
2022/05/30(月) 14:03:43.38ID:OgQlhvU6M
>>328
あります
335デフォルトの名無しさん (ワッチョイ 992f-SJsm)
垢版 |
2022/05/30(月) 16:13:01.26ID:ytFfApAu0
STAP細胞はありますか?
336デフォルトの名無しさん (アウアウウー Sac5-2OYr)
垢版 |
2022/05/30(月) 16:27:46.26ID:Z6OL71NLa
>>330
https://www.youtube.com/watch?v=VctFTEm1XTE
2022/05/30(月) 19:45:13.20ID:pTyzyEGo0
何か変な奴が増えたな。
前はまともな回答が得られたんだけど。
無職か
2022/05/30(月) 22:28:34.36ID:U5Ze+/Ia0
このハゲー
2022/05/31(火) 05:25:49.12ID:qZPc3K6R0
この禿げぇぇぇ!!
2022/05/31(火) 12:16:40.12ID:e8W8kp4L0
剃ってますが、何か?
2022/05/31(火) 15:23:45.24ID:qZPc3K6R0
ツルッツル!
2022/05/31(火) 17:25:59.49ID:1k2p4OCO0
頭が守られなくなるから剃らない方がいいのに
2022/05/31(火) 23:09:32.48ID:rnWQ7LEg0
サマータイムめんどくせぇな…
今サマータイムかどうか表示したいんだけど誰か式作って笑
VBAでも数式でもどっちでもOK
2022/05/31(火) 23:14:34.97ID:0qvYGG5m0
サマータイムは国によって違うし年によっても違う
あと自分で作らなくてもあるからぐぐれ
2022/06/01(水) 10:31:55.12ID:LqJbFkjG0
ググるでググれ
何回言われたか
2022/06/01(水) 18:42:16.08ID:4MDL/f8zd
2022年のサマータイムはいつから? 【開始】2022年3月27日(日)午前1時 → 午前2時へ1時間進める【終了】2022年10月30日(日)午前2時 → 午後1時へ1時間戻す(遅らせる)※スイスはUT1の国なので、上記時間にプラス1時間足した時間を基準とする。

ぐぐったらこれがでてきたからこれで計算すればいいのでは
2022/06/02(木) 01:00:25.06ID:ww3inSB20
VBAでやる意味がわからん
348デフォルトの名無しさん (アウアウウー Sac5-G2Bm)
垢版 |
2022/06/02(木) 11:08:01.45ID:MPFVtYTLa
>>342
+1

いろんなものにぶつけやすいよなωωωωωωωωω
349デフォルトの名無しさん (ワッチョイ 992f-SJsm)
垢版 |
2022/06/02(木) 13:37:12.88ID:wjg1CkCV0
会社ではVBAしか使わしてくれんのじゃ。
アルツハイマーでもこれくらい分かる。
2022/06/03(金) 01:37:10.45ID:d1WjLs5X0
時刻の書かれたセルの編集するのか?
351デフォルトの名無しさん (スップ Sdb3-95+F)
垢版 |
2022/06/03(金) 02:52:19.32ID:mOQ1024Gd
>>350
その程度の発想しか出来ない人は書き込みしなければいいのに
2022/06/03(金) 05:47:43.61ID:d1WjLs5X0
>>351
自力でサマータイム求められない奴に言えよ
2022/06/03(金) 07:19:45.45ID:XQuJ+afhD
>>352
このスレの多くの人が当てはまってしまう
2022/06/03(金) 11:29:40.66ID:pHjmbkhpM
夏が来れば思い出す
2022/06/03(金) 15:31:03.54ID:726WZH160
サマーソルトキック
2022/06/04(土) 05:59:25.84ID:nF/95LMud
海外ネトゲでサマータイムに苦しめられてるから
VBAじゃないけどC#でちっこいの作ったわ
2022/06/04(土) 06:14:22.15ID:nF/95LMud
Application.OnTime 使えば、一分ごとに表示変えるとかできるね
あとは面倒だけどサマータイムに入る日時と出る日時計算する関数作って・・と
2022/06/04(土) 07:08:46.25ID:wpuL0IDQD
サマータイムこれから実装なんて何回車輪の再発明するつもりだろう
2022/06/04(土) 14:35:11.71ID:2NGB/tgF0
>>356
やってることruby厨と一緒だな
2022/06/04(土) 15:02:27.19ID:a2v34LYj0
VBAで自分自身のファイル名を持ってくる場合て、
エクセルVBAなら
Debug.Print ThisWorkbook.Name
パワポVBAなら
Debug.Print ActivePresentation.Name
だけど、
そもそも自分がエクセルなのかパワポなのかを判断することてできる。ActiveDocument
2022/06/04(土) 16:08:31.18ID:a2v34LYj0
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
2022/06/04(土) 16:13:58.10ID:tUjUVaiz0
>>361
単に円の中心をどこにおいて描画するかって違いでしょ
仕様としか
2022/06/04(土) 18:56:04.34ID:a2v34LYj0
>>362
確かに違う。
でも、なぜWordとExcelで仕様を変える必要がある?
どっかに明記してあったけ?
2022/06/04(土) 19:07:16.56ID:tUjUVaiz0
>>363
考え方が逆
エクセルとワードのオブジェクトが全然別物なのに、vbaのコードが似てる事が奇跡なんだよ
俺からすれば、よくぞ無修正で動いてるなってのが素直な感想。結果が同じなんて微塵も期待しない
エクセルvbaをワードvbaに移植しようなんてそもそも思わない
2022/06/04(土) 21:44:29.71ID:a2v34LYj0
>>360
自己解決した。
Application.Caption
でなんとなくわかる
366デフォルトの名無しさん (スップ Sdea-jate)
垢版 |
2022/06/04(土) 22:59:19.25ID:6tY8trDcd
>>365
馬鹿は日記を書くな
Application.Versionだろうが
2022/06/05(日) 00:15:07.27ID:LBKd1m9qd
ファイル名がわかってるんなら拡張子を見れば?
368デフォルトの名無しさん (ワッチョイ ca4f-QyWa)
垢版 |
2022/06/05(日) 05:39:30.94ID:exW/DWN40
どっちも極端
Objectが別物だって理解していれば
使い回しが効く部分は使いまわせる
EXCEL VBAの使える部分をACCESSで使ったり
VBSの挙動確認のためにEXCELのVBAに
落とし込むなんてザラにあること。
2022/06/05(日) 06:24:20.21ID:VDGjTDhq0
>>366
バカはお前だろ。
Application.Versionで何が区別がつく。
全部同じ値だ。
2022/06/05(日) 07:45:08.95ID:vTlNlLry0
バカって言う方がバカなんですーの典型的な例
371デフォルトの名無しさん (ワッチョイ 892f-M86+)
垢版 |
2022/06/05(日) 09:11:03.70ID:VKHbv3il0
ハゲって言う方がハゲなんですーもよく当てはまる例
2022/06/05(日) 09:42:13.57ID:GrqOyp5w0
いいから仲良くしろください
2022/06/05(日) 10:32:25.90ID:5rczsPhbD
セルの書式を配列に保存しておきたい場合、
Rangeオブジェクトの配列を使わなきゃダメですか
2022/06/05(日) 10:55:59.24ID:vTlNlLry0
設定の情報を文字列化すればstring型でもいけるんじゃないかな?
保存したい情報が複数あるならカンマで結合してsplitで取り出せば良いだけだし
2022/06/05(日) 11:47:56.31ID:eL6jNkf4d
表示形式と背景色なら文字列にできるけど、書式って文字列に変換可能か?
罫線って文字列で取れたっけ
2022/06/05(日) 13:43:06.66ID:vTlNlLry0
罫線の有無をTrue/Falseで判定すればいけない?
2022/06/05(日) 14:12:04.89ID:MGWqyCtZ0
>>375
> 罫線って文字列で取れたっけ
数値(列挙値)で取れるんだからテキトーに文字列化すればいいやん

>>376
太さ、線種(鎖線とか)や色もあるから
2022/06/05(日) 14:15:50.06ID:x/GFG4oyM
罫線はRangeオブジェクト(のプロパティ)ではなくてBorderオブジェクト
379デフォルトの名無しさん (アウアウウー Sa11-fRoS)
垢版 |
2022/06/05(日) 15:54:50.02ID:udiiYXiVa
// n = 1, 2, 3 or 4
b = sheet.Cells(r, c).Borders(n)
b.Weight 代入&参照
b.LineStyle 代入&参照
2022/06/05(日) 16:38:39.08ID:MGWqyCtZ0
>>379
斜め線もあるしそもそもXlBordersIndexは1〜4じゃないぞ
https://docs.microsoft.com/ja-jp/office/vba/api/excel.xlbordersindex
2022/06/05(日) 20:07:10.90ID:dqA2RGZhd
結局Rangeで格納した方が早いわな
配列が嫌ならコレクションとかでも行けるけど
2022/06/05(日) 20:27:14.52ID:GrqOyp5w0
書式を保存するシートを別に作っておいたほうが楽じゃない?
2022/06/05(日) 23:49:37.17ID:YrlocrIV0
禿達ってなんですぐ喧嘩になるの?
お互い譲り合えば良いじゃん。
384デフォルトの名無しさん (ワッチョイ 892f-M86+)
垢版 |
2022/06/06(月) 00:12:23.49ID:RB7fKeqq0
おたがいハゲましあっていますよ
385デフォルトの名無しさん (スップ Sdea-jate)
垢版 |
2022/06/06(月) 00:18:34.67ID:fgz41eYud
>>383
みるみる毛が減るようになればわかるよ
2022/06/06(月) 01:40:02.35ID:CD+x4MGM0
禿鷹のくせに
2022/06/06(月) 01:45:08.65ID:LVkl0QQt0
そこをなんとか、Excelでwebview2を使うことは出来ませんか?
388デフォルトの名無しさん (スップ Sdea-jate)
垢版 |
2022/06/06(月) 03:13:52.17ID:fgz41eYud
>>386
馬鹿にするな!うっすらとまだ残っているわ!
389デフォルトの名無しさん (ワッチョイ 892f-M86+)
垢版 |
2022/06/06(月) 05:44:12.69ID:RB7fKeqq0
>>388
このハゲ!
2022/06/06(月) 10:06:09.33ID:JILrjNOSM
>>387
無理、素直に.net使え
2022/06/06(月) 13:21:31.23ID:4DEc3eXi0
>>383
> お互い譲り合えば良いじゃん。

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

(逆再生という指摘もあるが・・・)
2022/06/07(火) 22:41:43.65ID:mgVGi2C30
'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.なんとかで操作すればどれでも動く。
393デフォルトの名無しさん (スップ Sdea-jate)
垢版 |
2022/06/08(水) 00:49:01.93ID:cIjXs1I0d
>>392
馬鹿の日記はお断り
394デフォルトの名無しさん (ブーイモ MM2e-M86+)
垢版 |
2022/06/08(水) 00:54:12.05ID:jfy5wCdsM
ハゲの日記なら大丈夫?
395デフォルトの名無しさん (スップ Sdea-jate)
垢版 |
2022/06/08(水) 00:55:55.27ID:cIjXs1I0d
今日は毛が341本抜けました

とか読みたい?
396デフォルトの名無しさん (スップ Sdea-jate)
垢版 |
2022/06/08(水) 01:01:21.01ID:cIjXs1I0d
唐突ですが、30歳を過ぎて頭皮を去っていく髪の毛が増えてきました。

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

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

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

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

もういっそ、頭に直接この掃除機をかけた方が早いんじゃないかと思ってしまう程です。
2022/06/08(水) 02:36:31.18ID:3hgKnM3d0
ち○毛や脇の下まで薄くなった俺は??
398デフォルトの名無しさん (ワッチョイ 6905-Apbd)
垢版 |
2022/06/08(水) 07:20:52.11ID:fAskgOC50
ここはHGのあつまりでつね
2022/06/08(水) 08:24:09.17ID:0P23HUlSM
MGかPGが良いなぁ
2022/06/08(水) 09:48:44.91ID:pnJSpG8Od
はげもげぱげ
2022/06/08(水) 17:24:59.25ID:C2b/Gc96H
以前こちらでお世話になったものですが、うまくファイルに転記できないためまたお力をお借りしにきました。。

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
2022/06/08(水) 17:26:49.54ID:C2b/Gc96H
コードです 長いので分けます

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
2022/06/08(水) 17:27:20.86ID:C2b/Gc96H
'エリアが空欄の位置までループ
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
2022/06/08(水) 17:27:41.62ID:C2b/Gc96H
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
2022/06/08(水) 17:31:00.27ID:C2b/Gc96H
元データを少なくして全部で50行くらいにしたら上手くファイルを分けて保存出来てたんですが、、、
もし問題点がお分かりになる方いらっしゃったらよろしくお願いしたいです(>_<)
406デフォルトの名無しさん (ワッチョイ c6da-3oMX)
垢版 |
2022/06/08(水) 18:24:26.53ID:38a4SNrC0
integerの最大っていくつまでだっけ?
407デフォルトの名無しさん (アウアウウー Sa11-3OWO)
垢版 |
2022/06/08(水) 18:40:07.58ID:lFvBESVva
2 ^ 15 - 1 = 32767 じゃね
2022/06/08(水) 18:40:44.71ID:mwMQbcQT0
ググれよ
2022/06/08(水) 19:08:37.35ID:/v6Td7Qv0
>>396
面白いんですけど何で商品の話ですか
410デフォルトの名無しさん (アウアウウー Sa11-fRoS)
垢版 |
2022/06/08(水) 19:25:08.52ID:2MMAQscUa
32bitのexcelと64bitのexcelでintの範囲違うんだろうか
(もちろんOSの話ではない)
2022/06/08(水) 19:34:40.24ID:38a4SNrC0
>i = i + 1 'コピー先の行を一つ下にずらす。

ってあるから貼り付け先が integer 超えたらだめじゃねって思った
2022/06/08(水) 19:43:22.59ID:60yE+Uw7d
Dim 残りの髪の毛 As byte
Dim 抜け毛 As LongLong

あとよろしく
2022/06/08(水) 19:45:48.83ID:C2b/Gc96H
>>411
なるほど!どうりで最後まで貼られてなかったんだ(´;ω;`)早速ありがとうございます。
ちょっと自分でやり直してみます!!m(__)m
2022/06/08(水) 19:46:53.74ID:C2b/Gc96H
>>412
流れぶった切ってゴメンなさい

でも考えすぎてハゲそうな勢いでした。。頭悪くてイヤになります。。
2022/06/08(水) 20:12:39.32ID:C2b/Gc96H
ダメだ、integerをlongに替えてやってみたけど
やはり半分以下しか貼られませんでした。

もう少し頑張ってみます
2022/06/08(水) 20:25:07.29ID:C2b/Gc96H
自己解決しました。1つのエリアの塊が飛び飛びになってたので
同じエリアのブック内で上書きされてたみたいです。

でも皆さんのおかげで解決出来ました。ありがとうございました!
またハゲそうになったらこちらに伺いたいです。。懲りずによろしくお願いいたしますm(__)m
2022/06/08(水) 22:42:41.32ID:3hgKnM3d0
また毛
2022/06/09(木) 00:00:12.33ID:XIUzPNKLM
※よろず~ニュース

波平さん銅像に髪の毛戻る 引き抜かれてから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度、毛を引き抜かれる憂き目に遭っている。ワカメちゃんの髪が抜かれるのは初だという。

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

※省略していますので全文はソース元を参照して下さい。
419デフォルトの名無しさん (ブーイモ MM39-M86+)
垢版 |
2022/06/09(木) 04:46:01.01ID:CxlByAWLM
このハゲ
      / ̄ ̄ ̄ ̄ ̄ ̄\
    /             \
   /                  ヽ 
    l:::::::::.                  | 
    |::::::::::   (●)     (●)   | 
   |:::::::::::::::::   \___/     |  
    ヽ:::::::::::::::::::.  \/     ノ
420デフォルトの名無しさん (ワッチョイ ca4f-QyWa)
垢版 |
2022/06/09(木) 19:07:14.80ID:cD/wL2EQ0
いや
お前らハゲ散らかし過ぎだろ
421デフォルトの名無しさん (ワッチョイ 892f-M86+)
垢版 |
2022/06/09(木) 21:45:50.80ID:WYCVR9XP0
>>420
そんなつもりは毛頭ございません
2022/06/09(木) 22:38:52.28ID:pASwhhxq0
パソコンばっかやっているから禿るんだわ
いい加減気がつけよ
2022/06/09(木) 22:48:34.88ID:/RbqsnKRd
禿げてる奴がパソコンばっかやるようになるんだわ
人生って残酷だよな
424デフォルトの名無しさん (ワッチョイ 892f-M86+)
垢版 |
2022/06/10(金) 07:26:23.24ID:1o37Jrb90
もうしわ毛ありません
2022/06/10(金) 07:28:26.18ID:rEbuXRdM0
真面目に話すと、パソコン作業は頭使うしストレスの負荷が高いから禿やすいとは聞いた。
2022/06/10(金) 08:55:47.16ID:kCKMlptW0
人間関係の煩わしさでストレスの負荷が多い場合が多いから、パソコン作業はハゲにくいらしいよ
2022/06/10(金) 12:04:33.87ID:F7hdpVFcd
パソコンからは強い電磁波が出てるから、パソコン作業は禿げやすいとは聞いた。
428デフォルトの名無しさん (アウアウウー Sa11-3oMX)
垢版 |
2022/06/10(金) 12:51:05.36ID:zP3+9Ywoa
ハゲ対策の情報もいっぱい持ってるから予防できる
2022/06/10(金) 13:28:56.18ID:dcEjX7ueM
男性ホルモンの優位でハゲるから(*ノω・*)テヘ
2022/06/10(金) 13:52:15.99ID:6StqYoESd
パソコンの前でやる事と言ったらそれしか無いからな
2022/06/10(金) 18:44:17.05ID:rEbuXRdM0
男性ホルモンが盛んなのですから禿る
432デフォルトの名無しさん (スッップ Sdea-QKcq)
垢版 |
2022/06/10(金) 22:17:29.28ID:e4qm213id
このスレで質問するレベルの馬鹿が作ったExcel表のせいで葛飾区の保育所は大騒ぎ
2022/06/10(金) 22:31:48.31ID:lQlywAWy0
エクセル2016で複数のbook開いてると単体で開いてるときよりもずっとVBAの動作が遅くなるんだけど
解決策知ってる人いる?
2022/06/10(金) 22:34:53.56ID:/aCQrqDp0
複数開かなきゃいいんじゃね
2022/06/10(金) 23:02:11.31ID:yoZYMWv5H
>>432
(´;ω;`)
2022/06/10(金) 23:11:39.01ID:rEbuXRdM0
>>432
え?詳しく
ググっても詳細出てこない。
禿そうだわ
2022/06/10(金) 23:14:29.48ID:rEbuXRdM0
あ、葛飾区のニュース出て来た
表計算ソフト式に誤りとか最低だろう。
テストしなかったのかな?
2022/06/10(金) 23:17:41.83ID:Vb4kLAL3M
>>436
検索初心者か?
普通にぐぐって一発で出るんだが
https://xtech.nikkei.com/atcl/nxt/news/18/13050/
2022/06/10(金) 23:24:30.64ID:bPqrOIr80
どーせsubtotalじゃなくsumで小計出してたせいで合計が2重計上されたとかじゃねーの
2022/06/11(土) 00:03:58.02ID:peHZyvXnd
Dick A as strong
Dick B as strong

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

A => B
2022/06/11(土) 00:50:08.66ID:c8NiZZbH0
>>440
ツッコミどころ満載やな
442デフォルトの名無しさん (ワッチョイ ff4f-LHJ+)
垢版 |
2022/06/11(土) 09:42:09.94ID:k8BssVI/0
A もB も
強そうな型だなオイ
2022/06/11(土) 11:19:57.24ID:zJAfd1A70
ストロングチューハイはやばい酔い方する
2022/06/11(土) 12:41:06.40ID:CM4vZAaMM
A = Bだとどうなるの?
2022/06/11(土) 14:14:10.27ID:ZxVNHiJ20
なんで竿がデカい方が攻めなんだよ
はっ倒すぞ
2022/06/11(土) 14:27:57.92ID:8O7zsVZWM
どこにも竿の大きさなんて書いてない
クラス定義まで見ない限り、何を比較してるのか、このコードだけではわからない
さては思い込みでコードを書いてバグを発生させちゃうタイプだな?
2022/06/11(土) 15:03:55.80ID:zJAfd1A70
分かってないだけでしょ
2022/06/11(土) 16:08:12.40ID:ZxVNHiJ20
If Dick(竿)A>DickB Then A=タチって書いてあんじゃんか
2022/06/11(土) 16:33:22.04ID:k7wiIunZM
Strongは精力じゃね?
大きさならSizeとかLengthとか
2022/06/11(土) 18:37:34.42ID:4UGI/r2E0
禿は精力が強い
2022/06/11(土) 19:01:23.35ID:qcSYfg6i0
B = Not(A)
じゃね
2022/06/11(土) 20:12:32.64ID:VlCDkB2oM
DickクラスのSizeプロパティは読み取り専用
Electプロパティは代入可能
Cumメソッドは1日5回以上使うと例外発生
2022/06/11(土) 21:54:22.38ID:Ejve8RvI0
ShapeとTextBoxをマクロで作ったのを
別のBookのSheetにコピペした時のフォントは
マクロ側とコピペ側だとどちらに依存しますか?
2022/06/11(土) 22:02:30.68ID:TK5b+qDd0
聞く前にやったほうが早いだろw
2022/06/11(土) 22:04:32.17ID:XvS1eUBu0
質問失礼いたします。
ユーザー定義型に以下のようなツリー型になる感じの物を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プロシージャで
シートへ値を取りに行かせる具合です。
2022/06/11(土) 22:38:15.29ID:kVPUfUKj0
正解はない
2022/06/11(土) 23:57:34.93ID:XvS1eUBu0
>>456
ありがとうございます。前者の方法で行ってみます。
2022/06/12(日) 00:52:49.29ID:SFQsQSvz0
戦車の砲塔で行ってみてやりにくかったら変えればいいんじゃね
2022/06/12(日) 01:40:55.69ID:QoN69QoAd
芋芋亀してみます!
2022/06/12(日) 18:48:33.62ID:cJxXuNHT0
文字列の一部分に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
オブジェクトが必要て言われる。
どうすればいいの?
461デフォルトの名無しさん (ブーイモ MM67-bhaQ)
垢版 |
2022/06/12(日) 19:03:38.39ID:M5mGZ9TuM
format(123, "000000000")じゃ駄目なの?
2022/06/12(日) 19:09:33.96ID:DaJUN4Jhd
Mid(a, 2, 5) = 123
の右辺を数字のままにしてるからおかしくなると思うので
CStr(123)みたいに文字列にしてからセットすればいいんじゃ
2022/06/12(日) 19:30:47.38ID:ImMFuzyy0
むしろ
Mid(a, 2, 5) = 123
これでなんでaが012300000になるの?どう評価されてるの?
2022/06/12(日) 19:37:46.32ID:ImMFuzyy0
???

Sub foo()

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

End Sub
2022/06/12(日) 20:39:25.03ID:uZt7xySi0
自分ならright("000000000" & "123"の右側を取る
2022/06/12(日) 21:12:13.58ID:DaJUN4Jhd
ああ右詰で数字をいれたいのか
自分のレスは無視して
そもそも桁数も統一してないからそこから見直せ
2022/06/12(日) 21:35:58.65ID:cJxXuNHT0
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 はエラーになる
2022/06/12(日) 21:46:31.55ID:ImMFuzyy0
それ以前に
Mid(a, 2, 5) = Format(123, "00000")
でエラーが出ないのがおかしいだるお
2022/06/12(日) 21:52:55.42ID:SFQsQSvz0
ちなみに -123 のときどうする?
470デフォルトの名無しさん (スプッッ Sd1f-UGZ9)
垢版 |
2022/06/12(日) 22:19:45.52ID:+/mRZvLHd
ID:ImMFuzyy0

馬鹿は黙っていればいいのに
そうやって馬鹿を曝け出していると頭の皮膚も曝け出されるぞ
2022/06/12(日) 22:37:23.13ID:aOGWTw070
midステートメントは今ある文字列に対して別の文字列を被せるだけの動作だよ
2022/06/12(日) 23:03:38.74ID:b6RzJ+XoM
別の文字列を被せるのは仕様外動作だと思うけどな
2022/06/12(日) 23:07:02.46ID:ImMFuzyy0
何一つその動作がのってねぇ
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mid-function
2022/06/12(日) 23:10:22.37ID:UzvPms3IM
引数以外の手段で関数に値を代入(?)するという前代未聞の珍動作
何が起きるか分かったもんじゃない
2022/06/12(日) 23:13:02.41ID:cJxXuNHT0
つまり
Mid(a, 2, 5) = 123

aの2文字目から5文字分ところに、"123"を書き込むんだけど、
3文字しかないから、4-5文字目は何もしないてことだよね。
でも代入の原則論から言えば、足りない部分はスペースで埋めるんじゃないのか?
RSetは足りない部分はスペースで埋めてる。
まあ、それが仕様だて言えばそうだけど、
深く考えて作られてないのかな。
もし、RSetも3文字しか代入しないのなら、RIGHTやFORMATを使わなくても0埋めができるし、
単純な代入だから性能もいいはず。
2022/06/12(日) 23:16:04.57ID:cJxXuNHT0
>>473
それはmid関数。
midステートメントとは別物だよwww。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mid-statement
オレもさっき知ったんだがwww
2022/06/12(日) 23:29:45.68ID:nFfW5LM6M
そんなものがあったのか!?
けど代入元の型は文字列になってるけど数値を代入していいのか?
2022/06/12(日) 23:33:25.21ID:ImMFuzyy0
>>476
ありがとう!!!
気になって眠れないとこだった。俺の頭がおかしくなったのかと思ったわw

ステートメント、一度目を通しておいたほうがいいね
https://excel-ubara.com/EXCEL/EXCEL908.html
>>477
vbaで何をいっとるんじゃい
2022/06/12(日) 23:54:08.09ID:cJxXuNHT0
>>477
どの言語もできるような気もするが。
出来ない言語なんかあったけ?
化石のような言語のCOBOLでもできる。
COBOLだと9型の変数があって、VBA風にかくと
Dim a as 99999
a = 123
でaを00123にしてくれる。
a=RIGHT("00000" & 123,5)なんてやってるのをみて驚いたわ。
2022/06/12(日) 23:56:26.34ID:as/ibVfq0
ちなみに、MidステートメントはLetステートメントと違ってヒープ領域の再確保を行わないようなので
めちゃくちゃいっぱい文字列を結合したり置き換えたりする文字列操作をMidステートメントで高速化できたりはする
色々注意しなきゃならんしめんどいけど
2022/06/13(月) 14:10:09.78ID:cuhQaR4kM
mid("00000",5-len(a),len(a))=a
なんてやってるの?
2022/06/13(月) 15:41:58.25ID:e6QxpplAd
文字列の一部分に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のようなコードがいいと思うけど
2022/06/13(月) 18:10:47.94ID:S+tXl/uoD
自分なら
right("00000" & 123, 5)
って書く
2022/06/13(月) 18:28:06.25ID:CiY+fWgN0
セルの書式設定に 0000# って書けばいいのに
2022/06/13(月) 19:38:44.31ID:5YQd33j2d
いやどうせVBAでやるならNumberFormatLocalでやろうよ
2022/06/13(月) 20:02:21.45ID:3bSnFxDm0
要件にもよるが正規表現とFormat()で。
2022/06/13(月) 21:14:24.62ID:c4yOIzj40
>>482
https://www.moug.net/tech/exvba/0140045.html
MIDステートメントのほうが速いらしい。
でもオレが試したら逆だったけど・・・・
2022/06/13(月) 22:37:41.37ID:pISmU68J0
みんなのコードカッコいいわ
やっぱりコードはカッコ良くなきゃ舐められるわな
2022/06/14(火) 01:08:48.71ID:GVYlqPTN0
>>488
他に見るやつがいないなら動きゃいいとか思ってしまう
2022/06/14(火) 01:18:48.91ID:MKKHJJii0
てか若者とお年を召された方のコードの書き方が明らかに違うのだが、古臭い目新しいとかあるのかな?
2022/06/14(火) 02:02:23.05ID:GVYlqPTN0
今は可読性悪いのは駄目ってなってるけど逆に改行や変数名の長さすらケチってた時代もあった
んで言語が進化するにつれて書き方も変わっていった
今でも昔の方法で書けるっちゃ書けるけどそれが古臭いってことだと思う
2022/06/14(火) 02:07:02.10ID:MKKHJJii0
お年を召された方(60~70代)のコード見たら、やたら変数ばかり多かった印象が。
変数使わなくても普通に書けばいいじゃんて部分まで変数に入れていた。
2022/06/14(火) 02:33:52.97ID:TUO2NKc8M
>>492
今でもコード中に定数をそのまま書くのは別に推奨されてないぞ
せめて別の人がコードを見た時に数字の意味がわかるようにしとかないとバグの元になる
2022/06/14(火) 07:10:06.79ID:r7EVbuk4D
>>492のコードはVBAに限らず可読性悪そう
495デフォルトの名無しさん (アウアウウー Sa67-IhGj)
垢版 |
2022/06/14(火) 07:54:24.65ID:7uTlYRrCa
>>492
変数にいれないで普通の書くのか?
定数なら定数として定義すると思うが
2022/06/14(火) 08:25:15.24ID:bcp0w+/6d
>名著「リーダブルコード」に「説明変数」という言葉が出てくる。
2022/06/14(火) 08:35:10.08ID:T3k1EtCC0
マジックナンバーは避けようぜ
後で見返す時に(この4って何を意味してるんだ…?)ってなると効率落ちる
2022/06/14(火) 08:37:28.94ID:YQpYn/pu0
郵便番号+電話番号ていう文字列があるんだが、郵便番号、電話番号を別々の変数に入れたいので
こうしてみたんだがうまくいかない。
なにか手はある?
いま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
499デフォルトの名無しさん (ワッチョイ ff05-bM3h)
垢版 |
2022/06/14(火) 09:04:23.14ID:06qw5AlY0
aの文字列が固定長なら
Left(a,7)
Right(a,11)
でダメなんか
2022/06/14(火) 09:11:18.76ID:b1sVlKW1M
>>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
2022/06/14(火) 10:48:30.78ID:WigeF4Tr0
>>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
2022/06/14(火) 13:04:52.31ID:IIEda1opd
>>487
何を目的とするかによるけど
速度は重視しないのであれば比較的周知されているBの方がいいのではと思うだけで
書き方なんて色々あるんだから試行錯誤すればいいと思う
2022/06/14(火) 13:11:14.27ID:IIEda1opd
>>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
2022/06/14(火) 13:57:57.06ID:yUQgc7GAM
>>503
それで代入だけは可能だけど、電話番号が10桁だと末尾に自動的にスペースが入って11文字に補正される
固定長文字列はTrimもできないから、結局構造体を使う方法はトラブルの予感しかしない
2022/06/14(火) 14:36:41.07ID:IIEda1opd
>>504
与えられたデータだけの回答だからね
与えられた情報以外の事をあーだこーだいう人いるけど
それはその時考えたらよくない?
そもそもそういう事を言い出したら
質問のできるできないはできないって回答になるわけだし
2022/06/14(火) 14:46:19.33ID:QIi9ICtD0
与えられたデータっていうか、前提条件がはっきりしないからなぁ
>郵便番号+電話番号ていう文字列がある
以外は試してみたっていうコードからの推測だしな

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

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

構造体うんぬんより、固定長文字列がトラブルの予感を感じさせるんだよなぁ、いろんなところで
507デフォルトの名無しさん (アウアウウー Sa67-IhGj)
垢版 |
2022/06/14(火) 15:27:21.00ID:jJwMl27ba
固定長文字列って文字数で良いんだっけ?
全角でもおなじ?
2022/06/14(火) 17:23:15.55ID:QIi9ICtD0
>>507
文字数だから全角でも同じはず
というか、文字列はユニコードってことになってるから全角とか半角とかないってことになってるんだよ、いちおう
2022/06/14(火) 19:35:25.43ID:vdrsXIkl0
関数2つ作ればいいのにわざわざ構造体やクラスつくる意味あんのかな
処理速度を気にするのは自力で動くの作れるようになってからだぞ
2022/06/14(火) 20:24:08.87ID:sqy53zZK0
>>487
簡単にいうと、なんでもMidステートメントに置き換えれば速くなるってわけでもない(そういう使い方にはちょっと注意がいる)
あと固定長文字列はいかにも速そうだが実は可変長文字列よりパフォーマンスが落ちることが割とあって、これまた扱いに注意を要する
まずは自分の望む動作をするコードを完成させることに注力した方がいいんでないかな
(速度改善や利便性向上みたいなのはなんていうか、キリのない作業でもあるし)
2022/06/15(水) 07:33:40.74ID:7lj8rf8tD
>>509
クラス1つ作ればいいのにわざわざ関数2つ作る意味あんのかな、
って疑問を持つ奴もいるからどっちもどっち
512デフォルトの名無しさん (アウアウウー Sa67-IhGj)
垢版 |
2022/06/15(水) 10:47:02.71ID:EefWJAwfa
自力でやれるなら好きに組めば良いけど
それもできない初心者だからな
2022/06/15(水) 11:15:30.59ID:WoPQ0lFMd
こういうやり方があるよって回答だけすればあとは質問者がそれを選択するだけでいいのに
他人の回答にケチ付けるやつはなんなんだろうと思う
2022/06/15(水) 11:50:46.53ID:RetoKdFBM
>>513
質問の内容(仕様)が明確じゃない部分を好き勝手に解釈した結果
2022/06/15(水) 12:43:33.38ID:2pwDzYJj0
>>513>>514
単に性格悪いってだけ
2022/06/15(水) 13:41:42.48ID:HRaMYgOd0
ユーザーフォームに毎回違う数のラベルを作った時に、それぞれのラベルでクリックイベントを作りたいのですが
ラベル数が変動するので作れません。
こういう場合、存在するどのラベルをクリックしたかを調べるにはどうすればいいですか?
2022/06/15(水) 14:04:25.53ID:2pwDzYJj0
>>516
昔やろうとしたけど超しんどいよ
vb6にはコントロール配列って機能があってそれを使えばよかったけど、
vbaでなぜかなくなっているので絶望的にめんどくさい
他の方法を考えたほうがいい

どうしてもやるなら「vba コントロール配列」あたりで検索して頑張ってくれ。
https://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_100_040.html
2022/06/15(水) 14:41:31.92ID:EFN5k3S5d
>>516
ラベルは最大数で作っといて、必要な分だけVisibleで見せる
2022/06/15(水) 17:15:36.58ID:HRaMYgOd0
>>517
他に方法がなさそうなのでこれでやってみます

>>518
Private Sub Label1_Click() を1000個とか作るのはちょっと汚いので止めておきます
2022/06/15(水) 17:23:32.33ID:C/XRb82A0
ラベルを動的に1000個作るのは汚くないのかよ
2022/06/15(水) 17:37:50.64ID:fn3i9wsI0
まずどうして1000個も必要なのかのほうが突っ込みどころな気がする
VBAってフォーム内でクリックした座標の検出できないのかいな
2022/06/15(水) 17:42:47.22ID:Vg/305+8M
クリックイベントを1000個作るぐらいならクラス化しちゃうかなぁ
どっちにしろ面倒臭いけど

大量にラベル設置した時のリネーム作業を簡単に出来る方法何かない?
2022/06/15(水) 17:51:28.07ID:2pwDzYJj0
いや普通につくるならプルダウンだろ
何かしらで分岐させれば3,4回の選択で済む
2022/06/15(水) 18:13:02.83ID:Vg/305+8M
構内マップを作らされてその上にマインスイーパみたいな升目を作らされ、機器の設置場所を設定出来るようにしたい。場所の指定は分かりづらいから文字だけにするのはNGね。なんて業務を振られる事も稀によくある
2022/06/15(水) 18:14:34.90ID:C/XRb82A0
何をどうしたいのか知らんし、その1000個の元データはどっからどう持ってくるのかしらんけど
Excel VBAだしな
俺ならシートで選択させてフォームのボタンかな
2022/06/15(水) 18:28:15.26ID:C/XRb82A0
>>524
で、それを実現するのがEXCEL VBAでラベル1000個なのか?
いろいろ検討して最終的にそれしかないとなったならまあご愁傷様
そうじゃないならあほとしか思えん
2022/06/15(水) 18:47:53.19ID:Vg/305+8M
それしかないじゃなくてそれしか許されないんだよ
アホかって思いながらやってるよ
2022/06/15(水) 18:57:22.93ID:myHzQmQR0
マス目なら座標取ればいいような気がするが許されないなら仕方がないな
2022/06/15(水) 19:32:37.12ID:JFwHiHWC0
a=郵便番号電話番号
b=Left(a,7)
c=Replace(a, Left(a, 7), "")
2022/06/15(水) 19:34:39.87ID:8qf24aUq0
1000ならまだいける、10000だったら逃げるけどな
2022/06/15(水) 19:40:20.96ID:2pwDzYJj0
>>529
NG
2022/06/15(水) 19:56:19.48ID:y5599rfC0
ワークシートの背景をマップにしてセルクリックでイメージを表示するイベント書けば?
2022/06/15(水) 19:57:21.42ID:TJhxNtAv0
昔ながらの紙の地図帳をイメージすればいいのか
最初のページで全体図をマッピングした概略図を掲げといて
詳細の判るまで拡大した一ページ(※)をマス目で区切って、縦に 1 2 3 横に A B C とか振り分けて
例えば B 4 とかをクリックしたら「設備名」の詳細を表示するとかか?

ユーザーフォームでそれぞれのマス目を呼び出すよりは、インデックスのSheetに全体図
そこをクリックで各Sheet (※)へジャンプとかのが楽そう  上が承認するかどうかだけど
上に承認してもらうようにサンプル作ってプレゼンしてもいいし
2022/06/15(水) 21:04:50.79ID:m3jNjkHdd
コントロールフォームの動的配置 & クラスモジュールでイベント起こすに一票
どうせどこかでイベント共通化の処理が入るだろうからスケーラビリティ確保のためにも
2022/06/15(水) 21:45:31.66ID:y5599rfC0
>>534
うぬ、それが一番だと思うけど何故にエクセルなのかと思ってしまう
2022/06/16(木) 01:45:48.79ID:s8B3FZ9N0
1000個のラベルと見せかけて、
実は1個だけラボルが混ざってるんじゃないだろうか。
537デフォルトの名無しさん (ワッチョイ 4363-b1tp)
垢版 |
2022/06/16(木) 07:24:34.47ID:FKA1V1750
テキストファイルを開いて1行ずつ中身を読んでます。
Open ファイル名 For Input As fNo
Line Input fNo, buff
途中まで読んだあと、先頭から読み直したいです。
ファイルを閉じてまた開くのは嫌です!
下のURLを参考にして、
FileSystemObjectを使ってすべてを1変数に読み込み
改行コードで区切って配列化して
先頭から読み直したいときは配列の先頭から読みなおし
という方法を思いつきましたがコード修正が大変なので
もっと楽な方法をご教示いただけたら幸いです。
tps://bokulog.org/vba-read-file/
2022/06/16(木) 07:25:26.98ID:FKA1V1750
sageそこねスミマセン
2022/06/16(木) 08:10:36.64ID:fGEidPk00
>>529
1桁足りないじゃんって思ったら
Optionbaseデフォルト値でやるのが普通なのか?
俺はどうにも馴染めないので1でやってるが
2022/06/16(木) 08:12:48.83ID:H6wZRQj3M
>>537
vbaにseekってなかったっけ?
2022/06/16(木) 08:52:14.47ID:ijJBEomdd
どんなコード書いててそこからどんな手直しするかわからないのに回答のしようがないよね
542デフォルトの名無しさん (アウアウウー Sa67-IhGj)
垢版 |
2022/06/16(木) 10:17:53.34ID:G3W4msQ6a
>>537
ファイルを閉じて開き直すのが祖谷な理由が書かれてませんので
嫌でもやればいいんじゃね
2022/06/16(木) 10:35:38.36ID:OXzWqs7e0
IE終了したけど、今日の時点ではVBAからIE操作できた。いつまで保つか明示されてる?
544デフォルトの名無しさん (ワッチョイ 732f-TFwb)
垢版 |
2022/06/16(木) 13:56:39.50ID:j/xQYS4f0
サポートしないだけで
PC内にIEがある限り
永久に使えるんじゃないか?
2022/06/16(木) 14:04:02.85ID:9IfQq+aNM
そのうち深刻な脆弱性が見つかったらセキュリティソフトでウィルス扱いされるようになって、
IEコンポをロードした瞬間にウィルス警告が出るようになるだろうな
2022/06/16(木) 14:55:49.33ID:TulzdQgt0
WannaCryのときMSはサポート外にパッチ出しちゃった前科あるからなあ
なんだかんだ面倒みそうでなあ
2022/06/16(木) 19:55:32.69ID:g5Jzetu50
>>543
7年くらい大丈夫と見たような気がする
2022/06/16(木) 21:22:11.67ID:wccj32jkd
>>547
何の根拠もないな
危険な脆弱性が明日見つかったらそれで終わりだよ
2022/06/16(木) 23:09:10.84ID:BfseDl080
https://www.ka-net.org/blog/?p=13587
素直にedgeに対応したコンポーネント出してほしいなぁ

webapiからjsonを読み込むときにIEだけはいちいちダウンロード確認のポップアップが出て止まる挙動で苦しんだ記憶があるから嫌い
2022/06/17(金) 02:08:51.88ID:qX3KJPna0
>>540
Seek命令あるけど、あれランダムかバイナリモード用だと思う
が、試したがシーケンシャルファイルでもバイト位置で指定できるな
2022/06/17(金) 07:31:22.44ID:tno+JwDPr
>>547
エッジで互換モードする期間じゃない?
2022/06/17(金) 08:55:59.12ID:LpDNne3Kd
IEで終了したのは「アプリ」の「サポート」だけだぞ
IEオブジェクトはしばらく残すと明言してるから、マクロから使うのはまだ問題ない

けど、猶予期間の今のうちに社内ルールの変更など根回しはちゃんとやっとけよ
2022/06/17(金) 13:19:56.68ID:6WxlvkUPd
IEが非対応のサイトも増えてくるから対策出来るならした方が良いのはわかってる
が現状Selenium Webdriverが最適解のようでいちいちバージョン合わせるためにダウンロードしたり記述が変わったりすげー面倒

MSがどうにかしてくれると淡い期待をしたいが
2022/06/18(土) 02:47:00.46ID:x1pEIMNT0
Edgeに限らず、新しくなって使いづらくなるのホント意味不明。
PC起動するとWindows11にしませんか?って言われるけど、もうお前なんか信用しとらんわ!
555デフォルトの名無しさん (ワッチョイ 9a4f-+QtH)
垢版 |
2022/06/18(土) 06:12:14.25ID:tcSE7QQr0
まぁしょうがない
良かれ悪かれ何でも時代の変化で変わって行く
VBAは関係ないけどちょっと前にとあるシステムで
IE → EDGE の移行作業行ったよ
開発ツールは確かにIEの方がEDGEより
使いやすかったと思う。慣れだろうけどね。
2022/06/18(土) 06:56:56.06ID:8iz4uO0y0
世の中がセキュリティに舵を取るようになったからね
楽観論じゃなりゆかない時代なんだから仕方がない
2022/06/18(土) 08:20:33.50ID:7fgrQLBR0
セキュリティを理由に広告ゴリ押し
こうはなりたくないね
2022/06/18(土) 10:08:00.88ID:SSs68PlgM
もうマイクロソフトの為に仕事するのやめませんか?
559デフォルトの名無しさん (アウアウウー Sa47-iAjv)
垢版 |
2022/06/18(土) 10:08:32.00ID:Os2AgP5Ia
ieで取れなかった個人情報を集めてるからな
560デフォルトの名無しさん (ワッチョイ 17f6-vQ73)
垢版 |
2022/06/18(土) 10:59:15.44ID:0BdDrqNN0
ExcelもIEも何年も使ってないわ
kneetじゃねーよ
2022/06/18(土) 11:55:08.82ID:+2kbSQo1M
VBAもそろそろかな
2022/06/18(土) 13:40:01.62ID:T0WefD6fd
そう言われ続けて20年たった
2022/06/18(土) 16:09:32.02ID:JcC1S0zs0
VBA無くなればこのスレも下火になるかもな。
パワークエリスレが活気出る
2022/06/18(土) 16:29:16.53ID:Es40ajdn0
PowerQueryは万能じゃない
VBAと比較するもんじゃない
2022/06/18(土) 18:07:43.74ID:lnn1Xxq/M
PowerShellは万能だぞ
ExcelのワークシートもWEBブラウザも操作できる
2022/06/18(土) 18:14:09.38ID:59smDk8ed
デフォのPS 5.1はクソだけどな
BOM付きUTF-8を要求したり権限厳しかったり
2022/06/19(日) 01:44:47.25ID:7uc9nhCj0
万能かもしれんがVBSみたいな手軽さが無いのがな…
568デフォルトの名無しさん (ササクッテロレ Sp3b-+QtH)
垢版 |
2022/06/19(日) 10:44:47.27ID:uZGRAEGZp
Power shellは
.Net Freamworkが入ってなければただのShellだもんな
なら素直にVSの類いれとけばいい
2022/06/19(日) 21:06:19.28ID:+DYD1D5ZM
Powershell 7は.NETと関係ない汎用のコマンドラインシェル
macOSやLinux向けの製品すら存在する
2022/06/19(日) 21:33:18.64ID:nfQGh1M+d
追加でWebからインストールしなきゃいけないPowerShell(6以降)に存在価値はない
それが許されるんならあえてPowerShellなんて使わずとももっと優れた選択肢がいくらでもある
2022/06/19(日) 22:00:01.16ID:c6U60qvsM
Win11でもオプションなの?
うちいまだにWin10だからわからん
2022/06/20(月) 09:16:41.32ID:ZiXH0O+ed
win11でも入ってるのは5だけ
6以降はサポート期限がLTSでもリリースから2年しかないから、
仮にWindowsにプリインストールすると2年ごとにWindowsの更新で強制的にメジャーバージョンが上がって既存資産がぶっ壊れるリスクが生じる
だからどうしてもユーザーの自己責任で塩漬けにできる選択肢が必要で、Windowsの一部として扱うことが不可能なんだよ
2022/06/21(火) 14:59:24.30ID:nrTPRY1Pr
質問です
2022/06/21(火) 15:16:20.71ID:nrTPRY1Pr
質問です
ある動画で「連想配列とユーザー定義型を組み合わせると便利」ということで色々勉強していたのですが、ユーザー定義型ってpublic宣言しても別モジュールで呼び出せないですよね?
てことは別モジュールにプロシージャがあって、それを引数設定して呼び出してもエラーになりました
そこでクラスモジュールを使っても同じような事ができると聞き、クラスモジュール内に3つ型を宣言した変数を作ったのですが、それを配列に入れようとすると「配列に入れることができません」というエラーがでます
具体的には以下のとおりです
Dim c() as class1
Set c = New class1 ←ここでエラーがおきます
この記述を
Dim c() as New class1
とすればエラーは起きないのですが、別モジュールの引数に
sub test(c as New class1)と記述はできないので困っています
なにかいい方法はないでしょうか?
2022/06/21(火) 16:23:50.93ID:NaTv3t2Wr
すみません
私の勘違いでした
普通にユーザー定義型でできました
2022/06/22(水) 00:02:57.35ID:fcQ3wVRo0
ネタ投下
「貴様は一体何を仰ってるんだ」Excelマクロの納品時、担当者に言われたひと言にTwitterざわつく - 「良さを完全に殺しに来てる」の声も
https://news.mynavi.jp/article/20220620-wadai6/
2022/06/22(水) 01:16:32.40ID:/230SSBOd
>>576
くだらなすぎる
読むのは時間の無駄
2022/06/22(水) 02:03:36.70ID:/pBOMLc50
うさんくせー
セミナー屋ほど胡散臭いのはないわ、
やっぱ5ちゃんねるが一番!
2022/06/22(水) 07:25:36.31ID:dKKatMvdD
嘘松藁人形
手作業大好きおじさんが一人いましたって面白くもない話
2022/06/22(水) 07:29:12.94ID:bFCzOkRx0
話の内容はともかく客に説教とかアホすぎる
2022/06/22(水) 09:39:47.61ID:fcQ3wVRo0
「ミスが起こるような仕組み」でなくて、
まるっきりブラックボックスでもなく、
人が過程を辿れるようなの、作りたいな・・・
とは思う。
2022/06/22(水) 11:11:38.88ID:SHGr4jOjd
完全にネタ、作り話だろこれ

そもそもVBAごときでミスが起きないシステムなんて作るの不可能だし
マクロはたくさんある工程の一つに過ぎないんだから、業務全体で見ればミスが起きる余地なんてほかにいくらでもあるだろうに
2022/06/22(水) 11:58:03.94ID:qNhhYbIzd
話題にするだけばからしいでしょ
こんなの言ったもん勝ちだしね
2022/06/22(水) 12:09:22.34ID:PZ27NODvM
ブラックボックスでミスが見つけられない
を独自解釈しただけだろ
2022/06/22(水) 13:02:01.70ID:acQQyPov0
>>581
どうせDebug.Printするんだろうからデバッグモード付きで納品すればいいんじゃね
2022/06/22(水) 13:45:53.56ID:5jQGKRYma
マクロの作成頼まれたけど要求内容があまりにも怪しかったので、
マクロと一緒に「入力に対する出力が合っているか」と「そもそもの入力が誤っていないか」を簡易的に(電卓などで)求められる計算方法を渡した
そしたら約3ヶ月に一回ぐらいの割合でそもそもの入力すべきデータを誤っていたことが判明した
ってことはあったな
後で調べたら、こういうのは「封筒裏の計算」っていう手法らしいけど
2022/06/22(水) 13:46:18.61ID:qNhhYbIzd
>>581
保存期間なり世代管理してログ出力すればいいでしょ
2022/06/22(水) 15:52:29.00ID:acQQyPov0
>>586
祝儀袋の封筒に書かれた金額と入っている金が違うやんってことか
なるほど日本人はうまい例えを作るもんだと思ったら全然違ってた
2022/06/22(水) 17:31:38.14ID:/pBOMLc50
わろた
2022/06/22(水) 19:32:15.50ID:XefayqmG0
Excel2013のVBAで
Debug.Print (1 = 1) * 1
てやると-1になるけど、
セルで
=(1=1)*1
て入れると1になる。
これって不具合?
591デフォルトの名無しさん (ワッチョイ 3b5f-sER5)
垢版 |
2022/06/22(水) 19:47:11.74ID:5Bb+Exnq0
ワークシート上の(1=1)、つまりTRUE値は「1」だけど
VBAでのTrue値は「-1」だから合ってる
2022/06/22(水) 21:45:57.03ID:Io6qCa48M
>>576
毎日新聞の戯言

お前暇やろ
593デフォルトの名無しさん (ワッチョイ 1763-WaTF)
垢版 |
2022/06/23(木) 00:03:21.37ID:RpD62pBf0
VBAは好き
どんな職場で働けばいいの?
正社員じゃなくていいです。
594デフォルトの名無しさん (ブーイモ MMba-S7oR)
垢版 |
2022/06/23(木) 06:39:08.02ID:d1WC2qsrM
>>593
事務派遣。
ゆるい職場ならvba使用が禁止されて無いから与えられた業務で使って見ればいい。
2022/06/23(木) 06:45:25.15ID:ms1G02BaH
ワイまさに派遣事務でたまにVBAやってこちらのみなさんにお世話になってる(*´ε`*)
2022/06/23(木) 07:34:26.56ID:OFyvXiPXd
>>593

日本で働くのはやめておけ
将来性無いぞ
2022/06/23(木) 07:40:40.65ID:SBEKkY350
>>593
派遣おすすめ
vba縛りの事務なら、めちゃくちゃ楽で定時に帰れる
そういう人を見たことある

一生生きていけるだけの金もってたら、
そういう人生送りたかったってぐらいやりたい生き方だわ
2022/06/23(木) 09:00:02.54ID:KOp9wOBp0
生涯困らない金があって、VBAの事務作業か  もっと他に・・ いや、どうぞご自由にだけどさ
2022/06/23(木) 09:06:50.94ID:SBEKkY350
>>598
一時金持っててさ、毎日酒のんでゲームしてパッパラパーな人生送ってたのよ
当然、あっという間に体壊して病院行き

適度な仕事は、自分の健康につながるよ
2022/06/23(木) 09:13:48.26ID:RH4NXyqT0
貧困な想像力って悲しいよね
2022/06/23(木) 10:45:06.10ID:omFSpe9sd
VBAしかできないやりたくないような人だとしたらそのような人を使ってくれるところは少ないのでは・・・
なのでここで聞いてもいい回答はもらえないでしょ
602デフォルトの名無しさん (アウアウウー Sa47-vQ73)
垢版 |
2022/06/23(木) 10:56:16.87ID:M4XLJX6ga
いまさらVBAには関わりたくないな
そもそもVBA自体よりもVBAを使ってる連中と関わりたくない
603デフォルトの名無しさん (アウアウウー Sa47-iAjv)
垢版 |
2022/06/23(木) 12:20:08.77ID:QS7NhMN+a
安定のNHK
2022/06/23(木) 12:41:27.99ID:8671gq8M0
なんでココにいるのか?
ってツッコミ入れたら負けなんかなw
2022/06/23(木) 13:16:25.44ID:Qj8PYDZt0
ちがうでしょ、所謂かまってちゃんでしょ。
慰めてやるべき
2022/06/23(木) 13:34:30.38ID:iXtKw0QdM
プログラマからしたらVBAしか出来ないって使えないやつでしかないからなぁ
2022/06/23(木) 14:08:36.94ID:SBEKkY350
>>606
無知なのにテキトーに言い過ぎ

vbaは特殊で、保守がメインの現場ばかり。vba使えればそれでいい
立ち位置的にはCOBOLに近い
2022/06/23(木) 14:41:25.25ID:RH4NXyqT0
>>607
世の中を知らなすぎ
どんどんVBAは消えていってる
MSすらVBAではなくPython導入しようとしてたが、
openpyxlやxlwingsの出来が良かったのでそれらを薦めてるんだよ
突然IEのサポートが終わるとか言ってる奴くらいだぞ知らないの
2022/06/23(木) 14:45:19.51ID:SBEKkY350
>>608

だから保守メインって言ってるじゃん
新規開発なんて無く基本的に別言語とは関わりがない
2022/06/23(木) 14:51:02.16ID:9dA5CJ8Sd
そのツールでできるならどんなの選んでもいいだろ
>>608みたいなのはそんなこともわからず俺こんなの知ってるぜスゲーだろって言いたいだけのかまってちゃんだろ
VBAはそもそも基本的にWindowsPCなら入っているであろうExcelさえあれば
他に何も入れなくても使う事ができるという1点で他にはない優位性があるわけだし
職場によっては変なものを入れるのはNGみたいなところもあるんだから
そういう事も踏まえないでただ批判だけするのはおかしい話
611デフォルトの名無しさん (アウアウウー Sa47-vQ73)
垢版 |
2022/06/23(木) 15:10:52.41ID:Ukh7Grgra
ほらな
やっぱりVBAだろ
2022/06/23(木) 15:22:59.47ID:RH4NXyqT0
>>609
VBAからPythonへのリファクタリングが進んでるって話だよ
リファクタリングって新規開発ではなく保守なんだけど理解できないようだしなw
今後もVBA使っていくつもりなら、
VBAがやがてどうなるとか調べるのはかまってちゃん以外でも当然の行為だろ
ましてや仕事なら尚のこと
2022/06/23(木) 15:38:55.20ID:SBEKkY350
>>612
へぇ、それは知らなかったわ、物知りだな~
具体的にはどんな案件がvbaからpythonになってるの?
2022/06/23(木) 15:45:42.70ID:SBEKkY350
エクセル・accessの簡易的・汎用的な入力方法を全部捨てて、
pythonで作り直す案件とはどういうものなのだろうか?
概算するまでもなくものすごく高くなるんだけど、一体どういう案件だとコストダウンになるのだろう?
早く回答してほしいなぁ。まだかなぁ
2022/06/23(木) 16:48:28.59ID:RH4NXyqT0
>>614
openpyxlやxlwingsって具体的な名前出してるのに調べたり理解できない奴が煽ってるのか
無知な上に調査も思考もできない役立たずがVBAだけで食っていくとか何の冗談だよ
2022/06/23(木) 17:06:30.04ID:Qj8PYDZt0
VBAだけじゃなくて、Excelの一通りの知識も必要では?
事務員なら
2022/06/23(木) 17:13:43.84ID:SBEKkY350
>>615
おう見落としてたわサンキューな
勉強してくるわ
2022/06/23(木) 19:20:48.18ID:xtvi5Qi8a
案件って言ってるのに
> openpyxlやxlwings
とか、アホ丸出しやんw
2022/06/23(木) 19:24:07.75ID:SBEKkY350
>>618
その単語だけで内容は伝わるよ
2022/06/23(木) 19:41:27.49ID:T964c/cqM
派遣でvbaてアホすぎるだろ
2022/06/23(木) 19:50:50.76ID:YBqf9Go9H
>>620
なんで?>>595だけどVBAやらされることもあるんだけど、、
まあ大したものじゃないけどね(^_^;)ちなみに女です。
2022/06/23(木) 20:41:26.32ID:8GFyplgN0
>>619
内容説明してみ
まあ必死ではぐらかすんだろうけどw
2022/06/23(木) 20:48:49.23ID:SBEKkY350
>>622
これがあればvbaをpythonに置き換えるコストがクッソ下がる。案件は基本的に何にでも対応できる
なかったらめちゃくちゃなコストになるから非現実的だと思ってた
2022/06/23(木) 21:09:00.04ID:8GFyplgN0
>>623
> openpyxlやxlwings
の説明なんて要らんよ
> 具体的にはどんな案件がvbaからpythonになってるの?
の回答よろしく
2022/06/23(木) 21:25:01.78ID:SBEKkY350
>>624
知らんよ。俺は見たことない

どんな案件にでも対応できるからユーザー側がpythonを指定して発注することは少ないだろう
開発側の好みでpythonを選んでいるだけだろうな
webサーバーで処理するという点ではエクセル→スプレッドシートの移行にかなり近い。
2022/06/23(木) 21:39:08.37ID:8GFyplgN0
知らんのならいちいち絡んでくるなよ...
そもそもどんな内容が伝わると思ってたんだよw
2022/06/23(木) 21:55:24.01ID:SBEKkY350
何でも低コストで作れる以上、具体的な案件なんてもう必要ないだろう
2022/06/23(木) 22:56:14.90ID:Qj8PYDZt0
会社の人事部の仲良い人に聞いたけど、派遣君でVBAできるヤツは希少な人材と言っていたぞ
ましてやExcel自体まともに操作できない派遣が多い中で。
629デフォルトの名無しさん (ワッチョイ 9a4f-+QtH)
垢版 |
2022/06/24(金) 03:54:27.16ID:ctS3zPLY0
まぁ手広くやるかVBA極めるかだろうけどある程度は手広くやらないとね
「VBAは死ぬ」と言われてもう随分経つけど一向に死ぬ気配はないのは確かだけど
VBAしか出来ないとOfficeに乗っかったアプリしか開発出来ない井の中の蛙状態になるのも確か。

それに他言語やってるとその言語の考え方も取り入れてVBA作るようになるから何かひとつやるにしても取れる手段が増えるんだよね。

まぁ個人的にはPythonは下手に手をつけると算数しか出来ないバカな俺には数学出来ないといけないお仕事が降ってきそうでちょっと敬遠するけど。

後JAVAは個人的に肌に合わなかったのでやって良かったってなるのか分からないけど、
JavaScriptはWeb系やるならまず必須になるし、とりま後はC#辺りやっとけばいいんじゃないかと思う。
630デフォルトの名無しさん (ワッチョイ 9a4f-+QtH)
垢版 |
2022/06/24(金) 04:14:34.15ID:ctS3zPLY0
後、このスレには俺みたいなジジイが結構いるみたいだから話しておくと、
遠い昔まだPCがマイコンとか呼ばれていた頃、すがやみつるって「ゲームセンターあらし」とかいう漫画描いてた人が「こんにちはマイコン」ってBASICでブロックの無いブロック崩しみたいなののプログラムを作る工程を漫画で説明しながら描いてたんだけど、
ちょっと前に「こんにちはPython 」って同じ感じの内容をPython でやってるのを出してたから話のネタに買ってもいいかも知れないよ。
ただ、新品買うほどの価値があるかは微妙だから中古でもいいと思うけど。

まぁスレ違いだからこの辺にしとくわ。
631デフォルトの名無しさん (ワッチョイ 4b02-WaTF)
垢版 |
2022/06/24(金) 04:39:40.48ID:61TcLrsp0
activecellを使って掛け算をしたい時どうすればいいのか分かりません
教えていただけたら嬉しいです。
inputboxで数値を入力してその数値を使って計算したいです。計算する時にactivecellを使いたいです
2022/06/24(金) 07:42:23.66ID:24qb8CGk0
>>631
Sub foo()
Debug.Print ActiveCell.Value * InputBox("")
End Sub
633デフォルトの名無しさん (アウアウウー Sa47-vQ73)
垢版 |
2022/06/24(金) 09:49:37.06ID:K2we1Lara
こういうのが尼崎事件を起こすんだろうな
634デフォルトの名無しさん (アウアウウー Sa47-iAjv)
垢版 |
2022/06/24(金) 12:20:36.40ID:SlsiDUV+a
需要と供給
2022/06/24(金) 15:06:54.11ID:kZFfj4TG0
難しい話ね。
これから他の言語も必要なら習得の必要あるしね。
636デフォルトの名無しさん (ワッチョイ 3b5f-8Usu)
垢版 |
2022/06/24(金) 15:26:03.25ID:bvc+MoD20
VBA覚えるの大変ですね
理解してコピペできるくらいにはなりたい
2022/06/24(金) 15:31:46.16ID:RLAl6U0RH
一度VBAエキスパートとか取るくらい勉強すれば
毎回Offsetの横は行が先か列が先かどっちだったかな?って(Resizeでも同じことやってる)やってるワイでも
大体コピペで作れるくらいには成長するよw
638デフォルトの名無しさん (ワッチョイ 3b5f-8Usu)
垢版 |
2022/06/24(金) 19:49:28.19ID:bvc+MoD20
>>637
ありがとう
やってみるか
参考書検討しようかな
2022/06/24(金) 20:26:28.92ID:oJCwQA/d0
コピペしたVBAってみんな捨てて去ってるのかな、貰ったことないかも。
2022/06/24(金) 21:29:08.60ID:kZFfj4TG0
コピペはダメと教わったがな最初の会社で。
あちぃなしかし今日は
2022/06/24(金) 21:34:54.88ID:p6zHePCT0
熱がこもって32度あるわ
2022/06/24(金) 21:35:55.33ID:p6zHePCT0
コピペしてそのまま使うことはほぼなくなる
コンパクトにまとめないと、後で見て何書いてるかわからなくなる
2022/06/24(金) 23:00:17.91ID:oJCwQA/d0
ネットにうpしてあった100行のやつをコピペして100000行にしてる、コンパクトという発想がなかったわ。そもそも意味わかんない行もあるけど消すと動かないし。
後任に渡そうと思ったけど恥ずかしいからやめとくか...。
おまえら上級者なんだね。
2022/06/24(金) 23:49:49.39ID:ueFhN9Vh0
VBAはコピペして動くからいいよな。
Pythonはだいたい動かない。
しかも、Pythonのページ作るやつて
断片的にソースを乗っけるから、なおさら動かない。
2022/06/24(金) 23:54:16.48ID:WnxbT+0Sr
コピペして動かすのって怖くないか?
少ない量ならまだしも100行だと何が起きてもおかしくない
2022/06/25(土) 01:09:59.54ID:XeF3ZBAK0
それを修正できるスキルがあれば別かもだけど、なかなかいないのでは
2022/06/25(土) 08:29:17.86ID:hk0FSiYld
ネットソースだとwsの指定とか省略されててコピペじゃ怖くて使えたもんじゃない
2022/06/25(土) 09:09:54.09ID:HMw3/wS6H
自分で一から書ける能力があればわざわざコピーなんざしないのさ。。。(-_-)

切り貼りつぎはぎだらけで変数の宣言がぐちゃぐちゃになってる
分かってくれる人いないかな(笑)
2022/06/25(土) 09:43:24.30ID:XeF3ZBAK0
独創でコード書けないと保守で詰むでしょ。
650デフォルトの名無しさん (アウアウウー Sad3-n9/C)
垢版 |
2022/06/25(土) 10:00:09.34ID:kapo/xgia
コピペが悪いのではなく、コピペで作ったコードを自分が提供した責任があるのだよ
2022/06/25(土) 10:15:11.28ID:HMw3/wS6H
>>649
自分だけで時間短縮のために使ってるマクロだからそんなに困らないよ

みんなに配布するレベルはこれからもしないと思う^^
652デフォルトの名無しさん (ワッチョイ 7f10-60CD)
垢版 |
2022/06/25(土) 10:49:20.62ID:Wc9Qs34b0
>>648
分かるけど理解はしない
それを許したらそこでおしまい
2022/06/25(土) 10:54:34.90ID:PITDVbGU0
まあ自分で使うだけならいいんじゃね
2022/06/25(土) 12:26:01.77ID:W4jZJdCLd
書ける能力あっても今までに作ったコードをコピペするだろ?
場合によっては共通関数の入ったモジュール程度を持ってくるにしても
お前らもしかして同じこと1から書いてるの?
2022/06/25(土) 12:41:36.76ID:7YC4We+Er
別部署に行って、「規則が変わるからこのマクロも修正してくれ」って言われ、中を見てみたらセレクトメゾットやコピーメゾットが使われてた時の絶望感
「クリップボードの履歴を有効にしていると正常に作動しない事があるから必ず無効にしてくれ」ってそれ書き方おかしくないか?
そして変数の宣言が強制されていなくて更に絶望する
2022/06/25(土) 12:56:07.50ID:Fu1pMYi/M
>>655のレベルもたぶん似たようなもんだよ
2022/06/25(土) 14:57:17.56ID:XeF3ZBAK0
>>654
と言うより、作って使用したらマクロは消しているのです。
再び必要になったら1から書いてますはい。
職場のローカルルールとして。
2022/06/25(土) 17:13:39.41ID:ehcxDoIm0
>>657
ないわー
関数自体が使いまわし前提の考え方だし
2022/06/25(土) 17:43:12.02ID:hk0FSiYld
>>654
理解しないでコピペするか理解して書いたコードを使い回すかの差は途轍もなく大きい
2022/06/25(土) 18:56:11.02ID:XeF3ZBAK0
それどころか回りの奴らはVBAにしろExcelの学習すらやろうとしない。
仕事終わったら飲みに行く事しか考えていない。休日も何も努力しない現実。
興味ないヤツには進めてもダメなのかな
2022/06/25(土) 19:21:59.19ID:WbawSRHfM
VBA使いに向上心を求めるのは酷でしょ
それがないからこそVBA止まりなのに
2022/06/25(土) 21:29:35.48ID:Ujo38STt0
>>660
自分が使うのは勝手にしろだけど、それで優越感に浸って「周りの奴らは~」とかキモすぎだろ
たかが仕事で使うの1つのツールごとき にここまでイキれるのはヤバいわ
2022/06/25(土) 21:31:08.83ID:tv1Cabyi0
他はすべて負けてるから何か一つでも勝てるものがほしいんや
2022/06/25(土) 21:32:27.25ID:xn3lQ0RO0
レスバで勝てば世界ランクあがるしな
2022/06/25(土) 21:44:09.88ID:VazVwqbS0
>>647
それってコピペしただけじゃ動かないってことよね?
動くように自分で指定すると思うんだけど、こわいってのはどういう事なんだぜ?
2022/06/25(土) 21:53:20.34ID:Of9vbGQH0
>>663
負けの数ではお前が一番だ
2022/06/25(土) 22:26:51.85ID:XeF3ZBAK0
勝利するかために複雑な知識や技術を身につけているのだが??
間違ってる?
2022/06/25(土) 22:29:13.51ID:hk0FSiYld
>>665
wsを指定しないとActiveSheetで動こうとするから誤作動の原になる
2022/06/26(日) 00:40:58.82ID:NOZ7SEa20
Webbrowserで証明書を自動選択する方法は無いものでしょうか?
2022/06/26(日) 00:44:34.36ID:NC1QoP++r
>>667
誰に勝利するの?
何に勝利するの?
671デフォルトの名無しさん (ワッチョイ 3f4f-60CD)
垢版 |
2022/06/26(日) 07:38:11.30ID:5vPg/0Rp0
他言語やったからって
excelやVBAでやったことが無駄になることはないよ
他の言語で作ったもののUTのエビデンスをとるのに
excelがもし無ければと思うとゾッとするし
テストデータ作成にもVBA使うととっても便利な場合が多いし
2022/06/26(日) 09:43:13.22ID:/e5N//9v0
エクセルのある列に数字が入ってます。
そのエクセルと同じ階層にあるフォルダの下に
上記の数字から始まる名前のフォルダがあります。
(数字のあとに日本語が付いてます)
このフォルダの探し方を教えていただきたく
2022/06/26(日) 09:45:37.60ID:Xa6L6yDT0
会社のパソコンでVBAを使って
pdfをテキストへ変換しています。
(com.adobe.acrobat.plain-text)
変換処理は不安定でエラーが出ることが多いが
成功することが多いです。
しかし有料ライセンスは一切買ってもらっていません。
これはライセンス違反ですよね??
違反ならもうやめます。
674デフォルトの名無しさん (ブーイモ MM5f-c/Mv)
垢版 |
2022/06/26(日) 09:56:38.78ID:IFq6Yt8DM
>>672
num=cells(行,列).value
dirname=dir(thisworkbook.path&"\"&num&"*",vbDirectory)
675デフォルトの名無しさん (ブーイモ MM5f-c/Mv)
垢版 |
2022/06/26(日) 09:59:07.88ID:IFq6Yt8DM
dirname=dir(thisworkbook.path & "\" & num & "*", vbDirectory)
2022/06/26(日) 10:18:26.90ID:6drPPg2U0
>>673
PowerQueryでもAdobeのAcrobatなしで
pdfをある程度変換出来るけど?
2022/06/26(日) 10:25:43.07ID:yfX3wl/l0
>>673
adobeに聞けとしか
2022/06/26(日) 11:39:03.04ID:XMcnD9d40
EULA読んでダメって書かれてなきゃいいだろ
679デフォルトの名無しさん (ワッチョイ 4f0e-6kVq)
垢版 |
2022/06/26(日) 12:11:58.60ID:hFDBYOe90
クラスが入ってるCollectionの要素を置き換えるにはどうすればよいでしょうか?

Set col(2)=New MyClass()

とやってもできないんです。
2022/06/26(日) 12:23:08.37ID:tixRR40Y0
置き換えはダメだからRemoveしてAdd
681デフォルトの名無しさん (ワッチョイ 4f0e-6kVq)
垢版 |
2022/06/26(日) 13:30:17.16ID:hFDBYOe90
>>680
そうですか
ありがとうございます

でもなぜ置き換えできないのでしょう?
そのしくみを理解したいのですが
スキルがあがるステップだと思うので
2022/06/26(日) 13:35:51.31ID:VKkh0pnir
IEの入力欄に値いれるマクロ使ってたんだけど、エッジに移行して動かなくなったんよ
エッジの入力欄いじる方法ってご存知ないですか?
調べてもよくわからなくて
2022/06/26(日) 13:39:54.64ID:PhXCrOZEd
VBAを投げ捨ててEdgeの拡張機能を作ろう
2022/06/26(日) 14:11:21.83ID:1bCfGQVkd
Sendkeys
2022/06/26(日) 15:05:50.62ID:WjaufMigd
まだInternetExplorer.Application は有効でしょ
サポートは切れたが動かなくなる訳ない
686デフォルトの名無しさん (ワッチョイ 4f0e-6kVq)
垢版 |
2022/06/26(日) 15:26:20.76ID:hFDBYOe90
なぜMsedge.Applicationにしないの?
687デフォルトの名無しさん (ワッチョイ 4f0e-6kVq)
垢版 |
2022/06/26(日) 15:32:17.63ID:hFDBYOe90
クラス(例:MyClass)が入ってるCollectionの要素(つまりMyClass)をある条件でsortしたいのですが
簡単な方法はないのですよね?
これは標準モジュールにそのソート用のsubかfunctionを書くのが一般的ですか?
「ある条件」というのが複数あるので、複数個それを作るのが面倒。
あといま思い付いたけど、そのCollectionをメンバとして含む親クラスをつくり、その親クラスにその複数のsortに相当するfunctionを作るのがカッコイイです?
2022/06/26(日) 18:21:23.39ID:WjaufMigd
たぶん用途的にArrayListが良いと思う
>>687
2022/06/26(日) 21:43:05.30ID:h799Melv0
VBAのマクロ名てなにか制限ある?
Sub n98()
MsgBox "a"
End Sub
というマクロを作ったんだが、実行できない。実行ボタンがグレーアウトする。
しかも、マクロボタンを押すとセルカーソルが彼方に飛ばされるんだが。
https://i.imgur.com/7iCfenT.mp4
2022/06/26(日) 22:29:47.48ID:UUS+pyK9H
>>689
ワイはそのコードコピペしたらちゃんと動いたよ
モジュールのコード上でF5キー押してみたら?
2022/06/26(日) 22:31:36.52ID:UUS+pyK9H
マクロ名の制限ももちろんあるよ
ググればすぐ出てくるはず

だけどこのコードのマクロ名は問題無い
2022/06/26(日) 22:39:05.59ID:h799Melv0
>>690
VBEでF5なら動くが、
エクセル本体で開発タブのマクロボタン押すとああなる。
ちなみにバージョンは2013。
マクロ名が英字2字+数字だと、マクロボタン押すとそのアドレスのセルに飛ばされるな。
もちろんマクロは実行できない。
そんな制限あったけ?
セルのアドレスて「予約語」になるのか?
2022/06/26(日) 23:12:48.18ID:47IFcp1V0
>>689
excel2010だけど全く同じ現象が起こるわ
F5からじゃくてAlt+F8な
2022/06/26(日) 23:30:30.80ID:CNfWwh200
この画面開いたらn98セルに行って勝手に選択(コピー?)してくれる
https://i.imgur.com/8G6jMt0.png

逆に、alt+f8でマクロを開いた状態でセル選択するとテキストボックスに反映されるので、
ここは参照かなにかで連動してるっぽい
https://i.imgur.com/cIRhTsz.png
2022/06/27(月) 07:11:11.91ID:KEClHONvr
>>694
予約語とかセル番地名、数字始まりは駄目
2022/06/27(月) 07:18:40.52ID:pJh/2YwLH
>>695
セル番地もダメだったのか、ウソついてごめんなさい
2022/06/27(月) 07:20:43.06ID:kD2T1aicd
セル番地名ってダメだったのか
698デフォルトの名無しさん (ワッチョイ 4f0e-6kVq)
垢版 |
2022/06/27(月) 07:28:39.14ID:JHJu1s6G0
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などのように単純ではなくてもっと複雑怪奇で長い文字列です。
2022/06/27(月) 07:42:09.30ID:/YUVVdlZD
インデント揃えてれば良いんじゃない?
それかある程度深くなったら別ルーチンや関数に飛ばすとか
2022/06/27(月) 07:44:02.36ID:cx09ANOo0
if a=1 and b=1 and c=1
にすればすっきり
2022/06/27(月) 08:00:18.06ID:qwmHCu1Hd
>>700
VBAはショートサーキットじゃないから遅くなる
2022/06/27(月) 08:05:04.58ID:3L19Fpz+0
>>695
それどこかに書いてある?
まあ予約語や数字始まりがダメなのはわかるけどセルアドレスは盲点だわ
2022/06/27(月) 09:20:29.88ID:WYWqaC3Yd
>>698
何がしたくてそのIF文を書いてるかわからないけどELSEに対しての記述がなければ>>700みたいな書き方にしてもいいけど
自分はその程度のネストは許容範囲だけどね
それとなんでしないほうがいいと思ったかも書くと他の回答もらえるかもね
2022/06/27(月) 09:26:36.50ID:iDqL/u9w0
年取ると4階層なんかもう見たくない
2022/06/27(月) 09:27:26.36ID:HPVEPi/ad
Excel2021でも再現したわ
セル番地はモジュール名にできないのか、知らんかった

捨て変数とか作業ファイル名なんか普通にaaa1とか使ってるから、いつひっかかってもおかしくなかったのに
思い返してみると、なぜか捨てSubはtest1とかmacro1にしてた
2022/06/27(月) 09:31:15.07ID:iDqL/u9w0
今わかってる範囲では、モジュール名にできるけど挙動が少しおかしくなる
避けられるなら避けたほうが無難だろうね
2022/06/27(月) 09:34:13.54ID:Kt0Hv+oPd
>>692
英字1文字でも3文字でも飛ばされる
なんかの裏技に使えそうな気がする
遠くのセル範囲をちょっと確認したいとか
708デフォルトの名無しさん (ワッチョイ 8f5f-tCSL)
垢版 |
2022/06/27(月) 09:36:09.63ID:kVADuAyl0
>>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
2022/06/27(月) 09:50:33.84ID:WYWqaC3Yd
>>708
自分としてはもともとの判定を変更するような回答はどうかと思ったりするんだよね
複雑怪奇とかいてるのでわかりやすい回答なら「if not (a = 1) then」にしたほうがいいのではないかと
それとそこまで書いたらcの判定もcontinueで飛ばしたほうがすっきりするかと
2022/06/27(月) 09:53:16.46ID:H4LNDdnJ0
>>707
マクロじゃなくてジャンプでいいってなるんじゃ
711デフォルトの名無しさん (アウアウウー Sad3-n9/C)
垢版 |
2022/06/27(月) 10:00:09.47ID:Do3p35pda
>>698
内容がわかるようにコメントつければいいんじゃね
2022/06/27(月) 10:15:26.20ID:3L19Fpz+0
>>705-706
モジュール名にはできないけど>>694のは手続き名だからモジュール名で修飾(※)すれば呼び出せるよ
※ マクロ名の欄に直接 Module1.n98 のように入力する
2022/06/27(月) 10:19:02.79ID:iDqL/u9w0
>>712
スマン、勘違いしてた
2022/06/27(月) 10:24:13.47ID:3L19Fpz+0
>>698
一般論としてネストは浅い方が理解しやすいからそのコードであれば>>700>>708みたいにした方が読み易い
ただ>>701が言うようにVBAにはショートサーキット(短絡評価)がないので遅くなるのはいいとしても
If N <= UBound(A) And A(N) = 1 Then ...
みたいなのは
If N <= UBound(A) Then
If A(N) = 1 Then ...
のようにする必要がある
715デフォルトの名無しさん (ワッチョイ 8f5f-tCSL)
垢版 |
2022/06/27(月) 10:29:53.48ID:kVADuAyl0
まあ、複雑な判定するならメソッドに切り出すのが間違いないわな
VBEだとIDEのサポートないから若干めんどくさいけど
2022/06/27(月) 11:00:14.42ID:tRNW+/P90
>>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
みたいな書き方もある
2022/06/27(月) 11:01:13.33ID:tRNW+/P90
最後の行間違えた
Loop Until 1: Next
2022/06/27(月) 11:05:37.12ID:zkyvRAcfa
あんまりにもネストするなら、判定文(if複数)だけ別プロシージャ(Function)として外出しして、TrueかFalseを返させるようにするかな
IsGoukaku みたいなプロシージャ名にすると何したいかがわかってメンテ楽だし
2022/06/27(月) 11:29:16.42ID:gUdOjGv30
セル番地がダメならダメでいいけど、あんな挙動をするのはバグだよ。
本来はメッセージだして弾くべきじゃね?
office365でも同じならだれかMSにチクってみてくれ。
以前、MSの掲示板にWinの不具合を書いたら、
速攻で消されたが、
こっちでも確認できたから開発にレポしといたていうメールが来て感動したわ。
2022/06/27(月) 11:31:14.56ID:iDqL/u9w0
>>719
365でも同じだよ
2022/06/27(月) 11:34:53.87ID:gUdOjGv30
>>700
if a=1 and b=1 and c=1
にすると内部では判断を3回することになる。

if a=1 then
if b=1 then
if c=1 then
にすると判断は少なくなるのだから、ネストするほうが正解じゃね?
もちろん、ifを書く順番は判定が少なくするようにする必要はあるが。
2022/06/27(月) 11:48:23.44ID:Fr547gX6r
>>719
ゆうてVBAとかアプデすんの?
2022/06/27(月) 11:52:04.31ID:iDqL/u9w0
してるよ
2022/06/27(月) 11:52:52.11ID:nfvw1vkN0
セキュリティ以外で?
2022/06/27(月) 11:57:18.86ID:iDqL/u9w0
うん
2022/06/27(月) 11:59:27.42ID:iDqL/u9w0
頻度はwindoewsやエクセルに比べたらかなり低いけど、やってるよ
確かちょっとずつ便利になってる。本当にちょっとだけ。関数が増えたりはしていないはず。
ソース探したけど見つからねぇ
2022/06/27(月) 12:02:08.29ID:nfvw1vkN0
ふーん。。
まあ元号はあったね。。
古臭いよね。。
2022/06/27(月) 12:04:52.44ID:nfvw1vkN0
言語仕様っぽいページはあった
https://docs.microsoft.com/en-us/openspecs/microsoft_general_purpose_programming_languages/ms-vbal/d5418146-0bd2-45eb-9c7a-fd9502722c74

結局代替がないからなあ
2022/06/27(月) 13:50:25.11ID:FDoLWwM/d
>>718
俺も大体これでやってる
2022/06/27(月) 19:05:07.99ID:IOT9Z53O0
>>698
そもそもi使ってねーじゃん
731デフォルトの名無しさん (ワッチョイ ff02-tQxS)
垢版 |
2022/06/27(月) 19:57:12.47ID:UdQiWAN30
どなたか教えてください。

売掛金消し込みのマクロを作成しています。VBAでソルバーを自動化したいと思っています。

目的セル、制約条件の参照セルの開始行が40行ごとに下がっていき、指定値は数値ではなく、セルを指定したいです。

とりあえず、全部の変数をvariant型にしてますが、なかなか上手くいきません。
732デフォルトの名無しさん (ワッチョイ ff02-tQxS)
垢版 |
2022/06/27(月) 20:18:45.52ID:UdQiWAN30
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
2022/06/27(月) 20:22:23.17ID:jYXkLZ/o0
で、何がうまくいかないの?
734デフォルトの名無しさん (ワッチョイ ff02-tQxS)
垢版 |
2022/06/27(月) 20:26:50.30ID:UdQiWAN30
>>733

ソルバーを実行しても、目的セルが0のままで指定値にと一致する金額の組み合わせが見つかりません。

どの請求分の入金なのか、突合したいです。
2022/06/27(月) 20:35:36.69ID:9IVJ+eiIa
>>734
ソルバーわからんから確認させてください
振込1って変数は配列に入れた値を指定したいものですか?それともセル自体を指定したいものですか?
前者であればそれでいいですが、後者なら変数はRange型にする上で代入時に
Set 振込1 =〇〇
としないといけませんが…
736デフォルトの名無しさん (ワッチョイ ff02-tQxS)
垢版 |
2022/06/27(月) 20:37:19.75ID:UdQiWAN30
連投すみません。

変数宣言して、for〜next構文でe列を("e"&i+40)や、n列も("n"&i+40)みたいにしたいんです。

d列には請求金額、e列は空白、目的セルにはsumproduct関数が入ってます。

指定値セルはn2:n8で、それぞれ違う金額が入力されてます。入金額とn2:n8内の金額が一致する組み合わせの請求金額をVBAを使って、求めたいです。
737デフォルトの名無しさん (ワッチョイ ff02-tQxS)
垢版 |
2022/06/27(月) 20:39:44.13ID:UdQiWAN30
>>735

ありがとうございます。
ヘルプを確認したら、指定値はバリアント型で書けとあったので、なんとなくvariantにしていました。
738デフォルトの名無しさん (スプッッ Sd5f-h9lZ)
垢版 |
2022/06/27(月) 20:45:55.27ID:qw9z/asOd
>>737
マルチ死ね
2022/06/27(月) 20:58:49.57ID:jYXkLZ/o0
とりあえず、rangeで回すんじゃなくてcellsで回したら?
n列はcells(i,14)
e列はcells(i,5)で
740デフォルトの名無しさん (ワッチョイ ff02-tQxS)
垢版 |
2022/06/27(月) 21:09:33.28ID:UdQiWAN30
>>739
sub または functionが定義されませんエラーが出ます…
741デフォルトの名無しさん (ワッチョイ ff02-tQxS)
垢版 |
2022/06/27(月) 21:10:43.06ID:UdQiWAN30
>>739

cellsも以前試したんですが、上手いこといきませんでした
742デフォルトの名無しさん (ワントンキン MM0f-5jmv)
垢版 |
2022/06/27(月) 23:45:06.09ID:8dHt2RWvM
こんな奴が作るプログラムで金勘定とか笑えるわ
己を知らないって馬鹿の特徴なんだよな
2022/06/28(火) 00:04:39.14ID:41/DPGawd
ソルバーってカタカナで書くの余計分からないよ
素直にSolverで良いだろうに

上の困ってるのは一旦マクロの記録で動作確認お薦め
2022/06/28(火) 00:07:49.75ID:bUNh/khy0
>>742
2行目はよく解る www
745デフォルトの名無しさん (ワッチョイ 7fda-n9/C)
垢版 |
2022/06/28(火) 05:51:37.94ID:kKObdKOQ0
オレオレ詐欺の手伝い?
746デフォルトの名無しさん (アウアウウー Sad3-n9/C)
垢版 |
2022/06/28(火) 07:36:23.45ID:XbsSoqMza
>>736
なんで会計ソフト使わないの?
2022/06/28(火) 07:54:25.17ID:2SIMEAUf0
Excelは万能ではないから会計ソフトでやるべき事柄
2022/06/28(火) 08:48:25.11ID:8yuWSL180
この世で最高のコードを見かけた

With Range("F27:F56")
.Value = .Value
End With
749デフォルトの名無しさん (ワッチョイ 3f4f-60CD)
垢版 |
2022/06/28(火) 09:10:04.94ID:3ZxXgE6I0
>>748
それの意味解る?
ちょっと前に同じ様なコード載せてた人いたけど
複数範囲は一度に設定できないって嘆いていたよ
2022/06/28(火) 09:10:36.27ID:a//tJk240
>>732
solverを使うときのパラメーターの設定の方法が間違ってんじゃない。多分値渡しではなくsetを使うと思うよ。
まずマクロの記録もう使ってなんでもいいからsolverで問題を解いてみて、solverを使うときの正しいVBA の書き方を確認しなさい。
2022/06/28(火) 09:52:29.46ID:qOxYqvDuM
>>698
Ifなんたらかんたらを使わないで
B2になんか文字が入っていたらC2を
B3になんか文字が入っていたらC3を…

をスマートに書くならどう書きます?

https://i.imgur.com/5VtTNti.jpg
2022/06/28(火) 11:02:29.10ID:1UWi0IGcd
>>751
こんな質問してマウントとりたいんだろうか・・・
こんな質問するならそのスマートな回答も書いておけばいいのに
2022/06/28(火) 11:15:10.25ID:cqDrGvOU0
VBA使わなくてもセルに関数書いときゃいいんじゃね
2022/06/28(火) 12:14:32.96ID:S7aFTH1NM
>>751
お前Access VBAスレにExcelの質問書き込みするんじゃねーよ
迷惑だ
2022/06/28(火) 17:20:05.57ID:mlWlUbMB0
すみません、神様達、教えてください

エクセルVBAでは
関数内関数はどうやって作れますか?
また複数の関数を目的別に整理する方法として
パッケージやモジュール単位にまとめたり
マップに収納したりはできるのでしょうか?
2022/06/28(火) 17:52:33.73ID:fjXXNeRNM
>>755
できる

vbeエディタウインドウを凝視しているとやり方が判るはず
2022/06/28(火) 17:59:52.62ID:8yuWSL180
>>756
具体的にやり方を教えてあげなよ
2022/06/28(火) 18:51:45.14ID:gpLDnVSMr
>>755
関数内関数ってこれのこと?
https://www.sejuku.net/blog/28904
2022/06/28(火) 19:15:28.84ID:+0CREnk7H
>>756
ちょっと凝視してみます

>>758
疑似コードですけど例えば、
Function out()
 Function in1()
 End Function
Dim a=Function in2()
End Function
out=Array(in1,a)
End Function

みたいな感じで
関数outの中に関数in1を宣言したり
変数に関数を代入して、returnしたりしたいのです
760デフォルトの名無しさん (ワッチョイ 8f5f-tCSL)
垢版 |
2022/06/28(火) 19:22:25.73ID:EFCYXnQm0
ローカル関数もサポートされてないし
関数をオブジェクトとして扱えないので変数への代入も無理です
2022/06/28(火) 19:22:27.90ID:+0CREnk7H
>>756
標準モジュール単位で関数をまとめればいいってことでしょうか?
2022/06/28(火) 19:29:24.91ID:+0CREnk7H
>>760
ありがとうございます
なるほどです
すっきりしました、神様ありがとう

モジュールを使いながら関数を整理するか
関数用にファイルを作って管理するかします
2022/06/28(火) 20:14:33.61ID:a//tJk240
>>761
正解です
2022/06/28(火) 20:14:53.99ID:a//tJk240
それからモジュールには適当に名前を付けることができますので
2022/06/28(火) 20:17:06.37ID:8yuWSL180
関数内関数ってのは、関数の中で定義する関数のこと
phpだと

sub foo1
if a = b then

 sub foo2
  foo2=1
 end sub

else if

 sub foo2
  foo2=2
 end sub

end sub

みたいなことができる
あんまやらんけど
2022/06/28(火) 20:22:34.06ID:a//tJk240
>>759
関数内関数をそこで書いているようなやり方ではできないけれど、どうしてもやりたければ vbe オブジェクトを定義してそこにコードを書き込むという疑似なやり方はできる。あるいはコードを作成するプロシージャを作成してそのプロシージャを呼び出して引数を渡してコード作った後、そのコードを呼び出すみたいなことはできるのかもしれない。
コードを実行中に別のコードを作成するという経験がないんでエラーが出るかどうかは分からない。

ただ面倒だし見通しも悪くなるんで外側で関数を定義した方が簡単だと思うんだけれどなぜ関数の中で関数を定義したいのでしょうか。
2022/06/28(火) 20:32:39.05ID:+0CREnk7H
>>766
ありがとうございます
vbaがエクセル前提の言語と考えると
私が考えているような関数は使うべきでもないのだなって思いました

神様たちのアドバイスに感謝です
ありがとうございました
2022/06/28(火) 20:42:12.06ID:+0CREnk7H
>>765
ありがとうございます
2022/06/28(火) 20:50:26.07ID:+0CREnk7H
>>766
なぜ関数の中で関数を定義したいのか

すべての関数を同列に記載すると見通しが悪い気がして
例えば数式に関するものなら、calcurationでまとめ
出力に関するものなら、printでまとめ
保存に関するものなら、saveでまとめ
っていうように、目的別、機能別、階層別に関数をまとめると
後で見直したときに分かりやすいかなって

さらにfacadeみたいに間口を作れば
拡張も修正もしやすいかなって思いまして
2022/06/28(火) 20:56:44.33ID:8yuWSL180
>>755
>関数内関数はどうやって作れますか?
関数内関数はない
classは貧弱だけど、ある
ただvbaそもそもの概念として、エクセルのスクリプトであるという点がある
あんまり大きなclass作りたいなら、別言語の方が良いと思う
エクセルvbaはゲームとかもキツイ(メインloopが超貧弱でvbaを起動しっぱなしだとよく落ちる)

>また複数の関数を目的別に整理する方法として
>パッケージやモジュール単位にまとめたり
>マップに収納したりはできるのでしょうか?
標準モジュール単位でまとめられるけど・・・
エクセルvbaの標準モジュールは「どのシートにも共通する処理」のような意味合いで用いられる

よくも悪くも、vbaはエクセルのためにあるので
あまり壮大な事をするのには向いていない
2022/06/28(火) 20:59:53.87ID:+0CREnk7H
>>770
class調べてみます!
モジュールとclassが使えれば
見やすいコードかけるかも!

そんな壮大なプログラムを作るつもりなないのですけど
一処理、一関数にしたいとなると
ある程度の単位で処理をまとめていきたいなって

ご丁寧なご解説に感謝です
ありがとう、神様!
772デフォルトの名無しさん (ワッチョイ ff02-tQxS)
垢版 |
2022/06/28(火) 21:13:22.89ID:i28fB/zi0
>>750
アドバイスありがとうございます!

入金消し込みの自動化をせよと上司からの指示で、初心者なりになんとかやってるんですが、会計ソフトの会社でもお手上げな仕組みの売掛金管理のようです。

setとcellsでなんとか、試行錯誤してやってみようと思います!

またわからなくなったら、質問させて頂きます。
2022/06/28(火) 21:26:40.99ID:WQvDBuzoa
十年近くぶりに触るし上級者だったとかじゃないけど
VBAで
今開いてるPhotoshopの選択しているレイヤーを基準にExcelの指定セル範囲(例:A1からA20)を1セルごとにレイヤーを1枚作りセルの中身を文字ツール(テキスト)でレイヤーを作成。
例:ExcelのA1に「あいう」、A2に「えお」、A3に「123」が入力されていたとし、指定範囲選択(A1〜A3)を、開いてるPhotoshopにレイヤー追加しながらテキストレイヤー「あいう」、「えお」、「123」を作る(計3枚)。その際、Excelに近い見た目の形で…この場合、横に少し間隔を空けて「あいう」「えお」「123」が並ぶように作成する。(文字の大きさや色は直前に使ったpxサイズ、色とする)
って出来ますか?
774デフォルトの名無しさん (ワッチョイ 3f4f-60CD)
垢版 |
2022/06/28(火) 21:45:50.92ID:3ZxXgE6I0
いや、関数内関数?
まぁ似たようなものはあるよ。
GOSUBってのが。

ただ、これも負の遺産のひとつだから
あまり使うことはお勧め出来ないけど。
2022/06/28(火) 21:52:47.26ID:/U22FX/80
gosubは全然違うでしょ
2022/06/28(火) 22:11:43.10ID:GB8Zx7jKM
関数内関数いわゆる高階関数について、VBA関数には高階関数のための機能は無いけどワークシート関数のLAMBDAが該当する
2022/06/28(火) 22:18:47.50ID:8yuWSL180
確かに!その発想は正解だが・・・だが・・・
778デフォルトの名無しさん (ワッチョイ 8f5f-tCSL)
垢版 |
2022/06/28(火) 23:36:42.40ID:EFCYXnQm0
>>773
COM経由で操作できるっぽい。こんなのが引っかかった
https://minatoya.work/419/
2022/06/29(水) 07:26:36.96ID:f9LCV9hba
>>776
お前名前に騙されやすいタイプだろw
LAMBDA は単なる関数定義で VBA スレ的にはユーザー定義関数と変わらんぞ
ユーザー定義関数はマクロブックにしか入れられないから LAMBDA が作られた
2022/06/29(水) 08:15:54.31ID:SMNkprrA0
他のプログラミングと同じだと思われているのかな LAMBDA 関数は
2022/06/29(水) 08:48:09.67ID:sZpGYWcf0
ユーザー定義関数では(コーディング時に)関数を自作することはできるが、(実行中に)関数内で関数を定義したり
(実行中の)関数の引数に関数そのものを与えるたりすることはできない
そもそもユーザー定義関数とLAMBDA関数はまったく別のもの

Excelの新関数「LAMBDA」(ラムダ)が一般提供開始 ~Excel数式が本格的なプログラミング言語に
https://forest.watch.impress.co.jp/docs/news/1387035.html
2022/06/29(水) 08:51:20.38ID:GuRBEGnka
>>778
ありがとう
そこのページ起点に頑張ってみる
2022/06/29(水) 08:55:02.95ID:8rr9zLPCM
関数型パラダイムをサポートしている言語か、最低でもC言語などで関数ポインタを使ったことがある人でないと高階関数の概念は理解が難しい
784デフォルトの名無しさん (アウアウウー Sad3-n9/C)
垢版 |
2022/06/29(水) 10:34:47.30ID:7c8LgVFIa
privateで良くないか
2022/06/29(水) 12:27:16.10ID:f9LCV9hba
>>781
高階関数の話ならそこに書いてあるMAPとかSCANがLAMBDAを受けられる様になったことを言うべき
あと関数内関数と高階関数は全く別物だし実行中に定義できるかかどうかも関係がない
786デフォルトの名無しさん (アウアウウー Sad3-ci0b)
垢版 |
2022/06/29(水) 13:48:20.01ID:Es0nfTu8a
記者がアホなんやで
2022/06/29(水) 14:05:01.02ID:SMNkprrA0
ネットの記事って怪しかったり間違っているのが多々あるよね
2022/06/29(水) 14:22:16.06ID:3IrndTU40
ネットの記事だけがそうだと思ってる?
2022/06/29(水) 14:30:17.44ID:par7A0IW0
はい次の方
790デフォルトの名無しさん (ワッチョイ 3f4f-60CD)
垢版 |
2022/06/29(水) 14:59:30.13ID:0RCF24VI0
.Netでもひとつの壁と言われているラムダ式が
VBAどころかEXCELで使えるようになるのか。
胸熱だが脱落者も増えるだろうな。
2022/06/29(水) 15:07:56.16ID:Ajq9RLSRM
一般的な意味での高階関数は数学的な抽象概念としての話ではあるけど、プログラム言語としては第一級関数の実装のことを言う場合が多い
(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
2022/06/29(水) 15:09:05.56ID:JurptZkT0
脱落者なんて増えないさ
世の中にエクセルの全機能使いこなしてる奴なんていないからな
理解できない機能は使われないだけだよ
793デフォルトの名無しさん (ワッチョイ 3f4f-60CD)
垢版 |
2022/06/29(水) 17:35:51.56ID:0RCF24VI0
>>791
読んでてよく分からんかったけど
要はアセンブラでいうところのアドレスの間接参照とか
間接修飾とか言われているやつで
.NetではDelegate、VBAではCallByNameによるコールバックって理解でいい?
2022/06/29(水) 17:43:32.68ID:8wQcCZ0gd
VBAでできない事をダラダラと話さず別スレいけばいいのに
2022/06/29(水) 17:56:17.53ID:vfJ3sAv3M
Excelで例えるなら関数を特定のオブジェクトのメソッドとしてではなく、それ自体を実体のあるオブジェクト(あるいはコレクション)と見做すようなもの
利用側の関数内で関数オブジェクト(のようなもの)を参照する手段として関数そのものをラムダとして扱う
2022/06/29(水) 18:54:09.74ID:zPLPBKg6H
エクセルもVBAも詳しくないんですけど
VBAは非同期処理でコールバック関数を使わないんですか?
2022/06/29(水) 19:06:05.99ID:tW8kR1cqM
イベント駆動型ですから
2022/06/29(水) 19:13:20.08ID:i0xj9Opya
>>794
高階関数っていうのを最近覚えたんだろうな
関数内関数に1mmも関係ないのにしつこく語ってる
他の言語スレだと瞬殺されるレベルだからこんなスレで管巻くしか無いんだろうw
2022/06/29(水) 19:15:29.13ID:uu2mw40gD
>>796
使おうと思えば使える
2022/06/29(水) 21:47:59.24ID:zPLPBKg6H
>>799
コールバック関数を使えるのなら
引数に関数参照できるということです?
なら変数に関数を代入できそう
2022/06/29(水) 21:55:21.60ID:zPLPBKg6H
>>797
非同期処理はイベント処理に依存してるってことでしょうか?
コメントありがとうございました
VBA初心者なのでいろいろ勉強していきます
2022/06/29(水) 22:13:03.71ID:sZpGYWcf0
>>800
特定のオブジェクトやクラスに所属する関数やAPIなどシステムで定義された関数(メソッド)であればコールバック関数で参照することはできる
グローバルのユーザー定義の関数はラムダ式で記述するなどの手段を使わない限りは無理
2022/06/29(水) 22:45:43.93ID:JurptZkT0
コールバック「関数」とはなにを指してるんだろうかねぇ

コールバックを実現する手段はイベント以外に
CallByNameとかApplication.Runとかでまあ実現できなくはない
2022/06/29(水) 22:55:30.76ID:zPLPBKg6H
コールバック関数は何を指しているのか
なぜラムダ式が存在するのか
即時関数とラムダはどこから分岐していったのか
関数プログラミングは本当に有益なのか
本当に変数は悪者で動的型付けは悪なのか
それらはもはや哲学なのかもしれません
2022/06/29(水) 23:01:15.11ID:L0Xzxy470
慣れれば別にどっちでも・・・って感じになるけどな
2022/06/29(水) 23:50:10.86ID:HQQahVZ60
>>783

自作の階乗作らせりゃ一発だろ。Cの関数へのポインタとか、可読性0に近い。組んでて楽しいけど、1ヶ月後の自分はこれを理解できるだろうかという疑問が湧くw
807デフォルトの名無しさん (ワッチョイ 3f4f-60CD)
垢版 |
2022/06/30(木) 05:47:49.15ID:P7B/AZjs0
まぁでもあんまりVBAでコールバック使う機会ないかな
呼び出しや生成元のモジュール側の関数を
呼び出された側や生成された側から呼び出すときに
密結合になるのを避けるためくらいにしか使ってない
2022/06/30(木) 07:16:43.81ID:1TbRNwlJH
>>807
エクセルVBAでDBのデータやファイルデータを読み込むとき
非同期にならないように処理するってことなんでしょうか?
例えばフラグを立ててdo-while、breakで処理待ちしてから次の処理に進むとか?
webのように処理と表示のタイムラグを気にするようなことがないのかもしれませんね
2022/06/30(木) 07:32:44.20ID:wDIpT9iQ0
それすんごい資源食わないか?
2022/06/30(木) 07:37:53.64ID:1TbRNwlJH
>>809
vbaはコールバックを使わないということらしいのですが
コールバックを使わずに非同期処理する方法があるのでしょうか?
2022/06/30(木) 07:47:00.24ID:NKnrqd7g0
ない(もしくはめちゃ面倒だ)から諦めろ
非同期やりたいなら他の言語使え
2022/06/30(木) 07:59:35.80ID:wyi1xEzY0
VBA走らせている間に漫画でも読んどけよ
2022/06/30(木) 08:04:39.54ID:1TbRNwlJH
え、昨夜のレスでは非同期使えるって言われたので
多言語と同じようにpromise的な処理があるのかと思いました
非同期めちゃくちゃ面倒ってことは
エクセル処理で非同期を使うという発想が間違っているのですね

なんかいろいろ勘違いしていたみたいでした
神様、先輩方、すみませんでした
2022/06/30(木) 08:14:56.75ID:CdZVH0NpM
vbsとか使って外部プロセスに追い出すのが簡単だな

で、何を並列処理したいのかな?
2022/06/30(木) 09:30:19.73ID:TLf+rFOod
JavaScriptの経験があるなら今更VBAなんかに手を出さなくてもOfficeスクリプト使えばいいでしょ
デスクトップでもサポートされたからもうVBAいらないよ
816デフォルトの名無しさん (ワッチョイ 3f4f-60CD)
垢版 |
2022/06/30(木) 10:09:22.67ID:P7B/AZjs0
>>815
え、マジ?
もう企業や教育者向けのじゃなくても開発出来るの?
2022/06/30(木) 10:36:29.60ID:3IHNP7gZd
ブック1開いてマクロ実行
待ってる間にブック2開いて手作業
ブック2保存して閉じたら、そのタイミングでブック1のマクロが停止
これって仕様?
818デフォルトの名無しさん (アウアウウー Sad3-sbT5)
垢版 |
2022/06/30(木) 11:24:18.66ID:l3rHcZB/a
排他処理なにそれおいしいの?

ファイル保存したらマクロが止まるのは仕様
2022/06/30(木) 15:49:46.55ID:RZ5lqdEjd
VBAいじっている間にいつの間にかボタン表面が白くなって
userformの背景色や、userformで使われているボタン表面のも同じ白色に変色
まったく新しくファイルを作っても同じ現象が起きる
オフィスをインストールし直しても同じ

例外的にいつもの正常なボタンの表面色で表示されるケースがある
https://i.imgur.com/t5RFNKa.png
この現象が起きる前に作ったファイルのコピーを作る。このコピーを開く。
このとき、セキュリティ警告が出てる間はなぜか正常なボタン表面色
コンテンツ~のボタンを押した瞬間にボタンが白くなる
Workbook_Openとかはそもそもない

今のおかしな状態が黒線の左側で、右側がセキュリティ警告が出ている状態

VBEでUserForm自体・ボタン・テキストボックス、これらの背景色BackColorの値は
&H8000000F&
これって正常な値ですよね?
つまり内部的には正常な値なのに表示はいずれも真っ白

windowsやモニタの設定の影響であればセキュリティ警告が出てようが無関係に白色化しているはず


何か原因わかる方いますか?
そもそもVBAが関係しているかどうかも分からないのですが。
ちなみに他のエクセルとは無関係のソフトウェアの色は特に変化はないように思います
2022/06/30(木) 15:56:36.78ID:RZ5lqdEjd
>>819ですが、文章ちょっとおかしなところがありました
ユーザーフォーム上のボタンも、ワークシートに直接おくボタンも同じように白色になっているということです
そもそもボタンだけじゃなくて&H8000000F&で色が表示されている部分は
どれもおかしくなっているような状態です
2022/06/30(木) 16:27:38.04ID:CdZVH0NpM
たいして白くない件
2022/06/30(木) 16:32:48.48ID:RZ5lqdEjd
>>821
真っ白です

→は例外的に正常に表示されるケース
←が現状
https://i.imgur.com/3Hy4Ot8.png
2022/06/30(木) 17:41:14.60ID:1+oYjPxt0
>>810
非同期と並列処理の区別をつけろよ
非同期=コールバックでもないしな
2022/06/30(木) 17:47:02.54ID:1+oYjPxt0
>>819
テーマが適用されてるだけな気がする
2022/06/30(木) 18:26:58.93ID:m1ZMAziu0
システムカラーの値
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/system-color-constants
2022/06/30(木) 21:06:49.66ID:1TbRNwlJH
>>823
そうですね
コールバックがマルチスレッドって言ってるわけでも
プロセスを分けるって言ってるわけでもないです
全ての非同期処理は並列処理でもないですし
コールバックは処理なので、非同期でもないですし
VBAは初めてなのでいろいろ勉強していきます
なんか変なこと言っていたらごめんなさい
2022/06/30(木) 22:28:19.76ID:SUgmTyTCd
自分はやりたい事の手段の一つにExcelVBAがあるだけでExcelVBAでどこまでできるかってのは気にしてない
別の言語を選択すれば可能ならExcelVBAにこだわることもないしね
勉強するあたりのレベルならExcelVBAだけでなくほかの言語も勉強したほうがいいかもね
2022/06/30(木) 23:19:39.52ID:1TbRNwlJH
エクセルの参加人数はすごいと思います
参加人数の多いエクセルをプラットフォームとしてデータ処理できるVBAは
他の言語には見られない参加者人数の価値があります(これを英語で何と言ったか忘れましたが)
ハードもプラットフォームも、潜在的な参加者の数で価値を測るという考え方が正しければ
エクセルVBAは他の言語をはるかに凌ぐ学習価値があると思うのです

他の言語を学習しつつもVBAも使えるというのは
とても素晴らしいことなのだと、VBA初学者としても感じています
先生方、これからもご指導いただける機会がありましたらよろしくです
829デフォルトの名無しさん (スプッッ Sddf-319G)
垢版 |
2022/07/01(金) 00:44:30.82ID:iVoRsqHDd
>>828
お前は二度と来なくていいよ
2022/07/01(金) 00:49:35.03ID:T8FFb7IX0
>>828
ちょっと何いってるか分からない
831デフォルトの名無しさん (ブーイモ MM4f-r+Rc)
垢版 |
2022/07/01(金) 01:26:43.65ID:miA2ycF9M
魔界に転生するとしたら、リザレクの次くらいに持っていたいスキルですもんね。
転生するまでに習得したいと思います。
2022/07/01(金) 01:41:24.35ID:wxGP1WcO0
シート上に実行ボタンがあり、いろいろなBookから値を取得してメインのブックに張り付けるマクロがあるのですが、
Windows7+Excel2010とWindows10+Excel2016では、2016方が数倍動作が遅いです(数秒程度が10秒程度になる)。
ただし、時々2010と同程度で終わることがあり、原因がよくわかりません。
なんか、実行ボタンの押し方によって(クリックしてマウスポインタをすぐExcelのウィンドウ外に移動)、
速度が速くなるような気がしているのですが、そのようなことはあるのでしょうか?
あるとすれば、なにか対策や原因はあるのでしょうか?
2022/07/01(金) 02:14:42.23ID:u7q4KnhWd
>>832
2013あたりからExcelの内部構造が大幅に変わったらしい
Windowsも新しいほど重くなってる

マウスポインタの位置によって速度が変わるのは多いにあり得る
昔はボタンを押したままにするとアプリの動作が止まってたのが、いつのまにかずっと動き続けるようになったし
2022/07/01(金) 06:59:23.11ID:JTFoUJU2H
>>829
DBシステムとしては
操作のバリエーション、検索、演算エンジンともに
最高峰の素晴らしい言語システムなのに
初心者に冷たいコミュニティなのですね

>>830
ネットワーク経済性と似た発想の価値測定方法で
ソフトやハードの経済価値を推定する思考方法です
835デフォルトの名無しさん (ワッチョイ 3f4f-60CD)
垢版 |
2022/07/01(金) 07:51:36.56ID:m7rasyZv0
>>834
いやいや、DBシステムとして使うとすると
シートにSQL投げようとしたとき
インデックス貼れない時点で欠陥品だよ。

EXCELの本分はあくまで表計算。
2022/07/01(金) 08:45:57.76ID:Dqsnfi220
>>834
まずDBシステムじゃないし
COMから学んではどうか
2022/07/01(金) 09:01:55.38ID:2BH0SskNM
今どき簡易DBアプリはPowerAppsみたいなローコードツールを使えばよい
オンライン共有のAccessみたいなアプリがクソ簡単に作れてExcelやスプレッドシートとの連携も容易
838デフォルトの名無しさん (アウアウウー Sad3-n9/C)
垢版 |
2022/07/01(金) 11:26:48.78ID:MWfPFNZsa
>>832
気のせいだからほっとけ
2022/07/01(金) 11:27:33.06ID:B1H2Mtvqd
自分としては質問があればそれにこたえるだけでいいと思うが
技術者が他の事にも手を広げるならクソ簡単かもしれないが
一般ユーザーが背伸びしてVBAを理解しようとしてるなら保守なんかも含めてハードル高いと思うんだよね
まあ言いたい人は好き勝手に言うだけだから止められないが
2022/07/01(金) 11:46:09.70ID:Kpd5ohp2M
自分としては質問があれば質問するだけでいいと思うが
一般ユーザーが背伸びして回答なんかハードル高いと思うんだよね
まあ言いたい人は好き勝手に言うだけだから止められないが
2022/07/01(金) 15:15:30.41ID:Bx5b0a9x0
大事な事だから二度と言うな
2022/07/01(金) 15:46:06.01ID:Ry4wIvAM0
どっちだよw
843デフォルトの名無しさん (アウアウウー Sad3-sbT5)
垢版 |
2022/07/01(金) 15:50:37.55ID:E3WEdYada
背伸び?逆やろ
背伸びしようとするタイプはVBAなんて使わない
伸びない香具師がVBAに固執してる
2022/07/01(金) 15:51:42.30ID:S5EpTQdXM

「いいですか?1回しか言いませんからよく聞いてくださいね」
って言われたけど、なんで大事なことなのに1回しか言わないんだろう
そんなに大事なら確実に伝わるまで何回でも言うか書いて渡すかすべきだろ
2022/07/01(金) 15:56:44.16ID:wWku/Klda
俺、一回しか教えねーぞ!
やるから見て覚えろ盗んで覚えろな!
これ、昭和の意地悪い上司。
それが当たり前だった時代
2022/07/01(金) 15:57:57.34ID:Ry4wIvAM0
>>844
そうそう
アホちゃうの
2022/07/01(金) 15:59:37.00ID:wWku/Klda
>>843
めっちゃ分かる
何がなんでもマクロでやっているヤツって何なんだろうね
2022/07/01(金) 17:12:32.89ID:B9UYAOsl0
>>844 みたいな考えの奴はたいていちゃんと聞いてないしメモ渡しても無くしたりするしw
2022/07/01(金) 17:35:59.70ID:Ry4wIvAM0
>>848
メモ渡すってアホなん
2022/07/01(金) 17:57:54.04ID:Dqsnfi220
>>848
そういう奴でも同じ事何回か教えりゃ覚えるから、
分かんなかったらいくらでもまた聞けって言ってる
目的は教育コストの削減とかそいつの成長とかじゃなく仕事の完了な訳だから
2022/07/01(金) 18:43:10.74ID:miA2ycF9M
いやこれ、あわしろっていう新手の荒らしですよ。
2022/07/01(金) 19:33:27.88ID:rTaPWcb90
昭和からEXCEL使ってた人いる?
2022/07/01(金) 19:34:18.95ID:B9UYAOsl0
>>850
その場限りの相手ならそれが正解だけど>>849 みたいなポンコツは成長しないから今後とも仕事させるならとっとと切り捨てないと結局仕事の完了が遅れるだけ
854デフォルトの名無しさん (ワッチョイ 3f4f-60CD)
垢版 |
2022/07/01(金) 19:41:46.04ID:m7rasyZv0
>>852
そもそも昭和の時代にEXCELあったっけ?
あの頃ってロータス123とか
マルチプランの時代じゃないの?
2022/07/01(金) 19:42:01.43ID:Gg+5fIBkM
>>853
そういうことを言い出したら極論VBA使いもクビにして優秀なエンジニア雇えという結論にしかならん
雇用維持も企業の責任
2022/07/01(金) 19:52:08.13ID:lB7C8CJv0
>>833
複数のブックを別ウインドウで開くようになったからな
個人的にはユーザーフォームが最前面に来ないのがめんどい
2022/07/01(金) 19:52:42.66ID:lB7C8CJv0
あと最小化するとユーザーフォームも消えるのが嫌だな
2022/07/01(金) 20:32:48.53ID:B9UYAOsl0
>>854
最初の日本語版は1989年(平成元年)リリースだから日本語版を使ってた人は居ないはず
最初のExcelはMac用に1985年(昭和60年)にリリースされてるみたいだからもしかしたら触った人がいるかもしれない
2022/07/01(金) 20:38:52.77ID:B9UYAOsl0
>>855
別に辞めさせなくてもポンコツはポンコツで務まるような職場に移せば良いだけだろ
860デフォルトの名無しさん (ワッチョイ ff90-gXkX)
垢版 |
2022/07/01(金) 21:05:26.47ID:0+5KhUlf0
vbエディターを開いたときに開いているブックのモジュールやらUFやらがバーっと開くのを止めさせたいんですが、どなたかご存じないですか?毎回重ねて並べて閉じるのがめんどい。
2022/07/01(金) 21:10:05.40ID:CjhzObSj0
ラジオボタンがクリック1回で反応しなくて2回マウスでカチカチって指定しないといけないんだけど、直し方わかる人いますか?(´・ω・`)PCの問題なんかな?
2022/07/01(金) 21:42:37.97ID:kFE+Jjo70
マルチプランならあるな。
と言っても平成のはじめだけど。
あの時代はPC買うとおまけで違法コピーモノがもらえる時代だからな、
マルチプランも123も両方あったわ。
当時は123のほうが強かったんだよね。
Excelとマルチプランて名前が変わっただけじゃないの?
2022/07/02(土) 00:17:07.82ID:7TC/SMOx0
Excel3.0から使っていたら人ならいたよ。
とっくに定年退職されてます。
最近のExcelはごちゃごちゃしていて苦手と言っていたかな。
864デフォルトの名無しさん (ブーイモ MMb6-K8/U)
垢版 |
2022/07/02(土) 00:35:50.92ID:eLIQ72LUM
Collectionについての質問なのですが
Collectionの要素をソートする場合
それ用のSubを作って、その中でソート後のCollection変数を作ってその中に順番に要素を1つ1つ入れていって最後に
set 元のcollection=新collection
とやる方法を考えつきました。

この方法で問題ないですか?それとももっとスマートな方法がありますか?
2022/07/02(土) 00:50:08.19ID:vnn63W/20
懐かしいの。
当時 IBM 5550とかいうパソコン使ってた記憶がうっすらある
そこでマルチプラン動かしてた
ところが海外拠点ではロータス123 の方が評判でどこかでそれに切り替えた記憶がある。同時に IBM 55505何かに変更したような記憶があるな

マック使ってたやつが Excel を自慢して確かに羨ましかったな
DOS V パソコンで Windows 3.1が動いてその上で Excel が動いた時は感激したな
2022/07/02(土) 01:12:48.41ID:yZ67dQaR0
昭和ならロータス123とアシストカルク使ってたな
あれはDOSだったかな?
2022/07/02(土) 01:21:18.54ID:yZ67dQaR0
DOSの頃はファイラーはFD、ネットはエアクラフト、お絵描きはkid98、音楽はMIMPIがデファクトスタンダードだった
2022/07/02(土) 01:36:45.55ID:7TC/SMOx0
昔は企業で使うPCソフトといえば表計算と文書ソフトぐらいだったもんね。
869デフォルトの名無しさん (ワッチョイ 8a4f-iquj)
垢版 |
2022/07/02(土) 06:04:41.51ID:kG8DYDgz0
>>864
良いんじゃない?それで。
用途にもよるけどコレクションにキーくっつけといて
別にキー一覧みたいのをソートして作っといて
そのキーからソートした順番に引っ張るっていう方法もあるけど。
870デフォルトの名無しさん (ブーイモ MMb6-K8/U)
垢版 |
2022/07/02(土) 06:14:46.63ID:v1xY47GsM
>>869
あれれそうですか。
キーの方法も良さそうですね。

でもこんなひとはよく使用しそうなのに話が盛り上がらないのは
みんなのVBAのスキルが低レベルだからでしょうか?
871デフォルトの名無しさん (ブーイモ MMb6-K8/U)
垢版 |
2022/07/02(土) 06:15:13.26ID:v1xY47GsM
x こんなひと
o こんなこと
2022/07/02(土) 06:29:09.78ID:BdV6t7uW0
すげーな、普通の人が寝る夜中に盛り上がらないからって他人を低レベル呼ばわり
2022/07/02(土) 06:35:31.84ID:yZ67dQaR0
>>870
かまってもらえないからみんなまとめて低レベル扱いですかそうですか
くさっ
874デフォルトの名無しさん (ワッチョイ 8a4f-iquj)
垢版 |
2022/07/02(土) 06:52:10.92ID:kG8DYDgz0
>>870
なるほど、ただの煽りかも知れないけど
あまり人前でそう言うことは言わない方がいい。

人を嫌な気分にさせるし
自惚れ屋と思われて周りからも疎まれることになる。
自分の為にも思ったことは口にしたり書き込んだりする前に一度考えてから実行する方が良いよ。
875デフォルトの名無しさん (エアペラ SD13-qRYS)
垢版 |
2022/07/02(土) 07:31:29.49ID:LyZZMtStD
>>870
当たり前の処理のどこに盛り上がる要素があると思うのか
そもそもソートが必要なものにcollection(リスト)使おうって時点で
データ構造の選択を間違ってる可能性が大きい
876デフォルトの名無しさん (ブーイモ MMb6-K8/U)
垢版 |
2022/07/02(土) 07:35:58.08ID:+UfCFyJWM
わかった
じゃあいい
2022/07/02(土) 07:38:04.43ID:Vi0lNJ4o0
釣られすぎ
878デフォルトの名無しさん (ブーイモ MMb6-K8/U)
垢版 |
2022/07/02(土) 07:40:07.80ID:+UfCFyJWM
For-Next文の中だけで使う局所ローカル変数を定義する場合は
そのFor-Nextブロック内で
Dim a as String
でいいんですっけ?
それともモジュールの先頭で?

たしかVBAでは局所ローカル変数の概念がなくて
Sub/Function内すべての場所で使える気がするのだけど。
879デフォルトの名無しさん (ワッチョイ 8a4f-iquj)
垢版 |
2022/07/02(土) 07:49:38.67ID:kG8DYDgz0
>>878
局所ローカルという呼び方をするのかは兎も角
関数やメソッド以下のスコープ変数は基本的には設定出来ない。

変数宣言をする場所についてはVBAに限らず
そのスコープが始まる頭のところに書くのが一般的だよね。
ただ、言ってる通り別に先頭に書かなくても問題なく実装は出来る。
880デフォルトの名無しさん (ブーイモ MMc6-SrHA)
垢版 |
2022/07/02(土) 07:49:48.13ID:vz70zrJPM
>>870
盛り上がったじゃないか
良かったな
2022/07/02(土) 07:49:50.15ID:LyZZMtStD
>>878
言うとおり局所ローカル変数は存在しないのでFunctionやSubの中ならどこでもいいよ
モジュール先頭(Function、Subの外側)だとグローバル変数かパブリック変数になるからその目的ならダメ
882デフォルトの名無しさん (ブーイモ MMb6-K8/U)
垢版 |
2022/07/02(土) 07:58:43.11ID:+UfCFyJWM
>>879
>>881
なるほどありがとうございます。
やっぱりできないのですね。

でもSub/Function先頭に書くと可読性が著しく下がる(この意味が分からない人はスキル低すぎ)のでやめときます。
われわれのように複雑なプログラミングをしてる人にとってはVBAの言語はいろいろ不便に感じますね。
883デフォルトの名無しさん (ワッチョイ 8a4f-iquj)
垢版 |
2022/07/02(土) 08:01:20.13ID:kG8DYDgz0
>>882
だからそう言った言い方はやめた方がよいかと。
モロに自分が「単一責任原則も知らずにスパゲッティコード組みます」と言ってるようなものだから。
2022/07/02(土) 08:27:22.57ID:bQuvSXdqD
>>882
COBOL書いたら死んでしまいそうな人
2022/07/02(土) 09:00:40.59ID:At3W7bIA0
>>878
まあ好みだけど俺は変数宣言は可能な限り使う直前って決めてるからそのケースならループ内で宣言する
2022/07/02(土) 09:30:40.85ID:6d3aqhyk0
チゲ鍋みたいだな局所ローカル
2022/07/02(土) 09:41:11.94ID:qJpeB53K0
DSのプチコンでローカル変数のありがたさを思い出したな
888デフォルトの名無しさん (アウウィフ FFcf-9ZeA)
垢版 |
2022/07/02(土) 09:55:37.37ID:COZLaCzbF
局部もろ観え
2022/07/02(土) 12:13:59.49ID:vnn63W/20
>>885
何回も変数宣言を実行することになるのかな。そうなら理論的にはメモリの無駄と速度の低下が発生するんじゃないの
2022/07/02(土) 13:17:36.46ID:Y5ZkAX2p0
ReDimの存在
2022/07/02(土) 13:53:14.52ID:At3W7bIA0
>>889
宣言文と実行文の違いを学ぼうか

>>890
ReDim は実行文だよ
2022/07/02(土) 14:54:16.39ID:7TC/SMOx0
久々に熱いスレになったね
2022/07/02(土) 16:46:05.89ID:vnn63W/20
>>891
普通の文と同じように実行されるわけはないと思ったんで疑問形で書いたんだけど

でもどういう法則があるのかよくわからんから質問したの

宣言文と実行文で検索しても参考になる記事はなかった

教えてくれませんか?
2022/07/02(土) 17:08:32.73ID:At3W7bIA0
>>893
VBA 宣言 ループ とかでググればいいかと
https://thom.hateblo.jp/entry/2018/06/02/185716
一部の例外はあるけど基本的に宣言文は最初にまとめて処理される
なのでサブルーチンに入った時点で変数は作成されるからメモリーの無駄とか速度低下はないよ
2022/07/02(土) 18:56:13.26ID:vnn63W/20
>>894
おおー、なるほど。
よくわかった、ありがとさん。
2022/07/03(日) 12:22:53.01ID:Jv7ZJhwXr
>>882
なんでわざわざ煽る言い方するわけ?
マシで理解できないわ
2022/07/03(日) 12:39:04.19ID:v1f+WlYn0
スレ立ち上げ当初みたいに、こうやって真面目な議論してれば良スレなんだよな。

あんたらハメ外せばすぐ毛の話。。。
2022/07/03(日) 13:05:07.71ID:Fpu/jUUc0
質問者の質も落ちた
2022/07/03(日) 16:27:46.74ID:v1f+WlYn0
初期の頃、Excel板かここかは忘れたけど、質問も即答してくださる凄い回答者が何人かいた覚えがある。

今はいなくなったよね。
質問側も意味不明な質問ばかり。
2022/07/03(日) 17:15:16.28ID:ur8aI9T40
そういえば昔って質問にもテンプレなかったっけ
2022/07/03(日) 18:58:18.36ID:95K4DRnu0
てか議論するスレでもないけどな
2022/07/03(日) 21:36:18.00ID:v1f+WlYn0
思い出した。昔はいくつかのVBAスレがあった
2022/07/03(日) 21:53:26.02ID:+uLGaU5J0
【VBA エキスパート】 Excel / Access https://kizuna.5ch.net/test/read.cgi/lic/1640108986/
素人にVBA仕込んだ https://medaka.5ch.net/test/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/
2022/07/04(月) 12:09:05.74ID:0Cy5iXrvr
回答者はすぐマウントとってくるしな
>>882みたいな質問者なのにマウント取ってくる意味わからんやつもいるし
能力低すぎとか、われわれのような複雑な~って頭おかしすぎるだろ
905デフォルトの名無しさん (スプッッ Sdaa-CsJ7)
垢版 |
2022/07/04(月) 13:01:53.71ID:OO2ZWbG3d
>>904
それ、しつこくForがどうのと聞いていた例のあいつだから
2022/07/04(月) 16:21:37.95ID:vF9E34H30
>われわれのように

うん。われわれって誰?
脳内でしょ恐らく

ふつーよ、自分から複雑な事やっていますアピールとかするかぁ??
もしかして釣られているのか俺ら
2022/07/04(月) 16:28:28.96ID:g5E8ZW1ad
決まった様式のExcelファイルがあって、それを見やすく加工するマクロを組んで自信で使ってた際に、それを部内に展開したいってなった場合どう配布するのが正解なんだろう。
使う人はマクロの知識は全くないものとして。

1.xlamにして配布
アドインの設定をしてあげる必要がある。
使用頻度の低い人にアドインを入れるメリットが薄い。

2.マクロだけ入れたxlsmを配布
加工したいxlsxファイルと同時に開いてもらってマクロを実行してもらう。
手間が増える。

3.VBSに書き換えて配布
書き換えが面倒。

4.VBSとxlsmを配布してVBS実行でxlsm起動とマクロ実行
処理に時間がかかりそう。

使用頻度の高くないマクロをアドインとして登録するのは起動時間のロスになりそうだから避けたいんだけど、他の人に特定のマクロを手軽に実行させるのはどういう方法がいいだろうか?
908デフォルトの名無しさん (ワッチョイ 035f-auNL)
垢版 |
2022/07/04(月) 17:17:05.04ID:CvyJwule0
>>907
> 2.マクロだけ入れたxlsmを配布
> 加工したいxlsxファイルと同時に開いてもらってマクロを実行してもらう。
> 手間が増える。

これでいい。手間って配布の手間のこと?
共有サーバーのどっか特定の場所に読み取り専用にしたxlsmファイル置いといて
ここのマクロファイル使って作業してくれって告知だけすればいい
不具合が見つかって修正した場合も同名ファイルで上書きするだけだから楽だと思うよ
2022/07/04(月) 17:57:33.89ID:oo1ug/2UD
俺は上書き保存が怖いので.xltmを渡してる
2022/07/04(月) 18:50:46.28ID:tF6z07pca
>>909
リードオンリーで開くにしとけばいいだけじゃね?
2022/07/04(月) 19:05:52.33ID:g5E8ZW1ad
>>908
Excelファイル2つ開いてマクロ実行して閉じるっていうのが操作的に手間かなと思ったけど、共有フォルダに置いといてそれを開いて使ってもらうのは無難に使いやすそう。ありがとう。

後出しで申し訳ないんだけど、うちの会社のPCがウイルス対策だとかで毎日起動時にマクロ有効化設定を強制オフ(有効化メッセージ出ずにオフになるやつ)にされるせいで、トラストセンターから毎日有効化設定してね、っていう雑な仕組みになってるんだ。
自身は設定オンにするVBSなりbatで対応してるけど、他の人だとExcel開いてトラストセンターで設定変更の事前動作も必要に。

アドインやVBSなら有効化しなくても動作するんだけど、そうなるとドラッグドロップで動作するVBSだと使う側の手間は省けるだろうか。
2022/07/04(月) 19:58:33.04ID:Ujf5qvvVd
1. xlsmを共有フォルダに保存
2. 読み取り専用で開く
3. xlsm上の別シートに出力結果をVBAで作成
4. 出力結果シートを新規ブックにVBAで移動 (ws.move)
5. 新規ブックをダイアログボックスで保存させる


毎回これでやってる
913デフォルトの名無しさん (ワッチョイ 035f-auNL)
垢版 |
2022/07/04(月) 22:40:20.14ID:CvyJwule0
>>911
この環境下でも
(セキュリティを無効化して対象のxlsmを開く)VBSなりbatファイルの実体を共有に置いて
そのショートカットだけを配布がベストだと思う

> ドラッグドロップで動作するVBSだと使う側の手間は省けるだろうか
組織内のユーザーのリテラシーにもよるけど、
xlsmでもWorkbook_Openで即ファイルピックアップダイアログ開かせれば大差ないし、
なにより保守がしんどいでしょ

もし複雑な加工内容への変更依頼がきたら?
あるいは今後別のマクロの作成依頼が来て、それもすべてVBSで配布しろと言われるかもしれない

VBEもIDEとしてはアレだけど、
ブレークポイント置けないDebug系メソッドないモジュール分割気軽にできないVBSで開発し続けるの何倍も大変だと思うよ
2022/07/05(火) 01:05:42.67ID:jbzqjuV/a
>>912
> 3. xlsm上の別シートに出力結果をVBAで作成
> 4. 出力結果シートを新規ブックにVBAで移動 (ws.move)
新規ブック作ってそこのシートに直接結果を出力した方が楽じゃね?
2022/07/05(火) 07:41:15.60ID:HXH2KDmV0
>>907
VBSを配布して、そこに処理対象ファイルをドラッグドロップしてもらうのが、ユーザ側としては1操作で完結して使いやすいと思う
ユーザに慣れない操作を押し付けて手間を増やしたら本末転倒だしね

ところで「加工」て何するの?
大部分が編集不可の共有ひな型ブックならともかく、人間が好き勝手にいじったブック中から「加工」対象を特定するのは大変だろ
2022/07/05(火) 08:39:26.47ID:ZlAE1xYZd
別にVBSにこだわる必要は無い
Powershell でも良いでしょ
2022/07/05(火) 09:04:16.75ID:MtIzSAoXd
>>915
加工についても恥ずかしながら前スレで相談させてもらって一応解決することができました。
・web上からDL出来る名簿がpdf
・pdfをacrobatでexcel変換するとセル位置や結合が不揃い
・目的は名簿データをそれぞれ横一列のデータにしたい

vbaにて処理は出来るようになったけど、他の人が使いたいという意見があり、今回配布手段についてご相談させてもらった次第です。
https://i.imgur.com/XgHnIpg.png
https://i.imgur.com/cXouZTg.png
2022/07/05(火) 09:33:47.87ID:gxzY68gk0
・WebからDLするドキュメントをCSVにでもしてもらえるよう社内調整する
が一番ラクで確か
2022/07/05(火) 11:30:39.29ID:X6XwWL+o0
最近、Alt+F11でVBEを開くと、アドインのコードが表示されるようになったんだけど、
仕様が変わったのか、表示されるような設定にしてしまったのか。。
皆さんは表示されますか?
920デフォルトの名無しさん (アウアウウー Sacf-gU6j)
垢版 |
2022/07/05(火) 11:43:19.49ID:QxOevurCa
上の人間の指示通りにするので悩まない
2022/07/05(火) 11:57:42.97ID:Fkl5GJtU0
>>919
されますよ。
2022/07/05(火) 12:00:27.76ID:X6XwWL+o0
>>921
毎回アドインのコードが表示されているウィンドウを閉じていますか?
それとも、どこかの設定を変更すると表示されなくなりますか?
2022/07/05(火) 12:47:27.21ID:HXH2KDmV0
>>917
成程。流れ見てないけど、ここにマトモに助けてくれる人がいるというのは意外(失礼w)
acrobatによるpdfのexcel変換過程で色んな気まぐれ要素によりフォーマットが乱れそうな予感がするが、それを吸収するコーディング努力の継続こそスキル上達の早道
頑張って下さい
2022/07/05(火) 19:57:34.88ID:Fkl5GJtU0
>>922
スマン、何かの設定いじったら直った記憶
覚えてなくてすまん
2022/07/06(水) 18:47:05.73ID:8WsZe39w0
ちんぽじ
2022/07/06(水) 19:59:54.47ID:D5LMB4PC0
2023でるかもね
2022/07/06(水) 21:31:49.12ID:RzEtlOC+0
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てこんな風にデータベタ打ちしか方法がない?
2022/07/08(金) 15:51:01.23ID:vIJsrl8u0
ダウンロードしたVBAマクロ入りファイル、デフォルト無効化が取り消し。MicrosoftがOfficeの仕様を再度変更
https://pc.watch.impress.co.jp/docs/news/1423419.html
2022/07/10(日) 15:06:01.33ID:TbXhrDsy0
えぇ((( ;゚Д゚)))恐い
2022/07/10(日) 16:22:28.20ID:Rxyi1Cuq0
ダウンロードして使うことがないからどっちてもええよ
2022/07/11(月) 01:16:29.22ID:TTL+d6j7a
コロコロ変わるのは昔から
また変更あるぞ
932デフォルトの名無しさん (ワッチョイ cd5f-3+7c)
垢版 |
2022/07/11(月) 01:40:13.99ID:vt1vW9IA0
インターネット経由がどうたらというのは、古いマイクロソフトと新しいマイクロソフトの内部抗争にすぎない。
2022/07/11(月) 04:21:24.13ID:/TJLjZUe0
ああゆう最先端の企業でも老害が威張り散らしているのかな
934デフォルトの名無しさん (ワッチョイ cd5f-3+7c)
垢版 |
2022/07/11(月) 04:31:29.20ID:vt1vW9IA0
ビルゲイツ派はAzue妨害派だろうな
2022/07/11(月) 09:41:27.04ID:67sTwPgvM
大口の客がゴネたんだろう
VBAがいつまでも使えるのもそういう方々のお陰なのだからVBAer達は感謝しないと
2022/07/11(月) 18:14:40.24ID:/TJLjZUe0
分かったよ
2022/07/13(水) 15:11:11.33ID:cdOR/i1g0
客先から毎日送られてくるpdfに対し、特定の部分だけを抜いてexcelに出すというものを作りたいです

流れとしてはwordで開いてコピペ→そこから必要な部分だけ整形
という流れで考えており概ねできたのですが、pdfをwordに落とした時に文章がそのまま文章でコピーされる時と1行ずつテキストボックスやら画像やらでコピーされる時がありうまく実用化出来ません

上記か、あるいはその他の方法でも良いので安定的にコピーする方法は無いでしょうか?

ちなみにpdfは定型フォーマットに記載された日報のような形式で、手動なら文字はそのままコピペできます、フォーマットはいつも同じですが中の文章は行数が日により異なります
938デフォルトの名無しさん (ワッチョイ cb8e-iSZE)
垢版 |
2022/07/13(水) 17:04:46.28ID:+TgcJMJe0
>>937
客先にテキストでもくれと依頼すればいいだろ
939デフォルトの名無しさん (アウアウウー Sa09-2HoA)
垢版 |
2022/07/13(水) 17:32:17.47ID:H0DndFW/a
pdfを書き換えたい訳じゃなくて中身を読みたいだけなら
pdfreaderを使うのが一番楽
2022/07/13(水) 18:07:17.76ID:jvbf7mTW0
PDFは人間のため、印刷のために開発された仕組み
データの順番がどんだけ変わっても人間の目には同じに見えるようになってるから、中身をプログラムで自動的に取り出すのには向いてない

厳密には不可能じゃないとしても、ものすごく大変
できるだけ別の方法を考えた方がいい
2022/07/13(水) 18:39:04.67ID:tqig4XWpd
そのPDFが紙からスキャンしたものじゃなく文字データとして残ってるなら、ワード経由しなくてもacrobatreaderで開いてコピペするのが早いとは思う。

PDFをExcelに変換する手段があるなら、変換してマクロで必要な所を抽出できそうだけど元ファイル次第では難しいか?
2022/07/13(水) 19:16:11.37ID:RAwbutPOM
GOOGLEドライブに入れてドキュメントで開けばOCR使えるからそれを試してみては
2022/07/13(水) 19:23:52.41ID:F58RRgFgM
pdfってhtmlのようなテキストだったりする、意外と知られていない?
2022/07/13(水) 19:30:34.74ID:XpRrYrAX0
>>937
パワークエリ
2022/07/13(水) 19:51:06.77ID:jvbf7mTW0
>>943
中身はテキストなんだけど、データの順番が入れ替わっても同じ見た目の文書が再現できる
だから人間から見て正しい順序で取り出すのが大変
いっぺん出力してOCRした方が早いぐらい
2022/07/13(水) 20:29:31.07ID:RAwbutPOM
>>943
ここの連中にはよく知られている
pdfの解析はめちゃくちゃキツイ
947デフォルトの名無しさん (ワッチョイ cb8e-iSZE)
垢版 |
2022/07/13(水) 20:29:35.01ID:+TgcJMJe0
>>943
馬鹿なら黙っていればいいのに
htmlじゃねーよ
2022/07/13(水) 20:34:43.23ID:RAwbutPOM
>>947
「のような」って書いてる
マークアップされてるって事ぐらい分かるでしょ
949デフォルトの名無しさん (ワッチョイ cb8e-iSZE)
垢版 |
2022/07/13(水) 20:40:59.71ID:+TgcJMJe0
>>948
マークアップじゃないし
馬鹿は黙っていればいいのに
2022/07/13(水) 20:55:32.87ID:RAwbutPOM
馬鹿じゃねーよ
テキトーに言ってるだけだ
951デフォルトの名無しさん (ワッチョイ 355f-TkQT)
垢版 |
2022/07/13(水) 21:36:26.72ID:bpgpUpce0
バイナリファイルをマークアップされてるって表現する人はじめてみた
2022/07/13(水) 22:51:54.33ID:bvCBiwjA0
とはいっても取引先からのデータは大半がpdfだからなぁ
2022/07/13(水) 23:54:44.21ID:vJ6Ng0OKd
そんなもん会社によるだろ
言えばExcelやCSVで送ってくれるとこも普通にある
2022/07/14(木) 00:12:44.49ID:X42JNt2t0
マーキングするために会社の上司が部下の女に触りまくってるじゃん
2022/07/14(木) 07:26:28.96ID:5ehEa+FTd
技術力だけで生きていくか、コミュ力も高めて生きていくかの「差」が今回の質問で明らかになったね

今回の場合、コミュ力あるやつならとっくに客先はpdfとは別にcsvとかテキストファイルを送る方向で動いてるよ

俺はコミュ力を高めていく
お前らは今後も無理難題をひたすら解決する技術力を高めていけw
2022/07/14(木) 08:00:06.43ID:E22ufzJOM
今回のデータをcsvで頂戴したく存じます

コミュも何も一行メール送るだけでいいだろう
むしろこれ出来ないなら何もできんだろ
2022/07/14(木) 08:06:18.41ID:KsBnasMha
社内規定で社外に送信するデータはPDFとなっておりますので、ご期待に沿えず申し訳ありません。
2022/07/14(木) 08:12:38.64ID:1tikFi/NH
そういうコミュニケーションとれない奴は、
仕様を決めるときにもコミュニケーションとれないから思い込みで作るまである
2022/07/14(木) 08:14:11.08ID:YsqOWTP3d
根本解決を目指すアドバイスはいいけど、どんなデータかも質問者と客先の状況も分からないのに、データ貰えば解決(ドャァは乱暴じゃない?

少なくともwordで開いても文字認識がまばらだったりするって時点で、綺麗な様式から出力したデータじゃないのは確かだし、質問者がそういう回答を求めてないとは思わない?
2022/07/14(木) 08:21:48.07ID:E22ufzJOM
>>959
OCRか元データもらう以外の解決策があるなら、かなり聴きたい
2022/07/14(木) 08:24:09.60ID:lnbsEUJQM
OCRのがマシって回答出てるだろ
現実から目をそらすな
2022/07/14(木) 08:49:50.07ID:vNge93QI0
最初に「CSVなどで依頼しても無理でした」とか書いてくれれば無駄な争いは避けたのかもな
963デフォルトの名無しさん (アウアウウー Sa09-2HoA)
垢版 |
2022/07/14(木) 10:19:52.64ID:dxotV0yqa
>>947
++
>>949
++
>>951
ほんそれ
964デフォルトの名無しさん (スッププ Sd43-CglE)
垢版 |
2022/07/14(木) 21:34:12.70ID:L5ignm6zd
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行程度になります。セル内の単語、単語の数は毎回異なります。

ご教示いただけますと幸いです。よろしくお願いいたします。
965デフォルトの名無しさん (ワッチョイ 1baa-2HoA)
垢版 |
2022/07/14(木) 21:34:41.90ID:TfuP8Uyl0
6進数?を通常の時刻表記に直す方法教えてください。
例)1.3→1:30
  2.45→2:45
2022/07/14(木) 21:37:17.58ID:TLlcUFbPa
>>965
A1に時間が入っているとして
=TIME(INT(A1),A1-INT(A1),0)
2022/07/14(木) 21:41:07.21ID:0fmyum11H
>>955
コミュ力の定義はなんですか?典型的なインデックスは何ですか?
968デフォルトの名無しさん (スプッッ Sd43-iSZE)
垢版 |
2022/07/14(木) 21:44:41.57ID:zzetjp0td
>>964
可能です。
はい、次。
2022/07/14(木) 22:56:36.99ID:X42JNt2t0
>>968
ご回答いただきまして誠にありがとうございます。
2022/07/14(木) 23:23:30.65ID:BkEIWbQgd
>>964
自分ならだけどこんな感じかと Mainのループは最大行数を取得してくれ _をスペースに置き換えてくれ
Sub_Main()
____Dim_i_As_Long
____For_i_=_1_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
2022/07/14(木) 23:23:50.53ID:BkEIWbQgd
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
2022/07/14(木) 23:43:51.22ID:qWN4wD1T0
https://mevius.5ch.net/test/read.cgi/bsoft/1654860173/7
に似てる
2022/07/14(木) 23:52:28.92ID:fadaSACN0
気持ちわりぃなそのコード
2022/07/15(金) 00:00:11.50ID:9RgIX2Zba
>>973
どの辺りが?
それとも気持ち悪いって言いたかっただけ?
2022/07/15(金) 00:30:48.57ID:1ECLhEg6a
なんでスペースがアンダーバーなんだとは思うな
俺も見た目が受け付けなかったわ
976デフォルトの名無しさん (スプッッ Sd43-iSZE)
垢版 |
2022/07/15(金) 00:48:33.55ID:kd+ZBNkRd
いや、そもそも自作自演だろ
2022/07/15(金) 01:18:26.31ID:mFCZ39Ni0
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
978964 (スッップ Sd43-CglE)
垢版 |
2022/07/15(金) 02:31:06.28ID:bSLom3XEd
早速ご回答いただいた皆様、ありがとうございました!
ほぼ思い通りの結果を得ることができました。

ちなみにですが、
例えば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

度々申し訳ございませんが、よろしくお願いいたします。
979デフォルトの名無しさん (ワンミングク MMa3-p0Nn)
垢版 |
2022/07/15(金) 02:36:26.14ID:WFW52ORLM
いつものあいつだぞ
2022/07/15(金) 06:01:47.46ID:mFCZ39Ni0
最小限の定義が不明
2022/07/15(金) 07:03:30.04ID:ymO8mssad
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
2022/07/15(金) 07:30:27.66ID:KClfAjojd
俺のコードをいじってくれてうれしいが
Valueとったり改行いじったりしてるだけで行数減らしてるだけなんて結局マイルールのこだわりを主張してるだけなんだよな
こんな方法あるぜってのが見たいわ

>>978
6が「DOG」になる最小数という意味が不明
先頭の単語を返すだけならCutWordの最後でaとcが同じ値になったらaa(LBound(aa))を返すようにすればいいのでは
2022/07/15(金) 07:47:41.51ID:9RgIX2Zba
value取るのは改悪で草
2022/07/15(金) 08:08:12.42ID:DqNyEc18a
>>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
2022/07/15(金) 08:10:06.84ID:DqNyEc18a
>>973
気持ち悪いとは思わないけどちょっと非効率かなとは思う
2022/07/15(金) 08:49:49.31ID:pxeFAKZo0
そのコードカッケェ!
2022/07/15(金) 09:42:45.28ID:D6klNH8hd
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
2022/07/15(金) 09:47:20.06ID:kfkt8EAfa
効率どうこう言う前に重複した単語がでるような関数はどうかと思うのw
989デフォルトの名無しさん (スプッッ Sd43-iSZE)
垢版 |
2022/07/15(金) 13:22:47.81ID:kd+ZBNkRd
ここでRuby馬鹿がRubyではこうなるとか書くのは見えている
2022/07/15(金) 19:00:37.71ID:f/pTHFXb0
オレンジ色のオレンジはどうなの?
2022/07/15(金) 19:14:37.65ID:pxeFAKZo0
どんなに良コード書いても難癖付けられるのがこのスレ
2022/07/16(土) 02:37:29.28ID:hVvvoOFI0
userformをshowした直後にunloadするとexcelが落ちるのは何とかならんかのぉ
hideじゃだめなんじゃunloadじゃないと
993デフォルトの名無しさん (ワッチョイ 9d5f-GsVe)
垢版 |
2022/07/16(土) 07:52:34.81ID:1SMMBEmo0
UserForm1.Show vbModeless
Unload UserForm1

って意味なら、別に落ちなかったけど
2022/07/16(土) 08:52:29.38ID:eHBMNsDF0
逆になんでhideじゃダメなの
2022/07/16(土) 13:26:34.40ID:NLVpHfZz0
とりあえずEXCELが落ちるっていうコードと環境出せ
話はそれからだ
2022/07/16(土) 18:00:44.38ID:2WLM14wy0
>>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
2022/07/16(土) 19:45:04.74ID:vYu+PcKIa
>>996
廃止決定した言語じゃん
2022/07/17(日) 00:22:00.69ID:lEW2LcQY0
あんたら色んな言語を習得していてエリートなんだな?
5ちゃんねるなんかにいてもったいねーわ
2022/07/17(日) 02:44:22.32ID:rPHWMq+g0
>>995
993と同じ、2行だけ
エクセルは2013

>>994
閉じたWebbrowserを再表示する方法がわからないので仕方なく
2022/07/17(日) 04:50:23.78ID:fLi6s9i70
こいつの書くコード、rubyとしてもクソコードなのがほんとひどい
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 77日 2時間 26分 42秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況