
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
> もし、そうだとしたら上記のVBAをどのように分ければよいでしょうか?
ActiveCell.Activate
MsgBox "表示を終了してよろしいですか", vbOKOnly + vbInformation, "表示"
この2行を消して
.Shapes.Range(sh).Line.Visible = msoFalse
を別の Sub にするだけだと思います。
> Shape38,39,40になると、また「インデックスが境界を超えています」と出ました・・・
こちらの環境(Excel2000)ではShapes200でも動作します。
オートシェイプのインデックスはオートフィルタの▼や入力規則リストの▼でも増えるのですが、実際にインデックスが超えていなければエラーは出ませんでした。
実際のファイルやシートの状態を見えれば良いのですが、、、
やりたい事が今ひとつ掴めないのですが、もっと違うアプローチで同様の事が実現出来ないか模索した方が良いかも知れません。
No.2
- 回答日時:
Test1を実行するとどんな数字が表示されますか?
これが16未満なら ActiveSheet.Shapes(16).Select は「インデックスが境界を超えています」って事です。
Sub Test1()
MsgBox ActiveSheet.Shapes.Count
End Sub
下記は参考に
Sub Test2()
Dim sh(), s As String
With ActiveSheet
s = .Range("C117").Text
Select Case s
Case "A"
sh = Array(.Shapes(14).Name, .Shapes(15).Name)
Case "B"
sh = Array(.Shapes(2).Name, .Shapes(3).Name, .Shapes(4).Name)
Case "D"
sh = Array(.Shapes(8).Name, .Shapes(9).Name, .Shapes(10).Name)
Case Else
MsgBox "指定した地点 " & s & " はありません", _
vbOKOnly + vbExclamation, "指定範囲外"
Exit Sub
End Select
.Shapes.Range(sh).Line.ForeColor.SchemeColor = 10
.Shapes.Range(sh).Line.Visible = msoTrue
ActiveCell.Activate
MsgBox "表示を終了してよろしいですか", vbOKOnly + vbInformation, "表示"
.Shapes.Range(sh).Line.Visible = msoFalse
End With
End Sub
この回答への補足
ありがとうございます。
test1を実行すると「25」と表示されます。
test2は私が組んでいるものを違う形で表示してくれたのですね。
かなり感動しています。
本当にありがとうございます。
あつかましいようですが、もうひとつお聞きしたいのですが・・・
マクロを実行した際に今のないようですとメッセージボックスに
「表示を終了してもよろしいですか?」と言う表示が出て、シートを動かす(上下や左右)ことが
できなくなりますが、それを動かせるようにすることはかのですか?
このShapeを表示させるVBAと終了させるVBAを
別々に組み、それぞれのVBAが実行できるようなボタンを作るほうが賢明なのでしょうか?
もし、そうだとしたら上記のVBAをどのように分ければよいでしょうか?
No.1
- 回答日時:
本当に上限の問題でしょうか?
該当部分のソースコードを載せた方がアドバイスが得られやすいと思いますよ。
例えば、シートにオートシェイプを1~2個おいて下記を実行すると同じエラーが出ます。
Sub Test()
cnt = ActiveSheet.Shapes.Count
MsgBox "シェイプが " & cnt & "個しかないのに" & vbCrLf & _
cnt + 1 & "個目を選択しようとしてるとか、、"
ActiveSheet.Shapes(cnt + 1).Select
End Sub
この回答への補足
返答が遅くなってしまい、スミマセン。
現在、下記のようなVBAを組んでいてエラーがでます。
Sub iro()
Dim i As String
i = Range("c117").Value
If i = "A" Then
ActiveSheet.Shapes(16).Select
ActiveSheet.Shapes(15).Select
ActiveSheet.Shapes(14).Select Replace:=False
hyoji
MsgBox "表示を終了してよろしいですか", vbOKOnly
ActiveSheet.Shapes(16).Select
ActiveSheet.Shapes(15).Select
ActiveSheet.Shapes(14).Select Replace:=False
modosu
ElseIf i = ”B" Then
ActiveSheet.Shapes(2).Select
ActiveSheet.Shapes(3).Select Replace:=False
ActiveSheet.Shapes(4).Select Replace:=False
hyoji
MsgBox "表示を終了してよろしいですか", vbOKOnly
ActiveSheet.Shapes(2).Select
ActiveSheet.Shapes(3).Select Replace:=False
ActiveSheet.Shapes(4).Select Replace:=False
modosu
ElseIf i = "D" Then
ActiveSheet.Shapes(8).Select
ActiveSheet.Shapes(9).Select Replace:=False
ActiveSheet.Shapes(10).Select Replace:=False
hyoji
MsgBox "表示を終了してよろしいですか", vbOKOnly
ActiveSheet.Shapes(8).Select
ActiveSheet.Shapes(9).Select Replace:=False
ActiveSheet.Shapes(10).Select Replace:=False
modosu
Else
MsgBox "指定した地点がありません", vbOKOnly
End If
End Sub
Sub hyoji()
Selection.ShapeRange.Line.Visible = msoTrue
'「線なし」に設定されている場合、線を表示
Selection.ShapeRange.Line.ForeColor.SchemeColor = 10
Range("A1").Select
End Sub
Sub modosu()
Selection.ShapeRange.Line.Visible = msoFalse
'「線なし」に設定
Range("A1").Select
End Sub
いかがでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでPowerPointからExcelにレイアウト通りに出力する 4 2023/07/05 12:22
- Visual Basic(VBA) ExcelのVBAで教えてください。 Vlookupで、X X.value = applicatio 1 2022/12/26 13:40
- CAD・DTP Autocad Scriptファイルからの入力とコマンドラインからの入力が違う 1 2023/08/01 09:13
- Excel(エクセル) Excel VBAでのセルやシェイプの色指定について。 たとえば、”red”という文字列を用いて … 4 2022/11/15 09:44
- Excel(エクセル) Excelヘルプの原文を表示する最速の方法(手順)には? 1 2023/08/11 11:30
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Excel(エクセル) Excel VBAで、行の高さを、上下1文字分程度高くしたい 3 2023/04/23 00:17
- Visual Basic(VBA) Vba テキストボックスの文字列をボタンで入力するとテキストボックスの端の文字列が更新されない 2 2022/05/21 23:32
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
このQ&Aを見た人はこんなQ&Aも見ています
-
オートシェイプの削除時のエラー回避法
Visual Basic(VBA)
-
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
エクセルvbaでの図形のカット(コピー)ペーストについて
Excel(エクセル)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
エクセル マクロで、選択している画像の数を数えたい
Excel(エクセル)
-
6
エクセル/自動記録VBAが、なぜ実行時エラー?
Excel(エクセル)
-
7
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
8
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
9
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
10
excel vba/セルの値がOKになったら図形を消す
Visual Basic(VBA)
-
11
図形挿入VBA
Visual Basic(VBA)
-
12
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
13
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
14
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
15
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
16
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
17
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
18
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
19
ExcelVBA 図形をクリックした際のイベントを拾うには
Visual Basic(VBA)
-
20
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA インデックスの境...
-
Excelマクロで空白セルを詰めて...
-
Excel で行を指定回数だけコピ...
-
エクセル2007で、マクロで、結...
-
VBA:同じ文字列データの比...
-
エクセル:VBAで月変わりで、自...
-
Excelでデータの抽出&別シート...
-
セルの一部を任意の条件で貼り...
-
エクセルVBA 別シートの複数の...
-
Excel・VBAで同じものだけを表...
-
Excel VBAでシート内全体に非表...
-
VBA 最終行取得からの繰り返し貼付
-
エクセルVBAで 2種のリストを...
-
vbaでコントロールブレイク
-
機種変更時にデータは見られる?
-
スマホ機種変更で旧機種のGoogl...
-
携帯修理出して戻ってきたら、L...
-
故障?ウィルス?
-
中古携帯電話について
-
ソフトバンクアクオス携帯で動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel で行を指定回数だけコピ...
-
Excel VBA インデックスの境...
-
VBA:同じ文字列データの比...
-
エクセル:VBAで月変わりで、自...
-
Excelマクロで空白セルを詰めて...
-
excelの差込印刷で可視セルだけ...
-
VBA別シートの最終行の下行へ貼...
-
エクセルVBAで 2種のリストを...
-
VBAで条件が一致する行のデータ...
-
Excelマクロ データが上書きさ...
-
WorkbooksとWorksheetsを簡単に...
-
VBA 貼付先範囲(行)がいっぱ...
-
ExcelVBAで改ページを追加したい
-
【WORD差し込み印刷】複数レコ...
-
エクセルVBAで SendKeys "{TAB}"
-
Excel VBAでシート内全体に非表...
-
Excel VBA :2回目以降実行で貼...
-
Excel VBA 複数条件にマッチし...
-
エクセル2007で、マクロで、結...
-
Excel VBA元データから別シー...
おすすめ情報