重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

またまた投稿しました。
下のように、InputBox関数を用い、マクロ内部のワークシートの名前を指定しようとマクロを書いているのですが、うまくいきません。。どなたか助けてください。よろしくお願いします。


'Work Sheet Selection
InputSheetName:

Dim myStr As String
On Error GoTo ErrHandles

myStr = InputBox(Prompt:="Please" & vbCrLf & "Input Sheet No. ! ", _
Default:=ActiveSheet.Name) 

'---(1)Cancel or Blank
If Len(myStr) = 0 Then
MsgBox "Cancel Macro Execution", vbInformation

'---(2)Other Value
ElseIf myStr <> ActiveSheet.Name Then
MsgBox "Sheet" & myStr & "Macro Start", vbInformation
myStr = Worksheets.Name ← コンパイルエラーが発生 !!

End If

Exit Sub

ErrHandle:
'---(3)Error
MsgBox Err.Description & String(2, vbCrLf) & _
"Input Sheet No. again!", vbCritical

'---Re Input sheet No.
Resume InputSheetName

'Data Extracting
Dim x As Long
For x = 0 To 250
Worksheets("FQ.dat").Select
Range(A5).Select '
Selection.Copy
Worksheets("mystr").Select '  ← ココのシートを選択したい!
Range(Cells(x + 31, 3), Cells(x + 31, 6)).Select
ActiveSheet.Paste
Next x

質問者からの補足コメント

  • うーん・・・

    VBAに関する質問が2回目ということで、また。。。という表現を使いました。
    言葉足らずですね。
    私がやりたい事は、 InputBoxに入力された数値を 元データ(今回の場合「FQ.dat」)にある数値から検索し 自動的に他のシートへコピペしようするマクロを考えています。VLOOKUP関数みたいな
    感じです。
    「Data Extracting 」以降の構文がどういうわけか抜けていますね。
    正しくは、
    Worksheets("FQ.dat").Select
    Range(Cells(29 * x + (6), 1), Cells(29 * x + (6), 4)).Select '
    です。
    InBoxを使用してシートを指定すること(シート名は元データ内にあるセルの値と同じ)でマクロが実行されると考えているのですが。。。。

    どのように処理したら良いかわかりますか。。。?

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/06/02 13:45
  • うーん・・・

    ①,② 現在、探したい数値は 、A列 6行から規則的に29行おき6937行まで存在します。
    A B C    D
    6  10.87  109.5  50.9  -3
    7  10.38   88.8  35.8 -7
      ..   ..   ..   .
    35  10.87  208.3 352.1  2
    36  10.38   156.8  5.8 -10
    このようなデータが29行おきに 元データに配置されています。
    これをA行は、「シート名」に使用し、B行からD行を各振り分けられたシートへ
    コピペしたいです。
    ③ 仰るとおり、シート名は数値です。
    よろしくお願いします。

    No.4の回答に寄せられた補足コメントです。 補足日時:2017/06/02 16:06
  • うーん・・・

    選択されたシートへの貼り付け先の行は固定です。 
    貼り付けは1行のみでは、1シートに250行、増えると800行になります。
    よろしくお願いします。

    No.5の回答に寄せられた補足コメントです。 補足日時:2017/06/02 16:54
  • つらい・・・

    貼り付け先がどの行というか、
    一つのシートに複数回データを下へ貼り付けて行き
    元データのCellの値がBLANKになった時点で、
    元データの次の行へ移り、別のシートへ貼り付ける
    という作業です。

    No.6の回答に寄せられた補足コメントです。 補足日時:2017/06/02 17:27

A 回答 (12件中11~12件)

そもそも「Worksheets.Name」はどういうものでしょうか?


アクティブシートの名前ならば「ActiveSheet.Name」でしょう
    • good
    • 0
この回答へのお礼

早々の回答ありがとうございます。
しかし 「Active Sheet .Name」 に変更すると
選択されたシートの名前が変更されるだけで、マクロ内のセル指定を
変更することが出来ません。

お礼日時:2017/06/02 12:21

よく見ていませんが


「myStr = Worksheets.Name ← コンパイルエラーが発生 !!」は何のためにあるのでしょうか?
「Worksheets("mystr").Select '  ← ココのシートを選択したい!」は「Worksheets(myStr).Select '  ← ココのシートを選択したい!」では?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
同じように試しましたが、うまくいかないのですね。
何ででしょうか。。。?

お礼日時:2017/06/02 12:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!