advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 1039 for オートシェイプ (0.001 sec.)
[[20240109160245]]
#score: 6703
@digest: 365946728f514f643f60cf0f78b3f322
@id: 95930
@mdate: 2024-01-10T14:46:17Z
@size: 4064
@type: text/plain
#keywords: cboxcnt (22494), ト7 (15007), checked (14551), checkboxes (7018), シェ (4064), wsname (3256), linkedcell (3136), トシ (3050), ェイ (2976), 度オ (2873), shp (2429), checkbox (2265), イプ (2205), 名", (2005), ブジ (1831), オブ (1824), ェー (1766), ジェ (1704), 12316 (1685), 個程 (1668), クボ (1652), ェク (1482), shape (1392), onaction (1248), クト (1215), じ名 (1165), オー (1154), 1500 (1121), 一覧 (936), のオ (931), 非表 (929), を非 (915)
『VBAにてオートシェイプを非表示』(勘吉)
初心者のため説明下手ですがご容赦ください。 まず状況ですが シート1〜7まで存在します。 シート1〜5がオブジェクトが多数存在し シート7がオブジェクトの名前、詳細等の一覧となっております。 シート1〜5のオブジェクトには 図形の書式→オブジェクトの選択と表示 にて名前を設定してます。(シート7の一覧A列と同じ名前) ここからやりたいことです。 シート7のF列に「1」と入力すると、その行のA列と同じ名前のオブジェクトを非表示にしたいです。 ちなみにシート7は1500行程度存在します。 シート1〜5にも1500個程度オブジェクトが存在します。 これをVBAにてマクロを組みたいのですが最初から躓いております。 よろしくお願いします。 < 使用 Excel:Excel2019、使用 OS:Windows10 > ---- 具体的に、どんな事が分かれば出来そうですか? (1)マクロを起動する方法はどうするか ・コマンドボタンをクリックしたとき→コマンドボタンにマクロを登録します。 ・シート7のF列のセルの値を変更したとき→シートモジュールのWorksheet_Changeプロシジャにマクロを書きます (2)シェープを指定する方法がわからない? → マクロの記録をしてみましょう (3)シェープを非表示にする方法が分からない? → マクロの記録をしてみましょう (4)全然わからないので作ってほしい → シート7のレイアウトを詳しく説明しましょう (´・ω・`) 2024/01/09(火) 17:40:12 ---- UI的にはシート7に「チェックボックス」を配置して、ON/OFFを切り替えるのがいいと思います。 1500個ものオブジェクトというのは想像できませんが、「もたつき感」はないのでしょうか? それは考えずに、「チェックボックス」を使った案を投下します。 「Sheet1〜Sheet5」にオートシェイプを適当に配置した新規ブックで試してください。testを実行です。 「Sheet7」に一覧表が作成されるので、「チェックボックス」を「ON/OFF」してみてください。 オートシェイプには、同じ名前を指定できるので、「シート名」と「IDプロパティ」で特定しています。 ※19:47、一部修正しました。 Sub test() Const 一覧$ = "Sheet7" Dim shp As Shape, ws As Worksheet, cboxCnt&, r As Range Application.ScreenUpdating = False With Sheets(一覧) .Columns("A:A").ColumnWidth = 40 .Columns("A:A").RowHeight = 20 .CheckBoxes.Delete .Range("A1:D1").Value = Array("AutoShape名", "シート名", "Shape.ID", "ON/OFF") For Each ws In ThisWorkbook.Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")) For Each shp In ws.Shapes cboxCnt = .CheckBoxes.Count Set r = .Range("A1").Offset(cboxCnt + 1) With .CheckBoxes.Add(Left:=r.Left, Top:=r.Top, Width:=r.Width, Height:=r.Height) .Caption = shp.Name r.Offset(, 1) = ws.Name r.Offset(, 2) = shp.ID .LinkedCell = r.Offset(, 3).Address r.Offset(, 3).Value = CBool(shp.Visible) .OnAction = "CheckBox_Click" End With Next Next End With End Sub Private Sub CheckBox_Click() Dim shp As Shape, rng As Range, checked As Boolean, wsName$, spID& With ActiveSheet Set rng = .Range(.CheckBoxes(Application.Caller).LinkedCell) checked = rng.Value spID = rng.Offset(, -1).Value wsName = rng.Offset(, -2).Value For Each shp In Sheets(wsName).Shapes If shp.ID = spID Then shp.Visible = checked Exit For End If Next End With End Sub (まる2021) 2024/01/09(火) 19:10:52 ---- 直接の回答ではありません。少し気になりましたので、コメントします。 >シート7のF列に「1」と入力すると、その行のA列と同じ名前のオブジェクトを非表示にしたいです。 この1を立てる作業は手作業でやるんですか? オートシェイプの名前を確認して、1を立てる、これって大変じゃないですか? 1500ものオートシェイプを手でハンドリングするというのは大変過ぎませんか? そもそも、何を目的にして1500のオートシェイプが必要なんですか? オートシェイプに依らない方法はないんでしょうか? そこから議論をしたほうが有益なように感じます。 (xyz) 2024/01/10(水) 23:46:17 ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/202401/20240109160245.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97050 documents and 608253 words.

訪問者:カウンタValid HTML 4.01 Transitional