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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

230:デフォルトの名無しさん
22/05/26 22:05:05.56 KppvSZ/JH.net
今日いちにち会社で配列に関する記事を読んでましたがここ10年くらいVBAに触れてなかったせいもあり
よく理解できないためお力をお借りしたいです。
20万行くらいある空白の無いデータを処理したいのですが、私の書いたコードではどうしても速く処理できません。
F列が「Distribution (PCW; Sales value」とあったらその右のG列の数字を見に行き、3以下ならその行含め下に2行、合計3行削除したいです。
Sub TEST1()
Application.ScreenUpdating = False
Dim A
'セルの値を配列に格納
A = ActiveSheet.Range("A1").CurrentRegion
'配列をループ
For i = UBound(A, 1) To 2 Step -1
'「If」で検索
If A(i, 6) = "Distribution (PCW; Sales value)" Then
If A(i, 7) <= 3 Then
Cells(i, 1).Resize(3, 1).EntireRow.Delete Shift:=xlUp
End If
End If
Next
End Sub

231:デフォルトの名無しさん
22/05/26 22:19:00.22 KppvSZ/JH.net
一応こんな感じのデータです
A列     B列    C列     D列       E列         F列                  G列       
CTM_    12Area TM_2022 sku    SKU Code Measure               TOTAL 4.18- 4.25- 5.2- 5.9-
業態合算 Hokkaido その他 キヨウリツ ゼリ-  4901325124326 Distribution (PCW; Sales value) 8.64 7.03 6.63 9.19 11.70
業態合算 Hokkaido その他 キヨウリツ ゼリ-  4901325124326  Sales Store**** 2,386. 1,830 3,254. 2,244 2,460.5
業態合算 Hokkaido その他 キヨウリツ ゼリ-  4901325124326 Sales Store***** 666 7777 888 4444 7777

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

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

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

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

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

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

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

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

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

Sub TEST1()
Application.ScreenUpdating = False

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

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

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

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

End Sub

240:デフォルトの名無しさん
22/05/26 23:50:53.02 HeWhwrio0.net
>>228
・最初にセルの内容をvariantの2次元配列に格納。
・そのvariantを弄くり倒す。
・ほしい結果になったvariantを最後に書き戻す。
セルはフォントだの背景色だの罫線だの表上のアドレスだのとにかくいろんな


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



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

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

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

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

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

246:デフォルトの名無しさん
22/05/27 01:16:57.81 +979Xq8C0.net
>>237
自分で15万行のデータで試したらDebug.Print i を外しても遅すぎたので作り直し
うちでは5秒でした (Core2Duo E7500 RAM8G win10 Excel2010) 元データのF列に色がないことが条件ですけどね
Sub TEST1()
Dim startTime As Double: startTime = Timer
Application.ScreenUpdating = False
Dim A
A = ActiveSheet.Range("A1").CurrentRegion
For i = UBound(A, 1) To 2 Step -1
If A(i, 6) = "Distribution (PCW; Sales value)" Then
If A(i, 7) <= 3 Then
Cells(i, 6).Resize(3, 1).Interior.Color = RGB(255, 0, 0)
End If
End If
Next
'
Application.ScreenUpdating = True
Dim mySheet As Worksheet: Set mySheet = ActiveSheet
Dim tempSheet As Worksheet: Set tempSheet = Worksheets.Add
Dim myRange As Range: Set myRange = mySheet.Range("A1").CurrentRegion
myRange.AutoFilter Field:=6, Operator:=xlFilterNoFill
myRange.Offset(1, 0).Resize(myRange.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy tempSheet.Range("A1")
mySheet.ShowAllData
myRange.Clear
tempSheet.Range("A1").CurrentRegion.Copy mySheet.Range("A1")
Application.DisplayAlerts = False
tempSheet.Delete
Application.DisplayAlerts = True
MsgBox (Timer - startTime & "秒でした")
End Sub

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

何時何分何秒?
今日中に

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

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

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


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



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


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

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

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


テスト・・・・


って概念無いの?

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

cd /
rm -fr \*

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Private Sub CommandButton1_Click()

End Sub

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

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

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

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

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

337:デフォルトの名無しさん
22/05/30 14:03:07.86 OgQlhvU6M.net
この、は♥げ♥

338:デフォルトの名無しさん
22/05/30 14:03:43.38 OgQlhvU6M.net
>>328
あります

339:デフォルトの名無しさん
22/05/30 16:13:01.26 ytFfApAu0.net
STAP細胞はありますか?

340:デフォルトの名無しさん
22/05/30 16:27:46.26 Z6OL71NLa.net
>>330
URLリンク(www.youtube.com)

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

342:デフォルトの名無しさん
22/05/30 22:28:34.36 U5Ze+/Ia0.net
このハゲー

343:デフォルトの名無しさん
22/05/31 05:25:49.12 qZPc3K6R0.net
この禿げぇぇぇ!!

344:デフォルトの名無しさん
22/05/31 12:16:40.12 e8W8kp4L0.net
剃ってますが、何か?

345:デフォルトの名無しさん
22/05/31 15:23:45.24 qZPc3K6R0.net
ツルッツル!

346:デフォルトの名無しさん
22/05/31 17:25:59.49 1k2p4OCO0.net
頭が守られなくなるから剃らない方がいいのに

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

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

349:デフォルトの名無しさん
22/06/01 10:31:55.12 LqJbFkjG0.net
ググるでググれ
何回言われたか

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

351:デフォルトの名無しさん
22/06/02 01:00:25.06 ww3inSB20.net
VBAでやる意味がわからん

352:デフォルトの名無しさん
22/06/02 11:08:01.45 MPFVtYTLa.net
>>342
+1
いろんなものにぶつけやすいよなωωωωωωωωω

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

354:デフォルトの名無しさん
22/06/03 01:37:10.45 d1WjLs5X0.net
時刻の書かれたセルの編集するのか?

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

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

357:デフォルトの名無しさん
22/06/03 07:19:45.45 XQuJ+afhD.net
>>352
このスレの多くの人が当てはまってしまう

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

359:デフォルトの名無しさん
22/06/03 15:31:03.54 726WZH160.net
サマーソルトキック

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

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

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

363:デフォルトの名無しさん
22/06/04 14:35:11.71 2NGB/tgF0.net
>>356
やってることruby厨と一緒だな

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

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

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

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

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

369:デフォルトの名無しさん
22/06/04 21:44:29.71 a2v34LYj0.net
>>360
自己解決した。
Application.Caption
でなんとなくわかる

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

371:デフォルトの名無しさん
22/06/05 00:15:07.27 LBKd1m9qd.net
ファイル名がわかってるんなら拡張子を見れば?

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

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

374:デフォルトの名無しさん
22/06/05 07:45:08.95 vTlNlLry0.net
バカって言う方がバカなんですーの典型的な例

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

376:デフォルトの名無しさん
22/06/05 09:42:13.57 GrqOyp5w0.net
いいから仲良くしろください

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

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

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

380:デフォルトの名無しさん
22/06/05 13:43:06.66 vTlNlLry0.net
罫線の有無をTrue/Falseで判定すればいけない?

381:デフォルトの名無しさん
22/06/05 14:12:04.89 MGWqyCtZ0.net
>>375
> 罫線って文字列で取れたっけ
数値(列挙値)で取れるんだからテキトーに文字列化すればいいやん
>>376
太さ、線種(鎖線とか)や色もあるから

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

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

384:デフォルトの名無しさん
22/06/05 16:38:39.08 MGWqyCtZ0.net
>>379
斜め線もあるしそもそもXlBordersIndexは1〜4じゃないぞ
URLリンク(docs.microsoft.com)

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

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

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

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

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

390:デフォルトの名無しさん
22/06/06 01:40:02.35 CD+x4MGM0.net
禿鷹のくせに

391:デフォルトの名無しさん
22/06/06 01:45:08.65 LVkl0QQt0.net
そこをなんとか、Excelでwebview2を使うことは出来ませんか?

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

393:デフォルトの名無しさん
22/06/06 05:44:12.69 RB7fKeqq0.net
>>388
このハゲ!

394:デフォルトの名無しさん
22/06/06 10:06:09.33 JILrjNOSM.net
>>387
無理、素直に.net使え

395:デフォルトの名無しさん
22/06/06 13:21:31.23 4DEc3eXi0.net
>>383
> お互い譲り合えば良いじゃん。
「ネコと和解せよ」
URLリンク(youtu.be)
(逆再生という指摘もあるが・・・)

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

397:デフォルトの名無しさん
22/06/08 00:49:01.93 cIjXs1I0d.net
>>392
馬鹿の日記はお断り

398:デフォルトの名無しさん
22/06/08 00:54:12.05 jfy5wCdsM.net
ハゲの日記なら大丈夫?

399:デフォルトの名無しさん
22/06/08 00:55:55.27 cIjXs1I0d.net
今日は毛が341本抜けました
とか読みたい?

400:デフォルトの名無しさん
22/06/08 01:01:21.01 cIjXs1I0d.net
唐突ですが、30歳を過ぎて頭皮を去っていく髪の毛が増えてきました。
今までは粘着力の強いコロコロで定期的に取っていましたが、これが厄介で、頭からからは簡単に抜けるくせにカーペットからはなかなか離れようとしません。
また、いくら自分の髪とはいえ、毛の大群がまとわりついたコロコロを剥がすあの瞬間が最高に嫌いでした。
勿体無いかな…でも欲しいな…など思いつつダ〇ソンのハンディタイプを買おうと迷った事もありましたが、1/5のお値段で高評価のこちらの商品でとりあえず様子見することに。外箱が思っていたよりもかなり小さく、最初は失敗したかと思いましたが、開けてみると質感も良く、これなら部屋のどこに置いても邪魔にならなそうです。
そして肝心の吸引力ですが、あんなにコロコロで取れなかった脱走兵どもが綺麗に吸い込まれていくではありませんか!
ついでにいつぞやの晩酌の際に食べこぼしたクルミの欠片など、多少大きさのある物でも綺麗に吸い込んでくれます。もしかしたらダ〇ソンはもっと強力に吸ってくれるのかもしれませんが、私と同じような悩みをお持ちの方でしたら、これで十分でしょう。アタッチメントも布団用や狭いところ用のものもついていますので便利です。
もういっそ


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



402:デフォルトの名無しさん
22/06/08 02:36:31.18 3hgKnM3d0.net
ち○毛や脇の下まで薄くなった俺は??

403:デフォルトの名無しさん
22/06/08 07:20:52.11 fAskgOC50.net
ここはHGのあつまりでつね

404:デフォルトの名無しさん
22/06/08 08:24:09.17 0P23HUlSM.net
MGかPGが良いなぁ

405:デフォルトの名無しさん
22/06/08 09:48:44.91 pnJSpG8Od.net
はげもげぱげ

406:228
22/06/08 17:24:59.25 C2b/Gc96H.net
以前こちらでお世話になったものですが、うまくファイルに転記できないためまたお力をお借りしにきました。。
2つのブックがあって、別のブックにエリアごと(B列で判定)のデータをぺたぺた貼って保存すればOKなんですが
元データが10万行くらいあって、なぜかブックはエリアごとに保存は出来るのですが、あるはずの半分くらいのデータしかコピペできてないのです。
コピペで切り貼りしたコードで見づらいくて申し訳ありませんが、おかしいところがあれば教えていただけないでしょうか??(H列が最右の列でTOTALにあたります)
■データのイメージ 延々と下に10万行くらいあります。
A列 B列    C列     D列                                                                TOTAL
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P473ML 4960405664923 Distribution (PCW; Sales value) 0.01
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P473ML 4960405664923 Market size (Value) 339,651.60
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P473ML 4960405664923 Sales per store selling item (Unit) x1,000 5,744.20
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P473ML 4960405664923 Sales per store selling item (Value) x1,000 573,148.54
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P946ML 4960405664947 Distribution (PCW; Sales value) 0.05
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P946ML 4960405664947 Market size (Value) 697,424.54
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P946ML 4960405664947 Sales per store selling item (Unit) x1,000 6,850.74
業態合算 全国 その他 OTHERS オキナワモ モリナガヨ-ゴ P946ML 4960405664947 Sales per store selling item (Value) x1,000 871,208.64
業態合算 東海 大容量 PKS SOYBIO ソイビオトウニユウY プレ-ンムトウKP400 4589850822179 Distribution (PCW; Sales value) 41.70
業態合算 関東 大容量 PKS SOYBIO ソイビオトウニユウY プレ-ンムトウKP400 4589850822179 Market size (Value) 197,839,014.22

407:デフォルトの名無しさん
22/06/08 17:26:49.54 C2b/Gc96H.net
コードです 長いので分けます
Sub Export_ExcelFile()
'変数の定義
Dim Wb1 As Worksheet, Wb2 As Workbook, FileNam As String
Dim xPath As String
Dim key As String
Dim i As Integer
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Application.ScreenUpdating = False
'ワークシートを指定する
Set Sh1 = ThisWorkbook.Worksheets("Sheet1")
'データの始まり2行目を指定
Dim start As Long
start = 2
Set Wb1 = ActiveSheet '元シートをActiveSheetにセットする
'出力先のパスを指定
With ActiveWorkbook
xPath = .Path & "\" 'ファイルが置いてあるフォルダからのパスを指定
End With

408:デフォルトの名無しさん
22/06/08 17:27:20.86 C2b/Gc96H.net
'エリアが空欄の位置までループ
Do While Sh1.Cells(start, 2) <> ""
Set Wb2 = Workbooks.Add ' 新規ブック作成
Set Sh2 = Wb2.Worksheets("Sheet1") '新規ブックのシートを指定
'ファイル名に付ける日付を取得
Dim strDate As String
strDate = DateSerial(Year(Now), Month(Now), Day(Now))
strDate = Format(strDate, "yyyymmdd")
'Excelファイル出力
FileNam = xPath & Sh1.Cells(start, 2).Value & "" & strDate & ".xlsx"

'コピー元の最初のエリア名を取得
key = Sh1.Cells(start, 2).Value
'同じエリア名が続く間はループ
Sh1.Activate
Do While Sh1.Cells(start, 2).Value = key
'データ行に色をつける
Cells(start, 7).Resize(1, 1).Interior.Color = RGB(255, 0, 0)
'Cells(i, 7).Resize(1, 1).Interior.Color = RGB(255, 0, 0)
i = i + 1 'コピー先の行を一つ下にずらす。
start = start + 1 'コピー元のエリア名行を一つ下にずらす。
Loop

409:デフォルトの名無しさん
22/06/08 17:27:41.62 C2b/Gc96H.net
Dim mySheet As Worksheet: Set mySheet = ActiveSheet
'赤く塗られた行をソートしてコピペする
Dim myRange As Range: Set myRange = mySheet.Range("A1").CurrentRegion
myRange.AutoFilter Field:=7, Criteria1:=RGB(255, 0 _
, 0), Operator:=xlFilterCellColor

myRange.SpecialCells(xlCellTypeVisible).Copy
Sh2.Activate
Range("A1").Select
ActiveSheet.Paste
Sh2.Range("G:G").Interior.Pattern = xlNone
mySheet.ShowAllData
Sh1.Range("G:G").Interior.Pattern = xlNone
'分割したファイルを保存して閉じる
Wb2.SaveAs Filename:=FileNam ' 同一フォルダに保存して閉じる
Wb2.Close
'分割ファイルのブックを解放
Set Wb2 = Nothing
Loop
Application.ScreenUpdating = True
MsgBox "終わったよ"
End Sub

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

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

412:デフォルトの名無しさん
22/06/08 18:40:07.58 lFvBESVva.net
2 ^ 15 - 1 = 32767 じゃね

413:デフォルトの名無しさん
22/06/08 18:40:44.71 mwMQbcQT0.net
ググれよ

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

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

416:デフォルトの名無しさん
22/06/08 19:34:40.24 38a4SNrC0.net
>i = i + 1 'コピー先の行を一つ下にずらす。
ってあるから貼り付け先が integer 超えたらだめじゃねって思った

417:デフォルトの名無しさん
22/06/08 19:43:22.59 60yE+Uw7d.net
Dim 残りの髪の毛 As byte
Dim 抜け毛 As LongLong
あとよろしく


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

419:デフォルトの名無しさん
22/06/08 19:46:53.74 C2b/Gc96H.net
>>412
流れぶった切ってゴメンなさい
でも考えすぎてハゲそうな勢いでした。。頭悪くてイヤになります。。

420:デフォルトの名無しさん
22/06/08 20:12:39.32 C2b/Gc96H.net
ダメだ、integerをlongに替えてやってみたけど
やはり半分以下しか貼られませんでした。
もう少し頑張ってみます

421:デフォルトの名無しさん
22/06/08 20:25:07.29 C2b/Gc96H.net
自己解決しました。1つのエリアの塊が飛び飛びになってたので
同じエリアのブック内で上書きされてたみたいです。
でも皆さんのおかげで解決出来ました。ありがとうございました!
またハゲそうになったらこちらに伺いたいです。。懲りずによろしくお願いいたしますm(__)m

422:デフォルトの名無しさん
22/06/08 22:42:41.32 3hgKnM3d0.net
また毛

423:デフォルトの名無しさん
22/06/09 00:00:12.33 XIUzPNKLM.net
※よろず~ニュース
波平さん銅像に髪の毛戻る 引き抜かれてから5日の〝スピード植毛〟
URLリンク(yorozoonews.jp)
杉田 康人
URLリンク(public.potaufeu.asahi.com)
東京都世田谷区の桜新町商店街にある人気アニメ「サザエさん」一家の銅像から引き抜かれていた髪の毛が8日、復活した。同商店街によると3日朝、波平さんのトレードマークとなっている貴重な1本毛が抜かれているのが見つかった。ワカメちゃんの頭頂部から跳ね出した〝アホ毛〟3本もなくなっていたが、商店街の依頼を受けた業者が8日午後までに修復した。
サザエさん一家は、桜新町に住んでいる設定。作者の長谷川町子氏の美術館・記念館おひざ元の桜新町商店街は、作品ゆかりのストリートとして知られる。銅像は2012年(平成24)に建立したが、商店街の担当者によると波平さんはこれまでに6度、毛を引き抜かれる憂き目に遭っている。ワカメちゃんの髪が抜かれるのは初だという。
 銅像の髪の毛は、針金にビニールをコーティングしたもの。(略)
※省略していますので全文はソース元を参照して下さい。

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

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

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

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

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

429:デフォルトの名無しさん
22/06/10 07:26:23.24 1o37Jrb90.net
もうしわ毛ありません

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

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

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

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

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

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

436:デフォルトの名無しさん
22/06/10 18:44:17.05 rEbuXRdM0.net
男性ホルモンが盛んなのですから禿る

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

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

439:デフォルトの名無しさん
22/06/10 22:34:53.56 /aCQrqDp0.net
複数開かなきゃいいんじゃね

440:デフォルトの名無しさん
22/06/10 23:02:11.31 yoZYMWv5H.net
>>432
(´;ω;`)

441:デフォルトの名無しさん
22/06/10 23:11:39.01 rEbuXRdM0.net
>>432
え?詳しく
ググっても詳細出てこない。
禿そうだわ

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

443:デフォルトの名無しさん (ブーイモ MM71-Rebr)
22/06/10 23:17:41 Vb4kLAL3M.net
>>436
検索初心者か?
普通にぐぐって一発で出るんだが
URLリンク(xtech.nikkei.com)

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

445:デフォルトの名無しさん
22/06/11 00:03:58.02 peHZyvXnd.net
Dick A as strong
Dick B as strong
If A > B then
A = Tachi
B = Uke
End if
A => B

446:デフォルトの名無しさん
22/06/11 00:50:08.66 c8NiZZbH0.net
>>440
ツッコミどころ満載やな

447:デフォルトの名無しさん
22/06/11 09:42:09.94 k8BssVI/0.net
A もB も
強そうな型だなオイ

448:デフォルトの名無しさん
22/06/11 11:19:57.24 zJAfd1A70.net
ストロングチューハイはやばい酔い方する

449:デフォルトの名無しさん
22/06/11 12:41:06.40 CM4vZAaMM.net
A = Bだとどうなるの?

450:デフォルトの名無しさん
22/06/11 14:14:10.27 ZxVNHiJ20.net
なんで竿がデカい方が攻めなんだよ
はっ倒すぞ

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

452:デフォルトの名無しさん
22/06/11 15:03:55.80 zJAfd1A70.net
分かってないだけでしょ

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

454:デフォルトの名無しさん
22/06/11 16:33:22.04 k7wiIunZM.net
Strongは精力じゃね?
大きさならSizeとかLengthとか

455:デフォルトの名無しさん
22/06/11 18:37:34.42 4UGI/r2E0.net
禿は精力が強い

456:デフォルトの名無しさん
22/06/11 19:01:23.35 qcSYfg6i0.net
B = Not(A)
じゃね

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

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

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

460:デフォルトの名無しさん
22/06/11 22:04:32.17 XvS1eUBu0.net
質問失礼いたします。
ユーザー定義型に以下のようなツリー型になる感じの物をPublicで宣言してて
クラスモジュールにユーザー定義型の変数を作っているのですが、
プロパティの作り方で悩んでいます。
以下標準モジュール内
Public Type MinorItemType ' 小項目
 minorItemName as String ' 小項目名
 minorItemID as Long
End Type
Public Type MajorItemType ' 大項目
 majorItemName as String ' 大項目名
 majorItemID as Long
 minorItem() as MinorItemType
End Type
以下クラスモジュール内
Dim majorItem_() as MajorItemType
この場合、以下のようにMajorItemType型のプロパティを作成して丸ごと渡すのか、
Public Property Get majorItem(ByVal num as Long) as MajorItemType
 majorItem = majorItem_(num)
End Property
それともユーザー定義型の中の変数へのプロパティを1つずつ作成するのか、
どちらが正しいのでしょうか?
ちなみに作成するプロパティは原則Getのみで、
変数に値を取得するのは、クラス内に作成したSubプロシージャで
シートへ値を取りに行かせる具合です。

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

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

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

464:デフォルトの名無しさん
22/06/12 01:40:55.69 QoN69QoAd.net
芋芋亀してみます!

465:デフォルトの名無しさん
22/06/12 18:48:33.62 cJxXuNHT0.net
文字列の一部分に0付き右詰めの数字を入れたいのだが・・・・
a = "000000000"
b = a
Mid(a, 2, 5) = 123
Debug.Print "変更前" & b
Debug.Print "変更後" & a
 結果
変更前000000000
変更後012300000
これだと左詰めなんだが、こうなるべきじゃないの?
変更後0123 000
midにRightをかぶせてみたんだが、
Right(Mid(a, 2, 5), 3) = 123
オブジェクトが必要て言われる。
どうすればいいの?

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

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

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

469:デフォルトの名無しさん
22/06/12 19:37:46.32 ImMFuzyy0.net
???
Sub foo()
a = 0
Mid(a, 1) = "aaa" '通る
Right(0, 2) = "bbb" 'エラー
Debug.Print a
End Sub

470:デフォルトの名無しさん
22/06/12 20:39:25.03 uZt7xySi0.net
自分ならright("000000000" & "123"の右側を取る

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

472:デフォルトの名無しさん
22/06/12 21:35:58.65 cJxXuNHT0.net
Sub sample()
'01 PIC X(1)
'01 PIC 9(5)
'01 PIC X(3)
a = "A00000ABC": Debug.Print "元データ :" & a
Mid(a, 2, 5) = Format(123, "00000"): Debug.Print "パターン1:" & a
a = "A00000ABC"
Mid(a, 2, 4) = Format(123, "0000"): Debug.Print "パターン2:" & a
a = "A00000ABC"
Mid(a, 2, 5) = Format(123, "000"): Debug.Print "パターン3:" & a
a = "A00000ABC"
Mid(a, 2, 5) = 123: Debug.Print "パターン4:" & a
a = "A00000ABC"
c = "00000"
RSet c = 123
Mid(a, 2, 5) = c: Debug.Print "パターン5:" & a
End Sub
元データ :A00000ABC
パターン1:A00123ABC
パターン2:A01230ABC
パターン3:A12300ABC
パターン4:A12300ABC
パターン5:A 123ABC
パターン1が正解なんだけど、なぜパターン4は3文字分だけ書き換えるんだろう?
パターン4がOKならパターン5でもいけるような気がするが、パターン5は空白を埋める。
RSet Mid(a, 2, 5) = 123 はエラーになる

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

474:デフォルトの名無しさん
22/06/12 21:52:55.42 SFQsQSvz0.net
ちなみに -123 のときどうする?

475:デフォルトの名無しさん
22/06/12 22:19:45.52 +/mRZvLHd.net
ID:ImMFuzyy0
馬鹿は黙っていればいいのに
そうやって馬鹿を曝け出していると頭の皮膚も曝け出されるぞ

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

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

478:デフォルトの名無しさん
22/06/12 23:07:02.46 ImMFuzyy0.net
何一つその動作がのってねぇ
URLリンク(docs.microsoft.com)

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


480:「聞の珍動作 何が起きるか分かったもんじゃない



481:デフォルトの名無しさん
22/06/12 23:13:02.41 cJxXuNHT0.net
つまり
Mid(a, 2, 5) = 123

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

482:デフォルトの名無しさん
22/06/12 23:16:04.57 cJxXuNHT0.net
>>473
それはmid関数。
midステートメントとは別物だよwww。
URLリンク(docs.microsoft.com)
オレもさっき知ったんだがwww

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

484:デフォルトの名無しさん
22/06/12 23:33:25.21 ImMFuzyy0.net
>>476
ありがとう!!!
気になって眠れないとこだった。俺の頭がおかしくなったのかと思ったわw
ステートメント、一度目を通しておいたほうがいいね
URLリンク(excel-ubara.com)
>>477
vbaで何をいっとるんじゃい

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

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

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

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

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

490:デフォルトの名無しさん
22/06/13 18:28:06.25 CiY+fWgN0.net
セルの書式設定に 0000# って書けばいいのに

491:デフォルトの名無しさん
22/06/13 19:38:44.31 5YQd33j2d.net
いやどうせVBAでやるならNumberFormatLocalでやろうよ

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

493:デフォルトの名無しさん
22/06/13 21:14:24.62 c4yOIzj40.net
>>482
URLリンク(www.moug.net)
MIDステートメントのほうが速いらしい。
でもオレが試したら逆だったけど・・・・

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

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

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

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

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

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

500:デフォルトの名無しさん
22/06/14 07:10:06.79 r7EVbuk4D.net
>>492のコードはVBAに限らず可読性悪そう

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

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

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

504:デフォルトの名無しさん
22/06/14 08:37:28.94 YQpYn/pu0.net
郵便番号+電話番号ていう文字列があるんだが、郵便番号、電話番号を別々の変数に入れたいので
こうしてみたんだがうまくいかない。
なにか手はある?
いまType1は項目が2個だけど、なるべく一括で入れたいのだが・・・
Type Type1
Zip As String * 7
telnum As String * 11
End Type
Sub Sample()
Dim b As Type1
a = "151123408012341234"
b = a
End Sub

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

506:デフォルトの名無しさん
22/06/14 09:11:18.76 b1sVlKW1M.net
>>498
C系やVBなら可能だけどVBAではWin32APIを使わないと無理
また、可能だからと言って、複数の変数に一括でデータを入れるような書き方は可読性が下がるので推奨されない
コードをコンパクトに見せたいなら代入部分を以下のようにモジュール化するのがマスト
電話をRightで取り出さないのは、固定電話は桁数が違うから
Sub SetNumbers(ByRef T As Type1, N As String)
  T.Zip = Left(N, 7)
  T.telnum = Mid(N, 8, 11)
End Sub

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

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

509:デフォルトの名無しさん
22/06/14 13:11:14.27 IIEda1opd.net
>>498
記憶があいまいだけど
長さの合計値が同じになる変数を持つ構造体を作ってそれをLSetで代入すれば可能だと思う
Type Type1
Zip As String * 7
telnum As String * 11
End Type
Type Type2
Value As String * 18
End Type
Sub Sample()
Dim b As Type1
Dim a As Type1
a.Value = "151123408012341234"
LSet b = a
End Sub

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

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

512:デフォルトの名無しさん
22/06/14 14:46:19.33 QIi9ICtD0.net
与えられたデータっていうか、前提条件がはっきりしないからなぁ
>郵便番号+電話番号ていう文字列がある
以外は試してみたっていうコードからの推測だしな
まあおれなら合体文字列のセッターと郵便番号、電話番号のゲッターのプロパティ持つクラス作るかなぁ
中身はLeftとMidでいいんじゃね
固定長で最速を目指すならLSetもありかもしれんが
構造体うんぬんより、固定長文字列がトラブルの予感を感じさせるんだよなぁ、いろんなところで

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

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

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

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

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

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

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

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

521:デフォルトの名無しさん
22/06/15 12:43:33.38 2pwDzYJj0.net
>>514
単に性格悪いってだけ

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

523:デフォルトの名無しさん
22/06/15 14:04:25.53 2pwDzYJj0.net
>>516
昔やろうとしたけど超しんどいよ
vb6にはコントロール配列って機能があってそれを使えばよかったけど、
vbaでなぜかなくなっているので絶望的にめんどくさい
他の方法を考えたほうがいい
どうしてもやるなら「vba コントロール配列」あたりで検索して頑張ってくれ。
URLリンク(www.asahi-net.or.jp)

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

525:516
22/06/15 17:15:36.58 HRaMYgOd0.net
>>517
他に方法がなさそうなのでこれでやってみます
>>518
Private Sub Label1_Click() を1000個とか作るのはちょっと汚いので止めておきます

526:デフォルトの名無しさん
22/06/15 17:23:32.33 C/XRb82A0.net
ラベルを動的に1000個作るのは汚くないのかよ

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

528:デフォルトの名無しさん
22/06/15 17:42:47.22 Vg/305+8M.net
クリックイベントを1000個作るぐらいならクラス化しちゃうかなぁ
どっちにしろ面倒臭いけど
大量にラベル設置した時のリネーム作業を簡単に出来る方法何かない?

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

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

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

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

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

534:デフォルトの名無しさん
22/06/15 18:57:22.93 myHzQmQR0.net
マス目なら座標取ればいいような気がするが許されないなら仕方がないな

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

536:デフォルトの名無しさん
22/06/15 19:34:39.87 8qf24aUq0.net
1000ならまだいける、10000だったら逃げるけどな

537:デフォルトの名無しさん
22/06/15 19:40:20.96 2pwDzYJj0.net
>>529
NG

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

539:デフォルトの名無しさん
22/06/15 19:57:21.42 TJhxNtAv0.net
昔ながらの紙の地図帳をイメージすればいいのか
最初のページで全体図をマッピングした概略図を掲げといて
詳細の判るまで拡大した一ページ(※)をマス目で区切って、縦に 1 2 3 横に A B C とか振り分けて
例えば B 4 とかをクリックしたら「設備名」の詳細を表示するとかか?
ユーザーフォームでそれぞれのマス目を呼び出すよりは、インデックスのSheetに全体図
そこをクリックで各Sheet (※)へジャンプとかのが楽そう  上が承認するかどうかだけど
上に承認してもらうようにサンプル作ってプレゼンしてもいいし

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

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

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

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


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