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


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

Excel VBA 質問スレ Part76



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

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

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

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

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

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

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

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

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

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

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

あとよろしく


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

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

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

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

もう少し頑張ってみます



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

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

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

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

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

杉田 康人

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

A => B

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

Sub foo()

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

End Sub

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



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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<275KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef