• ベストアンサー

シートの名前の変更について(VBA)

いつもお世話になっております。 VBAでシートの名前の変更を行おうと考えています。エクセルのシートで手動でシートの名前変更を入力すると使用できない文字は、入力が出来ないようになっています。VBAでテキストボックスへの入力を同じように規制する場合、Change()を使って1文字づつチェックするルーチェンを組むしかないのでしょうか? 取って置きの手法がありそうな気がしますが、思いつきません。どなたか?助けて頂けないでしょうか?よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。Wendy02です。 テキストボックスは、コントロールツールというところにしましょうか? >VBAでテキストボックスへの入力を同じように規制する場合、Change()を使って1文字づつチェックするルーチェンを組むしかないのでしょうか?(←○ルーチン =routine) 1文字ずつという方法もないとはいいませんが、例えば、同名を付けられないとなると、On Error トラップでエラーから、手っ取りばやいし、負担も少ないように思いますね。なお、例をあげておきます。 例: Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then On Error GoTo TextBox1_Error  ActiveSheet.Name = TextBox1.Text End If TextBox1_Proc_Exit:  Exit Sub   TextBox1_Error: MsgBox "その名称は出来ませんので、修正しなおしてください。", vbCritical  TextBox1.SelStart = 0  GoTo TextBox1_Proc_Exit: End Sub

vba_minarai
質問者

お礼

merlionXX様、 Wendy02様有難うございます。 やはり、ご指導通り、エラートラップにて処理しようと思います。ダミーのシートを作ってTextを処理しようと思いました。 有難うございました。また、のご指導よろしくお願いします。尚、点数に差を着けなければならないことをここにお詫びいたします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.5

Wendy02さん、便乗質問にも拘わらず早速の回答ありがとうございます。 >どこか、問題がありますでしょうか? 問題はどこにもありません。 ただ、ご提示のコードではNo.1さんのコードと違って 正常終了、エラーに関係なくExit Subへ行くようになっていますので、 ●の部分はいらないのでは、との素朴な疑問からの質問でした。 貴重なお時間を割いていただき感謝いたします。 ありがとうございました。

vba_minarai
質問者

お礼

merlionXX 様、Wendy02様ご指導有難うございます。onlyrom様。僕も、同じようなこと(便乗質問したいと)思うこと多かったので便乗質問大歓迎です。 ご指導頂いた内容を踏まえ現在悩んでいる所です。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは、onlyromさん。 >●の部分はなぜ必要なのでしょうか? Excelでは、あまり見かけないパターンかもしれませんね。それは、On Error トラップの 1つのパターンです。どこか、問題がありますでしょうか? 単に、  On Error Goto ErrorHandler で、 '-略- ErrorHandler:  If Err() > 0 Then  MsgBox "*****"  End If だけでもよいのです。これぐらい短いと、ほとんど処理スピードは変りません。ただ、Error ルーチンを、1つのプロシージャを正常な流れから分岐させ、エラー処理として、別の手続きをしています。正常な流れなら、Exit Subで終わります。

全文を見る
すると、全ての回答が全文表示されます。
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

横から便乗質問お許し下さい。 No.2の回答者Wendy02さんお訊ねします。 ご提示のコードの ● TextBox1_Proc_Exit:   Exit Sub   TextBox1_Error: ● GoTo TextBox1_Proc_Exit: End Sub ●の部分はなぜ必要なのでしょうか? ご教授ください。 宜しくお願いいたします。  

全文を見る
すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

