
いつもお世話になります
今、外部から指定された複数のシートを(ここでは2個にします)
下記のようにAraay関数で削除しようとしています
Worksheets(Array("B2側壁⑯", "B2側壁⑰")).Delete
ところが、削除するシートの数が決まっていない場合のArrayの作り方が
分かりません
例えば
moji2 = Array("B2側壁⑯", "B2側壁⑰")
Worksheets(moji2).Delete
は上手く行くのでが
Arrayの中を別の変数で組み立ててから行うとインデックスエラーになります
moji1 = """B2側壁⑯""" & ", " & """B2側壁⑰"""
moji2 = Array(moji1)
Worksheets(moji2).Delete
シートの数が任意なのでどうしても外で組み立てなければならないと思います
以上の解決方法が有りましたら教えてください
尚、For文で一つづつ削除するのではなくこの方法で何とかお願いします
No.2ベストアンサー
- 回答日時:
No1です。
>Splitはよく使いますが、Array文にも使えるのですか?
ArrayとSplitは別物です。
文字列をArrayにぶち込もうとしてうまく行かないようですので、Split関数で文字列を分割して配列に入れれば宜しいかと。
参考サイトに示される通り、文法は
Split(対象文字列, 区切り文字)
で、配列を得られます。
(デフォルトでは、添字が0始まりの配列だったと思います)
例えば、
Split("ああ,いい,うう", ",")
で、["ああ", "いい", "うう"] という配列が得られます。
>UserFormのListviewに出力した中から選択されたものをになります
Listviewは使ったことがないのでよくわかりませんが、選択項目を取得するのにループで取得していたりしませんか?
ListView.SelectedItems(i)
のような形で取得しているのなら、わざわざ文字連結をしなくても、直接その値を順に配列に入れてゆけば、(文字列を介する必要も無く)そのループ処理だけで配列を作成できるだろうという意味です。
いつもありがとうございます
ちょっと、Arrayという文字に拘り過ぎました
ご指摘通り、Splitで配列を作りうまく行きそうです
また、文字に対しては環境依存文字も扱えるようにしているため
ListView上では?になる文字をカバーするために別な配列も
用意して対処しています
シート番号を使うことも考えられますが
ここからDocuWorksに出力もできるようにしているため
ファイル名の処理などすべてを文字操作で行っています
シートが多くなると扱いづらくなるのでUserFormを使って
操作しやすくしています
以上、本当にありがとうございました
No.1
- 回答日時:
こんにちは
どうしても文字列で処理したいのなら、ArrayではなくSplit関数を用いれば、結果を配列として取得できます。
https://learn.microsoft.com/ja-jp/office/vba/lan …
なお、
>For文で一つづつ削除するのではなく~~
と同様の考え方ではありますが、事前に配列を定義しておいて、ループで要素として追加してゆく方法でも、上記と同様の配列を得ることが可能でしょう。
個々のシート名をどのようにして得ているのか不明ですが、通常は配列などで受け取るのではないでしょうか?
あるいは、何かの処理をループで行って、該当するものだけピックアップするとかであれば、わざわざ一旦文字列化するようなことをしなくても、そのループの中で配列にピックアップしてゆけばすむと思いますけれど・・・
こんにちは
いつもありがとうございます
Splitはよく使いますが、Array文にも使えるのですか?
もし、具体的な例が有ったらお願いします
尚、削除するシートはUserFormのListviewに出力した中から
選択されたものをになります(マルチ選択ON)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルの改行について
Visual Basic(VBA)
-
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
算術演算子「¥」の意味について
Visual Basic(VBA)
-
-
4
ダブルクリックで貼り付けた画像からリンクのみ削除し、画像を残したい。
Visual Basic(VBA)
-
5
【マクロ】変数を使った、文字の種類の変更にて、エラーとなる。
Visual Basic(VBA)
-
6
vbsでのwebフォームへの入力制限?
Visual Basic(VBA)
-
7
改行文字「vbCrLf」とは
Visual Basic(VBA)
-
8
数学、プログラミング、物理、化学など理系の方に質問 プログラミング言語、数式、化学式などで会話をしよ
その他(プログラミング・Web制作)
-
9
Vba セルの4辺について罫線が有るかどうか調べたいのですが
Visual Basic(VBA)
-
10
【マクロ】シートの変数へ入れるコードがエラーとなるのはなぜでしょうか?
Visual Basic(VBA)
-
11
複数のExcelファイルをマージするマクロ(修正)
Visual Basic(VBA)
-
12
VBA 最終行の取得がうまくいかず上書きされてしまいます。
Visual Basic(VBA)
-
13
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
14
VBAの「To」という語句について
Visual Basic(VBA)
-
15
マクロ・VBAで、当該ファイルのショートカットからなら正常に動作する疑問につきまして
Excel(エクセル)
-
16
ワードの図形にマクロを登録できる方法を教えてください。
Visual Basic(VBA)
-
17
エクセルのdatedif関数を使って、年齢と月齢を入力しました。 関数を入力して、問題なく使えたので
Excel(エクセル)
-
18
【マクロ】開いているブックの名前を取得した後、名前をセルに1つづつ入力するには?
Visual Basic(VBA)
-
19
【関数】同じ関数なのに、エラーが出るエクセルと出ないエクセルある?
Excel(エクセル)
-
20
エクセルのファイルのコピーをとりたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
IHクッキングヒーターの操作パ...
-
リアシート無しで運転してたら...
-
建築模型、カーブの作り方
-
BIKEのシートの取り外し方を教...
-
PowerQuery(パワークエリ)のエ...
-
フォルツァ バッテリーを外して...
-
XR250BAJAのシートのはずし方を...
-
【マクロ】シートの変数へ入れ...
-
Excel VBA シート名変更時、重...
-
エクセルVBA 4行飛ばしで転記す...
-
BRIDEのシート張り替えってでき...
-
台車の下に敷くシートについて
-
Excel複数シートから日付と文字...
-
Vba Array関数について教えてく...
-
発泡スチロール的な素材で透明...
-
TL125のダブルシート化
-
軽自動車+後付けレカロシート...
-
vfr400r(NC30)のバッテリー交換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
原付 レッツシート開け方
-
IHクッキングヒーターの操作パ...
-
フォルツァ バッテリーを外して...
-
Excel複数シートから日付と文字...
-
エクセルVBA 4行飛ばしで転記す...
-
飛行機の座席について 3列シー...
-
BRIDEのシート張り替えってでき...
-
シートベルトの固定解除
-
水の染み込んだバイクのシート...
-
ポップコーンの捨て方
-
リアシート無しで運転してたら...
-
建築模型、カーブの作り方
-
エスティマのコンソールボック...
-
マジェスティ(4HC)のシート下...
-
カッティングシートの上からア...
-
XR250BAJAのシートのはずし方を...
おすすめ情報