他の答えは正解で効率的ですが、私はあなたのコードに何が間違っているのか、そのコードがどうして行くのかについて少し説明を加えたいと思います。 1ライナーはしばしば、彼らが自分の利益のためにあまりにも巧みであるかのように不思議で不思議に思えることがあります。したがって、それらを効果的に使用するのに十分理解すれば、良いコーディングに不可欠です。
型の不一致エラーがSheets()
機能がString
(シートの名前を)期待しているが、あなたはそれをSheet
オブジェクトであるActiveSheet
を渡しているという事実によるものです。それはすでにSheet
あるので、あなたはちょうどそれを使用することができますし、直接そのName
プロパティを変更します。
ActiveSheet.Name = ufjulneve
しかし、それよりもさらに良いが、それはあなたがやって取ると、一般的なユーザーとの対話を模倣しなければならないとき、Excelが非常に遅いです参照する前に手動でワークシートを選択するのと同じことです。あなたはとにかくそれを選択した後、あなたがそのワークシートを使用していないので、あなたは完全に
Sheets("TABLAK").Select
を次の行を削除する必要があります。さらに、後でコードをスキミングするときに、Sheets.Add
が新しく作成されたワークシートを自動的に選択することがわからない場合は、Sheets("TABLAK")
がActiveSheet
であるという誤った印象を受ける可能性があります。あなたは再び別の場所Sheets("MENU").Range("B2").Value
の値を参照する必要がない限り、追加の2行を保存し、他の人によって提案されたよう
最後に、あなたにも、これはまだActiveSheet
を指しているので
Worksheets.Add
ActiveSheet.Name = Worksheets("MENU").Range("B2").Value
を残し、それを除去することがあります、後で変更の顔にfagileそれを作る(?誤って用紙選択を変更し、それらの2の間に別の行を追加した場合に何が後に起こる)をワンライナーははるかに行くための最善の方法である:
Worksheets.Add.Name = Worksheets("MENU").Range("B2").Value
'ActiveSheet.Name =あなたは最初の 'Sheets(" TABLAK ")は必要ありません。Select at at – user3598756
ありがとうございます。私は新しいシートの配置のために、その行を書きました。 –