1 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 22:08:43.71 ID:jtngtgXU0.net] !extend:checked:vvvvv:1000:512 ↑同じ内容を2行貼り付けるナリ ExcelのVBAに関する質問スレナリ コード書き込みや作成依頼もOKナリ ※前スレ Excel VBA 質問スレ Part69 https://mevius.5ch.net/test/read.cgi/tech/1607786543/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
262 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 04:47:34.80 ID:5JzvmzAs0.net] If Today()="2021/04/17" Then Range("A1").Interior.Color = 256 〜とか条件加えればいいんじゃね
263 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 05:37:32.98 ID:HGZEZM9x0.net] こんなこと出来ますか? https://i.imgur.com/ypZck9P.png A列に予め色の見本が、C列に数値を代入していく。 C列に数値を代入したら、そのセルの背景色をA列の色の見本と同じ色にしたい。 A列め色の見本は20色ぐらいを想定。 条件付き書式を使おうと思ったけど、20色も増えたらルールも20個書かないといけないので、ちょっとなえた。
264 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 06:27:08.23 ID:fydw5HpOa.net] >>261 これを、ワークブックオープンにいれておけばよいよ
265 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 06:33:53.75 ID:fydw5HpOa.net] >>262 セルに入力されたらシートチェンジというモジュールがあるはずなので それをさがしてその中でいろいろな処理をすればよいよ
266 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 06:44:21.86 ID:iZq5P4oj0.net] >>262 出来る出来ないで聞かれたら出来ると答えるよ。 方法は?と聞かれたらワークシートチェンジイベントをシートモジュールに付け足して、引数にはRangeが入ってくるから その範囲にC列が被っていたらそこの数字みてA列の該当する数字の色拾って来て着色する。 イベントの範囲とC列が被っているかどうかは計算でも求められるけど、今回はセル値も見ることになるからFor Each でイベントでとったRangeを ぐーるぐる回してC列かどうかを見ればいいと思うよ。 その際、イベントの引数の範囲もRangeだけど Eachの後に書くCellに該当する変数の型もRangeになることに気をつけて。 実はCellって型はRangeなんだよ。
267 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 07:03:20.22 ID:jQb3oNGZ0.net] >>265 こういう回答する人って知識ひけらかしたいだけに見える 簡潔答えられないのかね
268 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 07:05:28.63 ID:gHXBJYD60.net] まあ条件付き書式のほうがスッキリしていいと思うけどな
269 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 07:19:08.72 ID:iZq5P4oj0.net] >>266 そうなんだ 最近ヒマしててちょっとひけらかしたい部分もあったんだ。 でも作る時のポイントになること押さえてるからいいだろ? 本当は手元に環境があればソース貼りゃいいんだけど。
270 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 07:26:58.07 ID:fydw5HpOa.net] ふつうはシート・チェンジのモジュールのなかで target.アドレスやtarget.valueで値を取り出すのじゃないのか なにをやってるのかよくわからんぞ、
271 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 07:28:09.89 ID:5JzvmzAs0.net] >>262 どういうシステムにしたいかがいまいち分からん まずC列の複数のセルに0〜5の整数をまとめていくつも代入して、 その後に数字入れたセルの背景色をまとめて変えたい?
272 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 07:30:13.57 ID:jQb3oNGZ0.net] 口だけ出すのもなんなので一応作ってみた Sheet1モジュール用 Private Sub Worksheet_Change(ByVal Target As Range) Dim Alea数値 As Range Set Alea数値 = Range("C4:C9") If Intersect(Target, Alea数値) Is Nothing Then Exit Sub Dim AleaColor As Range Set AleaColor = Range("A4:A9") Dim Rng As Range Dim Color As Long For Each Rng In AleaColor If Rng.Value = Target.Value Then Color = Rng.Interior.Color Target.Interior.Color = Color Exit Sub End If Next Rng End Sub
273 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 07:46:50.44 ID:fydw5HpOa.net] >>262 てさあ、なかなか賢いとうか 赤や黄色のセルを取り出す、⬅これできないだよな どこかのセルと同じ色にするならできるだけど
274 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 07:47:30.68 ID:IoVEY+h40.net] >>271 素晴らしいです。 やりたいことが出来ました。 コメントくれた人にも感謝します。
275 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 08:50:15.05 ID:xdZBdiobH.net] >>271 いま見返したらAreaがAleaになってるな
276 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 08:56:18.27 ID:fydw5HpOa.net] エクセルは1600万色もあるからどれが赤で黄色なのかわからない 262のように色見本があって、これが赤です。と決めてくれないと
277 名前:デフォルトの名無しさん [2021/04/17(土) 09:08:47.12 ID:lNzUtf8u0.net] >275 EXCEL関係ない
278 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 12:35:40.75 .net] >>102 ,103 返信ありがとうございます。 input_str =〜 の()内にB2の文字列を貼付して出来ましたが、 input_str =〜 input_str =〜 と複数行にして試しましたが、複数行は出来ませんでした、どうすれば複数行処理可能になりますでしょうか?
279 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 20:38:15.19 ID:A+RmKR4F0.net] >>258 いや、ムービーメーカー4がわからないから、貰ってもわからないし。 コンボボックスって未選択の所? UIAutomationじゃなくてもSendMessageで行けそうな気がするけど・・。 ▼が何の文字を指定すればいいのかわからないって意味なら、 やっぱりFindAllで取得して、配列の何番目にそれっぽいのが入ってるか調べればいいと思うな。
280 名前:デフォルトの名無しさん mailto:sage [2021/04/17(土) 20:55:43.60 ID:IoVEY+h40.net] >>278 1日がかりでググりまくりの苦労と試行で出来た。 'コンボボックスを開いて折りたたむ Dim ptnExpand As IUIAutomationExpandCollapsePattern Set ptnExpand = elmYukkuri.GetCurrentPattern(UIA_ExpandCollapsePatternId) ptnExpand.Expand ptnExpand.Collapse 'コンボボックスの中身をセルA3に書き出す Set elmYukkuri = elmYukkuri.FindFirst(TreeScope_Subtree, iCnd) Set iCnd = uiAuto.CreatePropertyCondition(UIA_ClassNamePropertyId, "ListBoxItem") Set elmsYukkuri = elmYukkuri.FindAll(TreeScope_Children, iCnd) Set iCnd = uiAuto.CreatePropertyCondition(UIA_ClassNamePropertyId, "TextBlock") For i = 0 To elmsYukkuri.Length - 1 Set elmYukkuri = elmsYukkuri.GetElement(i).FindFirst(TreeScope_Children, iCnd) Cells(i + row_セリフ開始, 1).Value = i Cells(i + row_セリフ開始, 2).Value = elmYukkuri.CurrentName Next
281 名前:デフォルトの名無しさん [2021/04/18(日) 09:49:47.16 ID:AhVY6Zxk0.net] し
282 名前:デフォルトの名無しさん [2021/04/18(日) 09:56:40.54 ID:AhVY6Zxk0.net] Private Sub Worksheet_Change(ByVal target As Range) If Intersect(target, Range("A1:A2")) Is Nothing Then Exit Sub End If ClearDates UpdateDates End Sub Sub ClearDates() Range("A4:A999").Clear End Sub Sub UpdateDates() If IsDate(Range("A1").Value) = False Or IsDate(Range("A2").Value) = False Then MsgBox "日付を正しく入力してください" Exit Sub End If Dim d As Date, endDate As Date d = Range("A1").Value endDate = Range("A2").Value Dim y As Long y = 4 Do While d <= Range("A2").Value Cells(y, 1) = d d = d + 1 y = y + 1 Loop End Sub 日付間の日にちが自動で打ちあがるようにしたんですけど めちゃくちゃ重くてパソコンが固まってしまいますご教授ください 素人みたいな質問ですいません。
283 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 10:09:03.12 ID:CdbHG8Q+0.net] >>281 Changeイベントをする時は、 処理の前で Application.EnableEvents=False 処理の後で Application.EnableEvents=True が動くようにしないと延々Changeイベントが動いて重くなる
284 名前:デフォルトの名無しさん [2021/04/18(日) 10:09:19.29 ID:a83COmqy0.net] >>281 むしろそれでプロだったらびびるけど・・・ Worksheet_Change()はワークシートの内容が変わった時に発火する Worksheet_Change()→ClearDates()→Worksheet_Change()→UpdateDates()→Worksheet_Change()→・・・ 多分無限ループになっている こういう時はイベントを無効にしておけば無限ループにならない Private Sub Worksheet_Change(ByVal target As Range) object.EnableEvents = false '内容 object.EnableEvents = true endsub
285 名前:デフォルトの名無しさん [2021/04/18(日) 10:09:41.04 ID:a83COmqy0.net] すまん、Application.EnableEvents = Falseだった上に遅かった
286 名前:デフォルトの名無しさん [2021/04/18(日) 10:53:16.67 ID:AhVY6Zxk0.net] すばやい返答ありがとうございます 少し早くてびっくり VBAははじめて2年ぐらいです 5年後ぐらいにプロになれたらいいな Private Sub Worksheet_Change(ByVal target As Range) object.EnableEvents = false 上記を先頭2行と置き換えて object.EnableEvents = true endsub ↑この2行は最終行に書けばいいのですか? 素人ですいません!
287 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 11:21:49.65 ID:JCpiu5BAH.net] >>285 直す部分だけ書くと、こう Private Sub Worksheet_Change(ByVal target As Range) Application.EnableEvents = False If Intersect(target, Range("A1:A2")) Is Nothing Then Exit Sub End If ClearDates UpdateDates Application.EnableEvents = True End Sub
288 名前:デフォルトの名無しさん [2021/04/18(日) 12:11:13.84 ID:ORj5XeNB0.net] >>285 ごめーん、object.EnableEvents = false は間違いです >>286 さんが正しいです
289 名前:デフォルトの名無しさん [2021/04/18(日) 14:57:21.70 ID:AhVY6Zxk0.net] 先生たちありがとうございます! 新設丁寧頭もいい
290 名前:デフォルトの名無しさん [2021/04/18(日) 14:58:49.68 ID:AhVY6Zxk0.net] 自分の力で解決できるようにがんばります!
291 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 16:07:16.06 ID:c/Nu40gb0.net] >>281 それコピペして動かしてみたけど全然重くなかったよ 1900年から今日までにしても4秒くらい これで固まるのは別の原因があると思う その場所以外にとても複雑な計算式があって Cells(y, 1) = d の度に計算して重くなってるとか そうであれば計算を手動に変えて最後に自動にするとか セルじゃなくて配列にdを入れて最後に一回だけ出力するとか UpdateDates()を1行ずつ動かせばどの行で固まってるか分かると思うよ
292 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 16:21:48.14 ID:n1x9QJALa.net] >>290 それはChangeイベントで検証しましたか?
293 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 19:37:56.63 ID:Z7m7Dr1xd.net] >>261 ありがとうございます。試してみます。
294 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 20:47:27.38 ID:c/Nu40gb0.net] >>291 検証しました。 対象セルの書き換えはないから普通は無限ループにならないと思うけど 環境によって何か違うのかな? とにかく一行ずつ動かしてどこで固まるか調べた方がいいと思います。
295 名前:デフォルトの名無しさん mailto:sage [2021/04/18(日) 23:15:06.97 ID:FAQ+sCCd0.net] https://i.imgur.com/8OFf7Pv.jpg B4:E6を画像として出力したいんだけど、Rangeの範囲指定をどういじっても、B3:E6が出力されてしまう。 B4:C6を指定してもB3:E6が出力されてしまう。 どうすればいいの?
296 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 00:55:03.43 ID:BhG1xyLeH.net] >>294 CurrentRegionを使わない
297 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 01:56:46.57 ID:/e3Iiylf0.net] >>295 thx CurrentRegionとったらあっさり出来たわ。 たまたまググって出てきたサンプルが説明もなくCurrentRegionを使ってて、 それを参考にしたから数時間損したわ。
298 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 10:20:37.00 ID:gkbaJTWH0.net] Name As でExcel以外のJpegファイル等のファイル名を変えることができると思いますが、そもそもなんでEXCELで他のソフトウェアのファイル名変えられるんでしょ? 便利だからいいんですけど
299 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 10:27:18.04 ID:BhG1xyLeH.net] >>297 ファイル操作はOSの基本機能の一つだから 逆に制限する方が、作るのも使うのも面倒になってメリットがなさすぎるという設計上の理由
300 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 10:41:44.29 ID:gkbaJTWH0.net] そっか、OSを操作してるんでしたね EXCELもOSも同じメーカーだからこそできる技なんですな
301 名前:デフォルトの名無しさん [2021/04/19(月) 21:03:08.15 ID:K5RFczke0.net] >>299 馬鹿?
302 名前:デフォルトの名無しさん [2021/04/19(月) 21:19:11.87 ID:80cIHSk1M.net] >>299 知能に問題がある人かな
303 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 21:54:25.72 ID:zOv5i/QS0.net] 昔のExcelは非公開API使ってたとか噂を聞いたことがある
304 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 23:09:31.11 ID:Qr9ctU7Wa.net] 噂を信じるな
305 名前:デフォルトの名無しさん mailto:sage [2021/04/19(月) 23:15:55.48 ID:NSiRzHFAa.net] なつかしいなぁ 90年から2000年ぐらいの頃だな
306 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 00:42:55.05 ID:LQ8i77JG0.net] あるシートをコピーした時、 「移動またはコピーしようとしている数式またはシートには、移動またはコピー先のワークシートに既にある名前’○○○’が含まれています。この名前を使用しますか?」 が延々と出てくるのがうざいので、 メッセージを出さないようにするマクロって作れますか? 事前に名前の定義から削除するのではなく、シートをコピーしたら、メッセージを出さずに名前の定義を削除したいです。 詳しい方、ご教示をよろしくお願いいたします。
307 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 01:37:22.55 ID:ptbZPsIm0.net] 書式設定をコピーしなくて良いなら配列に値を代入して新しいシートに貼り付けが楽じゃない? 書式もって言うなら出力後に書式だけコピーしてやるとか
308 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 07:08:37.93 ID:j3U7nYtJ0.net] VBAで隠蔽使ってる人はどんな時に使ってますか? ぶっちゃけPropertyGetだけでいい気がしてきてしまったので、適切な使い所を知りたいです
309 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 07:20:28.94 ID:LQ8i77JG0.net] >>306 なるほどです! やってみます、ありがとうございます!
310 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 07:26:26.47 ID:sns0znWgd.net] >>307 二人以上で開発する時、または長期に渡るメンテが必要になりそうな時
311 名前:デフォルトの名無しさん [2021/04/20(火) 07:29:11.43 ID:aQV8TqKv0.net] >>307 基本privateにしておいたほうが色々とトラブルが少ないけど、 特に不満を感じてないならpublicでもどっちでも同じだと思う privateで意味が出てくるのは大規模・多人数開発だ
312 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 12:11:30.20 ID:fqIzsxE3p.net] >>307 メッセージングを行う際にて不必要と思われるメソッド(関数)や変数、プロパティは隠蔽する。
313 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 12:18:15.46 ID:fqIzsxE3p.net] いや? そもそも変数はプロパティかメソッド(関数)の引数や戻り値でしか受け渡ししないから変数は隠蔽しないことは無いか
314 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 12:27:20.11 ID:WjARqIhg0.net] >>307 ぶっちゃけPropertyGetだけでいいです、他のことはやらなくていいです
315 名前:デフォルトの名無しさん [2021/04/20(火) 18:45:51.60 ID:aQV8TqKv0.net] 変数を隠蔽しておけばgetter・setterを必ず通るからそこさえ監視しておけば後を追える 変数丸出しだとどこから触られるかわからないのでデバッグが死ぬほど大変になる
316 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 19:02:40.74 ID:grfVULwwa.net] みんなが使うのはパブリック 自分だけで使いたいときはプライベート XとかY,Zなんかはプライベートにしましょう
317 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 19:16:00.04 ID:grfVULwwa.net] たんじゅんに プライベートなら3文字以下 パブリックは5文字以上 そう決めておけばよいよ
318 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 20:06:43.69 ID:f6iXtgoua.net] >>314 デバッグなんかやんないくせに
319 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 21:17:43.05 ID:teqpRJSw0.net] 人の書いたコードなんて読めない 自分で書いても1ヶ月後には読めない
320 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 21:32:16.88 ID:N2s7rCY20.net] >>318 人が書いたコードは兎も角 自分の書いたコードが読めないのはちょっとね 上からつらつらと書くんじゃなくて 小さな部品から作って 組み合わせて大きな部品を作って 更に組み合わせて・・・みたいに書くと 分かり易いコードを書けるよ 逆に誰が読んでも分かり易いコードが 書けるようになったらもうすぐVBA卒業だよ
321 名前:デフォルトの名無しさん mailto:sage [2021/04/20(火) 21:33:10.03 ID:grfVULwwa.net] 文章のきほんは5w1H
322 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 00:03:03.35 ID:VYKRrHWq0.net] 現場のためにマクロ作ってて 性能確認は現場に投げてるけど どういう処理をしてるとか一切考慮してなくて正常な処理をバグ言われてちょっと辛い わかる人いる?
323 名前:デフォルトの名無しさん [2021/04/21(水) 00:28:41.53 ID:mZ1GtAH60.net] わかる。仕様も確定できない馬鹿だと。
324 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 00:48:54.24 ID:VYKRrHWq0.net] すごく突っ込みたいけどかなーり年上のおじいちゃんばっかでちょっと言いづらかったり ありがとう、ちょっと楽になった 明日ガツンと言ってやる(笑)
325 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 02:31:17.44 ID:QPNAyMuU0.net] >>321 わからんな コミュニケーション不足なだけだろ
326 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 04:00:51.54 ID:KhV9jsbh0.net] 正常な処理なら伝えりゃいいだけだろ MsgBox出すなり、シートに書いとくなり、口で言うなりして
327 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 11:09:16.06 ID:aZ4kV5qwa.net] わからんものを説明するときは5w1hでよいから 聞いているほうも分かった気になる
328 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 12:00:56.40 ID:TWzI1JIsM.net] エラーメッセージ出そうが絵本みたいなマニュアル作ろうが「ちゃんと動かないぞ!ポンコツめ!」って騒ぐオヤジがおる。んでよくよく聞いてみたらメッセージは読まずに閉じるわマニュアルは開くことすらしてねぇわ日付入力しろって書いてある項目に「多分5/10」とか書いてくれちゃうわであぁ何やっても無駄な時は無駄なんだなぁってなった事が何度もある
329 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 12:37:02.29 ID:BXHy+8up0.net] >>327 直接お客さんとやり取りしてるの? そうで無ければ上司か島のリーダーさんに 中間に入ってもらえば? もし直接お客さんとやり取りしているなら そもそもプログラマーとお客さんが 窓口も介さず直接やり取りを行う 形態自体に問題があると思うけど リーダーさんとか上司に相談するべき もっとも、自分がその窓口ですと言うのなら 最初っからどこをどうして欲しいか よーく聞いてから作る方がいい。 どうせ用件定義書なんて存在して いないんでしょ?
330 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 14:00:48.01 ID:aZ4kV5qwa.net] おいおい、エクセルのマクロぐらいで定義書はつくらんだろ ふつうはマクロができてからしようが決まるから
331 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 17:35:07.95 ID:Gd/0Jck0M.net] >>327 さすがにIsDateくらい使おうぜ
332 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 17:53:28.95 ID:k6MIIAN/r.net] 年配のジジイ騙して金取れるなら今の体制維持も考慮すべき
333 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 18:25:58.81 ID:2kwhHx0qM.net] >>328 上司に頼まれて作った子会社の人達の作業進捗を確認する為のスケジュール管理ツールなんだ 今まで手書きでやってたのを電子化したかったんだと 要求仕様の箇条書きを渡されて好きに作っていいって言われたから仕様書とかコーディング規約とか諸々自分で用意した まぁ流石に向こうの課長さんから当事者のおっちゃんに雷落ちたらしいが >>330 流石に動作前に入力のエラーチェックはかけてるさ それでlsDateでチェックして日付じゃなけりゃ処理を停止して「No.〇〇の工程の開始予定日が日付じゃねぇから書き直せ」って類のメッセージ出してるんだがメッセージ読んでねぇから「マトモに動かないポンコツツール」って喚き散らしてたんよ
334 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 19:16:43.30 ID:aZ4kV5qwa.net] 中抜きの現場をそのまま見ているような 人の入力チェックはけっこうノウハウいるのね
335 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 19:18:54.99 ID:aZ4kV5qwa.net] 進捗管理ツールてまともな奴はみたことがない
336 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 20:16:57.95 ID:ukt/rEUCa.net] 文句いわれた程度で逆ギレかやっぱゆとりだな
337 名前:デフォルトの名無しさん [2021/04/21(水) 20:18:22.64 ID:mZ1GtAH60.net] >>332 やっぱり馬鹿か
338 名前:デフォルトの名無しさん mailto:sage [2021/04/21(水) 21:08:21.14 ID:BXHy+8up0.net] >>332 なるほど大体状況は理解出来た まぁボロくそに言ってたおっちゃんもおっちゃんだけど、果たして君の作ったツールは 今まで手書きでやってた人がいきなりパソコン使って打ち込めるような優しい設計になっていたのかな? 下請けでしかもスケジューラー作成なんて自由度の高いものを上司が君に振ったのはひょっとしたらその辺の事も兼ねて 君が今回それを通してどんなことを学ぶかを見ていた可能性があるね。 そのおっちゃんはボロくそに言ったかも知れないけどそれが現場で作業している人の正直な意見であることには間違いないよ。厳しいかも知れないけどね。
339 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 07:33:17.38 ID:7heM3Ej5M.net] まあVBAじゃなくとも自分が便利だと思っている価値観を人に理解してもらうのは難しい
340 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 09:34:46.13 ID:gwtiqwMsM.net] >>329 仕様書はどういう形式で作るかによる マクロも仕様書に載せるとルール付けしたら必要になる
341 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 12:44:53.98 ID:hcaPQHcf0.net] 自分の給料がどこから来るのかを考えれば適当な対応はできないとおもうが
342 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 17:31:38.77 ID:voAAUW4i0.net] VBAでは非0は真として扱われるということでいいですか?
343 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 17:54:34.03 ID:aG329xgw0.net] >>341 型による
344 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 18:05:18.29 ID:voAAUW4i0.net] >>342 整数です
345 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 18:08:01.13 ID:voAAUW4i0.net] あーけど エラー値も判定の対象になるかもです
346 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 18:25:55.35 ID:voAAUW4i0.net] ごめんなさい回りくどい質問せずに 直球で質問すると if instr(str1,str2)>0 then の>0って要らなくないか?ってことです
347 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 18:47:47.49 ID:aG329xgw0.net] >>345 やめとけ。まずInstrで何が返ってくるのか確認するんだ officetanaka.net/excel/vba/function/instr.htm NULLが入って来ることもあるからLEN関数で囲む感じになるのか? どちらにしても可読性が落ちるようなものやトリッキーなことはなるべく避けた方がいい そんなこと全般に渡ってやってたら 1月後には自分が作ったソースが読めなくなるぞ
348 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 19:10:26.59 ID:+FKRqhM4a.net] うむ 理系のひとはなんでも yes/Noで考えががちだけと そういう論理式はむつかしい 現実にはyes/No/無回答 /cancelの4値だから それに否定<>もあまり多用しないほうがよい A<>false or B<>false or C<>false こういうのわけわからんから IF A=true and B=true and C=true then else ××××××× ENDIF こうしておく、終電に間に合うぞ
349 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 19:52:34.43 ID:UidQzhn6H.net] >>347 演算子や論理式は、何を判定したいかに合わせて使い分けろ そしてコメントを書け
350 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 21:01:52.31 ID:hn+92ycNd.net] 理系文系家系関係あるかそれ
351 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 23:02:56.56 ID:vfns6Sdda.net] VBAでは問題ないのだろうけど、TRUE をイコールで判定するのはどうも…
352 名前:デフォルトの名無しさん mailto:sage [2021/04/22(木) 23:11:41.16 ID:voAAUW4i0.net] ありがとうございます 素直に省略せずに比較演算子を使うことにします
353 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 01:03:06.83 ID:ftZ+9Vdga.net] >>349 体育会
354 名前:系もついか [] [ここ壊れてます]
355 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 04:16:22.24 ID:IAv7U8Ah0.net] >>350 そうだね まぁそういうときによく話に上がるコードだけども Dim A As Boolean Dim B As Boolean Dim C As Boolean A = False B = False C = False A = B = C こんなコードがあったとして VBAではこれはエラーにならない 慣れてる人ならAにTrueが入ることが すぐ分かるけど 慣れていない人はAにFalseが入ると 思ってしまうこともある 単純な式だから「そんなバカいねーよ」と 思うかも知れないけど これを複雑な式に混ぜられた場合を考えると 結構キツいことになったりもするよ
356 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 05:12:18.96 ID:Rqoeq7ma0.net] 話の主旨が分からん 代入じゃないんだから「==」にしたいって話? それならBooleanは関係ないよな…
357 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 05:41:22.55 ID:IAv7U8Ah0.net] >>354 すまん。 最初Integerで書こうかなとも思ったんだけど それだと本当にエラーにならないか自信がなかったんだ。
358 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 05:51:27.06 ID:IAv7U8Ah0.net] 手前側のイコールが代入で後ろのイコールが比較演算子だから他の言語だと A = B == C; みたいな書き方になったりするのかな ただVBAではどっちもイコールひとつで分かり辛いから、その辺ちゃんと分かるように書いた方がいいよと言うのが話の趣旨だね
359 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 06:24:58.47 ID:TaQs1RgsH.net] それは文法の話であって論理(式)の話ではないな 途中で混ざってすり変わってる
360 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 06:27:12.51 ID:P8K+Jhr50.net] 5
361 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 06:40:22.74 ID:TaQs1RgsH.net] a=b=cがすべて代入になる言語もあるからややこしいって話だと思うけど 手を抜かずに式を分けたりカッコを付ければいいだけ コメントを書いたり変数名をわかりやすくするのと同列で、ミスを減らす工夫はプログラマーの義務 すべて代入したい時 b=c a=b 比較したい時 a=(b=c)
362 名前:デフォルトの名無しさん mailto:sage [2021/04/23(金) 07:36:07.75 ID:F+E5VVCoa.net] プログラム上の論理式は2値論理がほとんどだから じっさいは仕様によっていくらでも沢山あるからあるから そういうのは丁寧にコメントをいくしかない