
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルvbaでの図形のカット(コピー)ペーストについて
Excel(エクセル)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
-
4
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
5
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
6
オートシェイプの削除時のエラー回避法
Visual Basic(VBA)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
エクセルマクロでシート内にある画像のみを選択する
Excel(エクセル)
-
10
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
11
エクセル マクロで、選択している画像の数を数えたい
Excel(エクセル)
-
12
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
13
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
14
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
15
【EXCEL VBA】オートシェイプをクリックした時にそのオートシェイプの名前を取得したい
Visual Basic(VBA)
-
16
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
17
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
18
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
-
19
VBA テキストボックスの行数取得
Visual Basic(VBA)
-
20
VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル:VBAで月変わりで、自...
-
Excelマクロで空白セルを詰めて...
-
Excel で行を指定回数だけコピ...
-
エクセルVBAで SendKeys "{TAB}"
-
エクセル2007で、マクロで、結...
-
データ入力シートから別シート...
-
VBAで複数シート選択
-
エクセルVBAで 2種のリストを...
-
excelの差込印刷で可視セルだけ...
-
Excel VBA インデックスの境...
-
エクセルVBA 別シートの複数の...
-
スマホ機種変更で旧機種のGoogl...
-
機種変更時にデータは見られる?
-
ノートパソコンの画面表示が横...
-
拡張子「.HUF(.huf)」のファ...
-
外付けHDDをフローリングに落と...
-
ストレージが減りません。 スト...
-
携帯会社が確認もなしにデータ...
-
メールボックスがない時はどう...
-
携帯電話の画面が出てこない・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロで空白セルを詰めて...
-
Excel で行を指定回数だけコピ...
-
Excel VBA インデックスの境...
-
VBA:同じ文字列データの比...
-
excelの差込印刷で可視セルだけ...
-
エクセル:VBAで月変わりで、自...
-
VBAで条件が一致する行のデータ...
-
VBA 貼付先範囲(行)がいっぱ...
-
VBAでのシートの色が
-
複数ブックの複数セルの抽出教...
-
エクセルVBAで 2種のリストを...
-
【WORD差し込み印刷】複数レコ...
-
別シートから検索値に一致した...
-
Excelマクロ データが上書きさ...
-
ExcelVBA、印刷ページを事前に...
-
VBA別シートの最終行の下行へ貼...
-
エクセルでデータの検索
-
Excel VBAでシート内全体に非表...
-
[EXCEL]全てのチェックボックス...
-
VBA 最終行取得からの繰り返し貼付
おすすめ情報