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


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

Excel VBA 質問スレ Part60



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プロパティ






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

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

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