
No.1ベストアンサー
- 回答日時:
もっと簡単なやり方があるかもしれませんが・・・
Sub mac2()
Dim nm(1 To 2) As String
ar(1) = VBAProject.Sheet2.Name
ar(2) = VBAProject.Sheet5.Name
Worksheets(nm).Select
End Sub
でいかがでしょう?
No.5
- 回答日時:
ok20050706 さん、こんにちは。
>#1さんの方法で処理できました。
私は、#1 のfly_moonさんのコードは試してみませんでした。私は、あくまでも、擬似的なコントロール配列から、シートを指定する以外、直接、VBAProject を取る方法は、まったく考えていませんでした。
私は、単に、オブジェクト名は取れても、そのまま使えないということを書いたまでですから、直接、#1の fly_moonさんのコードとは関係がありません。誤解されるような書き方をしてすみません。
なお、オブジェクトを配列にするのは、変数をコレクション型にしますが、その変数を使いまわししなければ、無駄が多いような気がします。
No.4
- 回答日時:
>?????(Array(?,?)).Select
では無理なんではないでしょうか。
オブジェクトブラウザで見てみると、VBAProjectのメンバに複数のクラスをまとめて扱えそうなクラスが存在していないように思います。
あと、Array関数で扱えるのはバリアント型なのでオブジェクト型を入れられないし・・・
私の解る範囲はここまでです。ご参考になれば幸いです。
No.3
- 回答日時:
こんにちは。
>オブジェクトで指定したいのですが
オブジェクトではなくて、オブジェクト名(コードネーム)でよいかと思います。
コードネーム名を変更できるのは、VBE画面の手動のプロパティでしかできません。VBA等では、値のみしか取得できません。故意に変更しなければ、問題はないはずです。(プロジェクト自体をロックしたら、もちろん、コードネームは変更できません。)
また、コードネーム(=VBAProjectのシートネーム)を取れても、シート・オブジェクトとシート名が同じなら、Select できますが、違えば、直接指定できません。
以下は、その都度、シートIndexを取るようにしています。
サンプルコード
Sub Sheet_CodeNames()
Dim ws As Object, i As Long
Dim myCNameSheet As Variant
Dim myShIndexes As Variant
'ここは、プロパティで調べて、オブジェクト名を入れます。
myCNameSheet = Array("Sheet1", "Sheet3")
myShIndexes = myCNameSheet
For Each ws In Sheets
For i = LBound(myCNameSheet) To UBound(myCNameSheet)
If myCNameSheet(i) = ws.CodeName Then
myShIndexes(i) = ws.Index
End If
Next i
Next ws
Worksheets(myShIndexes).Select
End Sub
この回答への補足
>オブジェクトではなくて、オブジェクト名(コードネーム)で
>よいかと思います。
おっしゃるとおりオブジェクト「名」です。
>また、コードネーム(=VBAProjectのシートネーム)を取れても、
>シート・オブジェクトとシート名が同じなら、Select できますが、
>違えば、直接指定できません
もうすこし、詳しく教えてください
<実際>
オブジェクト名:Sheet2
シート名 :aaa
シート位置 :左から3番目
です。
この場合なのですが、
#1さんの方法で処理できました。
>違えば、直接指定できません
のケースに当てはまりますか?
No.2
- 回答日時:
すいません。
#1です。>ar(1) = VBAProject.Sheet2.Name
>ar(2) = VBAProject.Sheet5.Name
違ってました。
nm(1) = VBAProject.Sheet2.Name
nm(2) = VBAProject.Sheet5.Name
です。
ありがとうございます
Sub mac3()
?????(Array(?,?)).Select
End Sub
というのができるかなと思ったのですが
やはり、VBAProject.???.nameを使ってシート分回さないと無理なのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) vbaで列幅について 1 2022/11/15 08:31
- Excel(エクセル) vba アクティブシートのA1セルの値を基準に複数のシートコピー&シート名を 6 2023/04/12 18:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正規表現を使った置換処理。大...
-
VBA 同じ名前のオブジェクトを...
-
C++のシングルトンオブジェクト...
-
javaでは基本型の参照渡しは無...
-
Excelで =EMBED("Acrobat Docu...
-
C#でフォームのオブジェクト名...
-
VBSでのステートメントの末尾が...
-
【Java】入力した西暦→和暦に変...
-
オブジェクト指向プログラミン...
-
VBでExcelオブジェクトを引数を...
-
Object型からDouble型へのキャスト
-
多人数のじゃんけんプログラム
-
サブクラス化
-
Tomcat5.5.17でDataSourceを使...
-
JAVAからHTMLへ値を返す方法
-
Javaの問題なんですが、(this==...
-
プラウザの右端を左へ縮めても...
-
ワイルドカード<?>と型パラメー...
-
MATLABプロットの線にアルファ...
-
インデザインのテキスト回り込み
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
Excelで =EMBED("Acrobat Docu...
-
VBA 同じ名前のオブジェクトを...
-
EXCEL VBAにて動的にCheckBOXを...
-
VBAのWindowオブジェクトとWork...
-
C#でフォームのオブジェクト名...
-
ビジュアルC++でボタンの有...
-
COMコンポーネントって何?
-
Object型からDouble型へのキャスト
-
時間帯判定をする。
-
newは明示的にした方が良いのか?
-
戻り値がクラスオブジェクト
-
ワイルドカード<?>と型パラメー...
-
error C2712: オブジェクト ア...
-
Accessの連結・非連結オブジェ...
-
CoCreateInstanceでエラーになる。
-
オブジェクトレベルとメタレベル
-
多人数のじゃんけんプログラム
-
Rangeオブジェクトを一時的に作...
-
ワードで画像をドロップすると...
おすすめ情報