Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5276 / 13646 ツリー ←次へ | 前へ→

【51757】シート名を変数に代入する? まり 07/10/3(水) 18:59 質問[未読]
【51765】Re:シート名を変数に代入する? ponpon 07/10/3(水) 23:44 発言[未読]
【51794】Re:シート名を変数に代入する? まり 07/10/4(木) 20:04 お礼[未読]
【51796】Re:シート名を変数に代入する? ponpon 07/10/4(木) 22:55 発言[未読]

【51757】シート名を変数に代入する?
質問  まり  - 07/10/3(水) 18:59 -

引用なし
パスワード
   こんばんは。
VBA初心者です。

色々検索してみたのですが、答えが見つかりません。
どなたか教えていただけますでしょうか。

エクセルのブックを2つ開いていて、シートをBOOK-AからBOOK-Bにコピー&ペーストしたいと思います。
コマンドはBOOK-Bに書いています。
BOOK-Aには数枚のシートがあり、選択したシートをコピーしたいのです。

で、思考錯誤しながら下記のように書いてみたのですが、
"Worksheets("mysname").Select"のところで
「実行時エラー9 インデックスが有効範囲にありません」となります。
シート名は数字のみです。

どなたかご教示いただけませんでしょうか。

Dim mysname As String
  mysname = InputBox("シート名を入力してください")
  
  If mysname = "" Then
  MsgBox "キャンセルされました"
  Exit Sub
  Else
  MsgBox "データを取り込みます"
  End If
  

ActiveWindow.ActivateNext
  
  Worksheets("mysname").Select
  Cells.Select
  Selection.Copy
  ActiveWindow.ActivateNext
  Worksheets("sheet1").Select
  Range("A1").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

【51765】Re:シート名を変数に代入する?
発言  ponpon  - 07/10/3(水) 23:44 -

引用なし
パスワード
   こんばんは。

>Worksheets("mysname").Select

ここでエラーになると思うのですが、
mysname は、変数ですよね。
"mysname"のように""で囲むとmysnameという文字列になります。

ところが、mysnameというシート名がないので、
>「実行時エラー9 インデックスが有効範囲にありません」
となってしまうのでは?
""をとって、
Worksheets(mysname).Select
とすればよいと思いますが、
できるだけ、Selectしないようなコーディングを心がけるとよいと思います。

【51794】Re:シート名を変数に代入する?
お礼  まり  - 07/10/4(木) 20:04 -

引用なし
パスワード
   ponponさん、こんばんは。

早速教えていただきありがとうございました。
なるほど、変数は""で囲まないのですね。
今は手元に元のファイルが無いので、会社に行ってやってみます。

あと、selectしないようなコーディングを・・・
これも、はー、そうなんだと思いました。

色々勉強になります。

ありがとうございました!!

▼ponpon さん:
>こんばんは。
>
>>Worksheets("mysname").Select
>
>ここでエラーになると思うのですが、
>mysname は、変数ですよね。
>"mysname"のように""で囲むとmysnameという文字列になります。
>
>ところが、mysnameというシート名がないので、
>>「実行時エラー9 インデックスが有効範囲にありません」
>となってしまうのでは?
>""をとって、
>Worksheets(mysname).Select
>とすればよいと思いますが、
>できるだけ、Selectしないようなコーディングを心がけるとよいと思います。

【51796】Re:シート名を変数に代入する?
発言  ponpon  - 07/10/4(木) 22:55 -

引用なし
パスワード
   ▼まり さん:
こんばんは。
もう見てないかもしれませんが・・・

>あと、selectしないようなコーディングを・・・
>これも、はー、そうなんだと思いました。

ここなんかを参考にすればいかがでしょうか?

www.officetanaka.net/excel/vba/speed/index.htm

5276 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free