1 名前:デフォルトの名無しさん mailto:sage [2019/03/16(土) 20:39:09.64 ID:6HWXzj9o.net] ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part59 https://mevius.5ch.net/test/read.cgi/tech/1549692750/
411 名前:デフォルトの名無しさん mailto:sage [2019/04/02(火) 09:24:24.65 ID:g8jutNiy.net] >>403 本当だけど それガッツリとしたVBAエンジニアだよ 多分gitかTortoiseSVN辺り使うはず 【フリーランス】Excel/Access-VBA | 開発知見がある方!システムサポート業務 仕事内容 基幹システム/部門個別システム支援(運用、問合せ、J-SOX対応等) 部門内インフラ管理支援、エンドユーザIT支援、業務用ツール開発 給与
412 名前:デフォルトの名無しさん mailto:sage [2019/04/02(火) 21:44:59.43 ID:ZGIlr/GY.net] >>403 別にVBAでも普通ある。 けど、面接して採用される奴は他にもスキルがあるか、それなりに出来る奴だろうな。 gitや、SVNについては必ずしもってところだろう。 もっとも、VBAのコードを管理するためにgitやSVN用のツールをVBAで組む程度はやれる或いはやってるだろう。
413 名前:デフォルトの名無しさん mailto:sage [2019/04/02(火) 23:38:38.44 ID:z8xG+23/.net] 1989/1/7 → 昭和64年1月7日 1989/1/8 → 平成1年1月8日 2099/1/1 → 平成111年1月1日 3000/1/1 → 平成1012年1月1日 試してみたらこうなった。 令和がまだ入ってないのは分かるが、 1000年後も普通に平成だとは思わなかったわ。
414 名前:デフォルトの名無しさん mailto:sage [2019/04/02(火) 23:44:03.27 ID:dGnjjG+S.net] >>406 どうせならOSとEXCELのバージョンかけや
415 名前:デフォルトの名無しさん [2019/04/02(火) 23:45:56.37 ID:PBWFMMP7.net] >>406 https://dotup.org/uploda/dotup.org1812346.jpg
416 名前:デフォルトの名無しさん mailto:sage [2019/04/02(火) 23:47:51.13 ID:z8xG+23/.net] >>407 どちらか片方ならわかるが、何で両方? 組み合わせで変わるもんじゃないだろう。
417 名前:デフォルトの名無しさん mailto:sage [2019/04/03(水) 01:37:48.37 ID:HquWe5hb.net] >>409 MSはそんな思い込みが通用するほど甘い相手じゃない
418 名前:デフォルトの名無しさん mailto:sage [2019/04/03(水) 02:13:34.41 ID:T6JhjkrS.net] >>406 江戸もでないし
419 名前:デフォルトの名無しさん mailto:sage [2019/04/03(水) 03:03:58.76 ID:SETc7Ceb.net] こういう思い込みをする奴が新年号対応に莫大な人工が掛かる糞システムを作るのである
420 名前:デフォルトの名無しさん mailto:sage [2019/04/03(水) 03:14:27.06 ID:HquWe5hb.net] >>411 シリアル値は1900年から 明治までしか対応できない
421 名前:デフォルトの名無しさん mailto:sage [2019/04/03(水) 07:43:03.53 ID:4XO/CSdW.net] Windows 10・WSL・Ubuntu 16.04 の設定ファイルでは、 +:2:1990/01/01:+*:平成:%EC%Ey年 +:1:1989/01/08:1989/12/31:平成:%EC元年 +:2:1927/01/01:1989/01/07:昭和:%EC%Ey年 +:1:1926/12/25:1926/12/31:昭和:%EC元年 +:2:1913/01/01:1926/12/24:大正:%EC%Ey年 +:2:1912/07/30:1912/12/31:大正:%EC元年 +:6:1873/01/01:1912/07/29:明治:%EC%Ey年 +:1:0001/01/01:1872/12/31:西暦:%EC%Ey年 +:1:-0001/12/31:-*:紀元前:%EC%Ey年
422 名前:414 mailto:sage [2019/04/03(水) 07:55:00.58 ID:4XO/CSdW.net] 明治6年(1873)から正しい それ以前は太陰太陽暦(旧暦)だから、西暦とは異なるから、日本の暦は使えない
423 名前:デフォルトの名無しさん mailto:sage [2019/04/03(水) 12:14:49.07 ID:RhgPGi2C.net] Excel2013以降ならこれで行けると思う Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras] "2019 05 01"="令和_令_Reiwa_R"
424 名前:デフォルトの名無しさん mailto:sage [2019/04/03(水) 20:18:32.12 ID:XzL94EYi.net] 2013ってOSどこからサポートしてたっけ
425 名前:デフォルトの名無しさん mailto:sage [2019/04/03(水) 20:25:25.63 ID:LAo899n+.net] そんなのググったらすぐ出るだろう…
426 名前:デフォルトの名無しさん [2019/04/04(木) 00:26:33.22 ID:2+ZabFqB.net] 新元号は「安平」であります。 https://dotup.org/uploda/dotup.org18123
427 名前:20.jpg [] [ここ壊れてます]
428 名前:デフォルトの名無しさん [2019/04/04(木) 02:37:49.53 ID:2+ZabFqB.net] あ ほ
429 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 09:42:49.96 ID:8+vU6A6d.net] >>416 これは、Office各バージョンで共通で使えるしExcel・Word等でも使えるね 他のアプリでも使えるんじゃない
430 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 10:15:48.02 ID:8+vU6A6d.net] >>416 これは、Windowsのカレンダーに対して日本用の設定を追加してるだけだから Windowsの標準コントロールのカレンダーを使用して正しくコーディングしていれば この設定をするだけで対応できるだろ これを「令和登録.reg」のファイルにして管理者モードで実行するだけだね --下記-- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras] "2019 05 01"="令和_令_Reiwa_R"
431 名前:デフォルトの名無しさん [2019/04/04(木) 10:47:09.88 ID:2+ZabFqB.net] VBAでfor nextで回しているときにworksheetfunction.vlookupを使っているのですが 値が存在しないときにエラーが出て止まってしまいます。 こんなとき存在しない時は処理を回避するにはどうしたらいいですか? On error resume nextにすると、エラーのときにも処理をしてしまいます。
432 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 10:56:05.80 ID:uGh4IPkF.net] application.vlookup
433 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 11:06:48.53 ID:8+vU6A6d.net] >>423 On error resume next はエラーを無視して続ける On error go to XXXX でえあらーが出たらそっち行け
434 名前:デフォルトの名無しさん [2019/04/04(木) 11:17:40.01 ID:2+ZabFqB.net] >>425 vlookupで見つかったらA処理、見つからなかったらB処理、をそれぞれさせる場合 どうするの?
435 名前:デフォルトの名無しさん [2019/04/04(木) 11:18:13.34 ID:2+ZabFqB.net] そっち行けのあと、ちゃんとfor nextループに復帰しないといけない。
436 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 11:27:09.76 ID:uGh4IPkF.net] 値が存在するか確認してからvlookupでもOK
437 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 12:16:12.36 ID:8+vU6A6d.net] >>427 基本的にgo toの 行先はループ内だな で、正常の場合はそのルーチン内で飛ばす、また共通で使用できる部分はそのまま使う それぞれ複雑になる場合は、外部呼出しで処理
438 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 12:40:19.97 ID:aPtbQ2yh.net] 簡易だけどこんな風でよろしいか。 On Error Resume Next For i=0 To lngRW varValue=WorksheetFunction.Vlookup(〜) If Err.Number=(見つからない) Then 'B処理 Err.Clear ElseIf Err.Number=0 Then 'A処理 Else Debug.Print "想定外:" & vbCrLf & Err.Description EndIf Next i On Error Goto 0
439 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 13:14:42.92 ID:iClvVPMc.net] こうじゃないの On Error Goto err For i=0 To lngRW varValue=WorksheetFunction.Vlookup(〜) '処理 err: Next i
440 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 13:23:37.46 ID:8+vU6A6d.net] >>431 一般的に書くと以下だけど、処理は複雑なら外部ファンクションで On Error Goto err For i=0 To lngRW varValue=WorksheetFunction.Vlookup(〜) [正常処理] Goto 共通 err: [err処理] 共通: [共通の処理] Next i
441 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 13:50:38.20 ID:iClvVPMc.net] >>432 あぁそうか、その形だスマン エラー番号を見たり外したりで分岐させる方法が合ったと思うけど、 あれってどうなのかな
442 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 14:26:57.06 ID:omgcYFOR.net] Dim Rc As Variant For I = 1 To 10 Rc = Application.VLookup(〜) If IsError(Rc) Then 'B処理 Debug.Print "Err" Else 'A処理 Debug.Print Rc End If Next
443 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 16:38:45.71 ID:wsHiflUt.net] If Err = *** Then
444 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 16:56:03.91 ID:iClvVPMc.net] このエラーって何が返ってきてるの? Rc = Application.VLookup(1, Range("a1:b2"), 2, 0) Rcには「エラー2042」 variant/error となっている エラーオブジェクト?
445 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 17:24:54.95 ID:w4m8dn6a.net] Debug.Print WorksheetFunction.IsNA(Rc)
446 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 17:32:46.09 ID:omgcYFOR.net] >>436 VBA CVErr 関数 https://www.tipsfound.com/vba/05cverr 2042 #N/A
447 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 18:04:33.36 ID:iClvVPMc.net] >>437 ? >>438 errorってオブジェクト? なんでsetせずに代入できるんだ?
448 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 19:42:12.58 ID:l+wxMf4P.net] on error使うのあまり良くない vlookupの前にcountやfindで存在チェックするのをおすすめするよ 裏技的な方法だとAppllication.Vlooiup
449 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 19:42:34.71 ID:l+wxMf4P.net] Application.Vlookup
450 名前:デフォルトの名無しさん mailto:sage [2019/04/04(木) 19:50:28.21 ID:iClvVPMc.net] それが彼の最後の言葉だった
451 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 03:50:15.90 ID:+zVmy7gp.net] >>439 宣言済みのグローバルオブジェクトだから
452 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 08:49:34.62 ID:zlWiWORW.net] >>443 ありがとう!そんなんあったのか
453 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 09:38:24.06 ID:8QX00BOt.net] なんでマクロを表から実行する機能がボタンしかないんですか! ボタンだけ画像で気持ち悪い
454 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 09:43:10.12 ID:zlWiWORW.net] >>445 alt+f8
455 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 10:33:41.98 ID:wkkyQZMO.net] >>445 セルのクリックで選択が変わったイベントを取るとか 他にもできるけど、単に知らないだけだろ
456 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 10:44:09.79 ID:wkkyQZMO.net] >>442 悪い奴じゃなさそうだが、残念だったな 所詮、何でも道具なんだから目的に合わせて 臨機応変に対応しないとな
457 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 10:53:42.85 ID:wkkyQZMO.net] >>445 そういえば、聞き漏らしたけど >ボタンだけ画像で気持ち悪い これ意味が分からない 例えば表に更新ボタンがあるのが気持ち悪いか?
458 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 11:15:00.27 ID:sYZm3T+e.net] >>445 セル内に任意の Sub を走らせるコマンドを書きたいということかな?
459 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 11:16:44.20 ID:zNcs0aE9.net] ボタンを透明にして、セルをクリックしたように見せかければいい
460 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 11:28:07.60 ID:sYZm3T+e.net] >>451 それは見方によっては罠なのでは?
461 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 11:31:39.64 ID:wkkyQZMO.net] >>451 例えば以下でいい、透明なボタンなんてメンテナンスしにくい Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then 「セルA1を選択された時の処理」 End If End Sub
462 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 12:16:59.99 ID:VsjxKRtT.net] >>445 何を言ってるんだ? 標準モジュールに以下を書いて、 セル内に=FuncNibai(2)と入れてみろ。 Public Function FuncNibai(lngNum As Long) As Long FuncNibai=2*lngNum End Function
463 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 12:20:44.27 ID:sYZm3T+e.net] >>454 それでは基本的にシートに対する副作用のない動作しかできないよ
464 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 12:31:55.05 ID:VsjxKRtT.net] >>455 ボタンから実行していないだろ。 表を変えたいというなら、入力したセルと無関係のセルの値を変更する処理も書ける。 そんなことする奴はおらんだろうが。 そもそも>>455 がどうしたいのかが無いから、どうにもならん。 個人的には、リボンから実行するように作ることが多いけど。
465 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 12:42:46.47 ID:wkkyQZMO.net] >>456 落ち着けよ、445の釣りかもしれんし
466 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 12:51:21.11 ID:wkkyQZMO.net] >>456 基本的に、新規関数の定義だから それ以外のことをするのは、混乱の元だよね
467 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 13:41:00.30 ID:8QX00BOt.net] イベントでマクロ起動できるようになりました。ありがとうございます! ハイパーリンクのイベント使いました。 でも イベントはシート単位でマクロ側で呼び出し元特定する仕組みで 間違えるの怖いしシート全体でマクロ走るし ハイパーリンクは自分のセル位置変わっちゃうし 余計気持ち悪くなりました ハイパーリンクに直接マクロ指定したりとか もっとスパッと間違えない仕組みがないものでしょうか
468 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 13:44:20.23 ID:zlWiWORW.net] >>459 何がしたいのかもう少し具体的に言ってくれれば誰かがマクロ書くと思う >シート全体でマクロ走るし これも以下のような形で、特定のセルだけマクロが走るように制御することも可能 Private Sub Worksheet_Change(ByVal Target As Range) 行 = Target.Row 列 = Target.Column If 行 < 4 And 行 > 2 And 列 = 2 Then '処理 End If End Sub
469 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 13:58:27.50 ID:Rd0uwYXo.net] >>459 スレタイ読めない馬鹿は死ね
470 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 14:03:08.75 ID:wkkyQZMO.net] >>459 そんなの選択したセルがハイパーリンクか判断すればいいだけ 要求を書かないから特定のセルで動くマクロを提示しただけ その前に >ボタンだけ画像で気持ち悪い これ意味が分からない
471 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 14:40:23.82 ID:8QX00BOt.net] ボタンはクリックしただけで手が滑って意図せずずれちゃったり 配置した後ろにカーソルが隠れちゃったりするから なんか異物感があります
472 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 15:16:00.65 ID:wkkyQZMO.net] >>463 そうか、理由はよくわからんがハイパーリンク化は selection.hyperlinks.count または Range.hyperlinks.count で取れるんでないの試してない
473 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 16:03:40.10 ID:3Irv2J+y.net] >>459 >ハイパーリンクに直接マクロ指定したりとか ハイパーリンクのクリックでマクロを実行する www.excel-wing.com/study/jitumu/941
474 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 16:21:20.23 ID:wkkyQZMO.net] >>465 俺もこのほうが良いと思う確認してないけど
475 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 16:25:16.09 ID:wkkyQZMO.net] まあ、どうやっても出来ないと書き込むんじゃなくて 何をどうしたいけど方法を聞けよ、できるだけ自分の求めることを 詳しく
476 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 16:38:12.77 ID:33lL/zae.net] スライサーのボタンクリックをイベントとしてマクロを実行させたいんだけど、 ググっても探し方が悪いのか、「スライサーを作成するVBA」ばかりになってしまう。 どこか事例を解説しているWebページを紹介してもらえませんか?
477 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 16:41:10.23 ID:ANboNrW/.net] >>468 スレタイ読めない馬鹿は死ね
478 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 16:50:23.23 ID:n8EBNbBD.net] ピボットテーブルのスライサーの事じゃないの? 別にスレチでもなんでもないと思うけど
479 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 17:16:27.60 ID:33lL/zae.net] >>470 はい、そうです。
480 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 17:26:04.18 ID:n8EBNbBD.net] >>471 スライサーにイベントハンドルかます事はできないっぽい 以下2つのどっちかになると思う Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable) Debug.Print Cells(4, 1) End Sub Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) Debug.Print Cells(4, 1) End Sub https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet.pivottablechangesync https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet.pivottableupdate
481 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 17:41:45.84 ID:33lL/zae.net] >>472 ありがとうございます。 ピボットテーブル本体まで戻れば 変更イベントハンドルがあるのですね。 この方向でやってみます。
482 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 18:17:05.73 ID:sYZm3T+e.net] >>456 えっ? 副作用のある操作もできるのか??
483 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 20:04:21.22 ID:USfI2aKm.net] >>459 特定のセルクリックしたらマクロ実行とか
484 名前:459 mailto:sage [2019/04/05(金) 20:52:19.13 ID:CiB89diH.net] いろいろやってみましたが 表をいじって位置が変わっちゃうと動かなくなったり、 変なリンクできたりするので ボタンでやります… ボタンをセルに合わせて自動調整されるようにプロパティ設定したら ちょっと気持ちがおちつきました ありがとうございます
485 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 21:55:09.13 ID:XQoFwJNv.net] ♪かけ違えたボタンがある〜
486 名前:デフォルトの名無しさん mailto:sage [2019/04/05(金) 22:38:48.78 ID:XcJw5BB8.net] >>474
487 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 02:33:50.43 ID:lkbCtinH.net] 主作用でなければ副作用だが
488 名前:デフォルトの名無しさん [2019/04/06(土) 05:07:20.11 ID:yAC/mUJI.net] ヒポリットテーブルってややこしい。 理解するこつあはありますか?
489 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 09:18:19.10 ID:9IkbKopt.net] >>480 ピボットテーブルな 繰り返し使うしか無い 後は元データもちゃんとしたものじゃないとピボットがうまく機能しない
490 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 09:43:33.17 ID:LrM+2CU8.net] >>480 色々できて楽しいと思いながら 新しい使い方を検索しながら使いな
491 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 11:28:05.41 ID:QwecXQyr.net] >>454 の関数で値を計算して返すついでにどこか別のセルの値を設定しようと Range("A1") = 1 としたって通らないだろ そんな制約があったんじゃ>>445 に対する答えにはならんね
492 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 12:56:33.17 ID:aPksILYp.net] マイクに話しかけたら実行されるようにすりゃいいんじゃないの?
493 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 13:12:45.38 ID:cYL1/vjQ.net] >>480 いろいろやってみると面白いし、 元データをテーブルにして組み合わせると、 計算速度も速いような? 融通が利かない部分もあるけど。 4〜3月の月次推移グラフで、 ピボットテーブルには年度合計を出せるのに、 この合計もグラフに反映させる方法あるのか、ないのか・・・ 日時時間フィルターのタイムラインは、使い勝手がイマイチ、 とか。 あと、縦横クロス集計のピボットテーブルを 一発でリスト表(3Dマップに使える)に変換する隠れ機能があったり。
494 名前:デフォルトの名無しさん mailto:sage [2019/04/06(土) 23:19:03.44 ID:+F6584OT.net] まずスレタイぐらい理解できるようになろう
495 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 11:38:35.77 ID:J7v3B2LO.net] シート内にマクロを設定した ボタンを1つと、複数の画像があります。 ボタンをクリックしたら以下コードを実行し画像の一括削除を行っています。 しかし、問題があってボタンまで消失してしまいます。 そこでボタンの場合には削除はしない という風に制御を入れたいのですが、ボタンの名称はどうやって調べればよいでしょうか? 'シート無いの画像をすべて削除する。 For Each img In ActiveSheet.Shapes img.Delete Next
496 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 11:59:22.40 ID:SzIL1mww.net] >>487 ボタンに特定の名前を付けてそれをハードコーディングすりゃいいと思うがそれじゃ不満なのかな?
497 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 12:06:51.57 ID:oR5kGK9/.net] >>487 img.Nameで名前を調べることができます If img.Name <> "ボタンの名称" Then img.Delete End If みたいに書けば、特定の画像の消去をスキップできます
498 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 12:40:05.22 ID:z5f8NySY.net] >>489 名前なんて変化するのでコーディングするのはない プロパティで有るだろ、調べてないが常識的に
499 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 13:13:42.16 ID:dLz2IshG.net] 削除対象の画像を予めShapeRangeにまとめるなり、削除対象の画像の名前をシートに書き出すなりしてボタンマクロで一括削除させる設計にする方が検索効率や保守効率が良いと思う ボタン名やコントロール名でハードコーディングするのは下策 ボタンの数やコントロールの種類が増えたときにいちいち手直しする必要が出てくる
500 名前:デフォルトの名無しさん [2019/04/07(日) 13:22:52.48 ID:UhqEDEIh.net] 動的にコントロールを追加するプログラムを作ってないの? 毎回追加で書いてるの? それは面倒で下衆だわ
501 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 13:30:07.71 ID:HG+SSO0q.net] >動的にコントロールを追加するプログラム 昔作ったわ EXCELでこの設計は止めたほうが良い。エラー頻発する
502 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 14:02:19.38 ID:lv61T0oy.net] >>487 For Each work in Shapes If work.type = 消したいオブジェクトタイプ Then 消す Next
503 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 15:13:26.49 ID:zM3BxSpj.net] >>474 >>478 >>483 スマンな。 >>456 の時点では勘違いしてた。 でも、たぶん出来るだろうなと思ってやってみたら出来るな。 それどころか入力セルに対しても出来る。
504 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 15:19:02.23 ID:1196mB+r.net] >>487 は差のマクロが登録されたあるひとつのボタンだけを対象に「消したくない」と言っているように思えるのだが
505 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 15:26:28.77 ID:zM3BxSpj.net] >>491 別にボタン名とかコントロール名でやっても良いと思うよ。 増えようが、名前付けル−ルがデタラメなんてこと無いだろう。 画像ならimgが先頭に付くとか、ボタンならbtnが付くとか、普通そうしてるはずだろ。 >>492 それは、この質問だけ見ただけじゃ何とも言えない。 消えなければ追加する等という作業は最初から必要無い。 動的に追加するような状況とも思えないな。 >>493 それはその組み方が良くないだけだろ。
506 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 18:49:28.94 ID:wMtd4Rq1.net] まあ、その時目の前の問題だけクリアーするのは筋が悪い 目的を汎用化し使い易くメンテナンスし易いように組むな普通
507 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 19:51:51.79 ID:Eip3w86o.net] VBAスレで何言ってんの そういうことを言い出すとVBAなんか使うなという結論にしかならんよ
508 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 19:54:51.59 ID:9t5fZjJB.net] EXCEL前提ならそりゃVBAになる
509 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 20:30:11.80 ID:J7v3B2LO.net] >>488 ボタンに名前をつけるにはどうすればいいんですか?
510 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 21:10:44.99 ID:dLz2IshG.net] >>497 名前比較で実現出来るかどうかという実現可能性の話をしてるわけではない あくまで効率性の話をしてるんだが 特定のボタンを消さないようにするという目的だけのためにShapesコレクションをなめてアイテムのNameプロパティを逐一調べるという処理は筋が悪い ワークシート上に存在する画像や図形、テキストボックス、コントロール等の数だけ名前比較することになるからな 削除対象になる画像をワークシートに追加するタイミングでShapeRangeコレクションに入れ、ボタン押下でDeleteメソッドで一括削除というやり方の方が絶対に速い
511 名前:デフォルトの名無しさん mailto:sage [2019/04/07(日) 21:18:21.02 ID:lv61T0oy.net] >>501 Nameプロパティ