たとえばこんな感じ? (シート名を変更できない場合、再入力させます) Sub TEST01() line1: On Error GoTo line2 ans = InputBox("Sheet名入力") ActiveSheet.Name = ans Exit Sub line2: MsgBox "名前が不適切です。" GoTo line1 End Sub

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAワーク シート名前を付けて作成

    エクセルVBAにて 原紙とゆう名前のワークシートをコピー処理して 入力フォームにテキストボックス1と2があり コピーした原紙とゆうワークシート名から テキストボックス1と2に入力した項目が 合わさってワークシート名に変更する方法はあるのでしょうか? 例)テキストボックス1に 123   テキストボックス2に 456 コマンドボタン1をクリックすることによって ワークシート名が123456となるようにしたいのですが? 宜しくお願いいたします。

  • VBA:シートの追加とセルからの名前変更

    いつもお世話になっています。 ExcelのVBAで実装可能かと思うのですが、ご教授願いたく思います。 今回、大量のシートの追加(最後尾)とその追加したシートの名前を 変更するVBAを制作したいと思ったのですが シートの追加とシートの名前変更(ソースの直接記入)までは、 なんとか出来ましたが 名前を、とある範囲のセルにある文字列に変更するという事がしたいです。 例えばE1:E5までの範囲にある文字列 「あ」 「い」 「う」 「う」 「う」 とあったら、かぶっているものは除き、「あ」「い」「う」という名前のシートを3つ追加したいという事です。 上記、もし実装可能であればご教授お願いします。 また、可能だけどokwaveの入力欄では面倒だし説明しづらい、という回答でもokです。 その場合、参考サイトなど教えて頂けると幸いです。 何卒よろしくお願いいたします。

  • VBAユーザーフォームで

     エクセルVBAでユーザーフォームより、テキストボックスで入力させたものをセルに表示させようとしています。  テキストボックスは1と2があり、テキストボックス1で入力した値の最初の5文字+固定値をテキストボックス2に自動で入力(表示)したいのですがなかなかうまくいきません。(自動入力後、手動で一部修正します。)  VBAをはじめたばかりの初心者ですが、どうぞよろしくお願いします。

  • VBA シート操作

    エクセル2002使ってます。 VBAにて雛型のシートを27枚コピーし、集計用のシートに入力されている名簿の名前の通りにシート名を変更したいと思い、式を組みました。 しかし、雛型のコピーまではできましたが、シート名を上手く変更できません。 シート名を変更したいシートは雛型(2)~雛型(28)の名前で、ブックの一番左から並んでます。 これをシート名変更するにはどうすればいいでしょうか?

  • エクセルVBA ワークシート操作について

    エクセル2000 VBAで ワークシートが左から順番に 入力フォーム⇒加工費単価マスタ⇒出荷日報(原紙)と 3個あり4個目に出荷日報(原紙)をコピーしたワークシートを 入力して⇒テキストボックス1 (日付入力します出来れば、日付入力の指定方法⇒テキストボックスの入力制限方法も教えていただきたいです)に入力した名前を ワークシートに付けて保存したいのですが? 翌日は また左から4番目の位置にコピーされ 右に行くほど古い日付の順番にしたいです。 説明が不足していましたら連絡お願いします。

  • エクセルのVBA

    エクセルのVBAを教えて頂きたいのですが。 Sheet1にテキストボックスが200個張り付いています。 テキストボックスの番号は1番から200番までです。 1つのテキストボックスに1文字のみ表記されています。 このような状態で、テキストボックスの文字が「(」であるものを見つけたら、以後、「)」を見つけるまでその間の文字の色を赤にするVBAを教えてもらいたいのですが。(「(」「)」も赤にします) あいうえおかきくけ(こさしす)せそたちつてとなにぬねの(はひふ)へほ 上記の場合は (こさしす)(はひふ) が赤になります。 宜しくお願いします。

  • ExcelのVBAで名前を付けて保存

    ExcelのVBAで名前を付けて保存としたいのですが、ユウザーフォーム上のテキストボックスに保存する名前を入力したらコマンドボタンでブックが終了するマクロを教えてほしいのですが。 よろしく御教授願います。

  • VBAでvlookupみたいに

    いつもわかりにくい質問ないようですみません。 今回もどういっていいわからないので、やりたいことを順を追って 書きますので、教えてください。 質問1) (1)VBAユーザーフォーム1でテキストボックスに入力 例)テキストボックス1・・・1200   テキストボックス2・・・えんぴつ これをエクセルシート1に反映させる。(下のように)    A    B 1 1200 えんぴつ 2   (2)ユーザーフォーム2でテキストボックスに  (1)のテキストボックス1で入力した数字を入力すると、  (1)のテキストボックス2の文字列を自動で反映してくる。 ・・・のように。 もうひとつ。 質問2) エクセルセル内のデータをVBAのテキストボックスに読み込む際、 元のエクセルセルに書式設定をしている場合に、書式ごと読み込むにはどうしたらいいですか? エクセルセル・・・吉田様(様は書式設定) テキストボックスに読み込んだ場合は、「吉田」のみが読み込まれてしまいます。 よろしくお願いします。  

  • Excel-VBAで新しいシート挿入直後にシートの名前を変更する。

    お世話になります。 Excel-VBAで、Sheets.Addメソッドで、sheetを挿入すると、都度sheet1とかsheet2とか、何回目のシート挿入を実行したのかによって勝手にsheet番号を振ってワークシートが出来ると思いますが、挿入直後にシートの名前を変更するのはどういうコードを書けば良いのでしょうか?

  • エクセルSheetのTextBoxのTextを参照するには??

    エクセルSheetのTextBoxのTextを参照するには?? アクセス(v2010)のVBAで、エクセルファイルのSheet上の テキストボックスの文字列を設定・変更したいと思います。 Cellについては、objSheet.Range("M2").Value で できますが・・・・ ご教示ください。

専門家に質問してみよう