• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル シートのコピーとシート名の問い合わせ)

エクセルシートのコピーとシート名の問い合わせ

このQ&Aのポイント
  • エクセルで日報を作成する際のシートのコピーとシート名の問い合わせについて質問です。
  • PC初心者向けに簡単な日報作成を行っていますが、シートを挿入する際にシート名をダイアログボックスで問い合わせる方法が知りたいです。
  • 既存のコマンドボタンを使用し、シートをコピーする際にシート名の入力を求めるダイアログボックスを実装したいです。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。KenKen_SP です。 ご希望の動作自体は数行のコードで可なのですが、、エラー処理を含 めると結構長いコードになりますねー。しかし、 > PC初心者の方がいるので、なるべく簡単なものを作ろうとしています。 ということですから、エラー処理をしっかり行った方が良いでしょう。 マクロが止まってエラー表示されると混乱が起こりそうです。 Private Sub CommandButton1_Click()   Dim strSheet As String   Dim FLAG   As Boolean   Dim blnCANCEL As Boolean   Dim strBACKUP As String   Dim DUMMY   As String      Do     strSheet = Application.InputBox( _       Prompt:="シートの名前を入力してください" & vbCr & vbCr & _           "キャンセルでシートの挿入を取り消します", _       Type:=2)     If UCase$(strSheet) = "FALSE" Then       blnCANCEL = True       Exit Do     End If     'ここからエラー処理------------------------------------     On Error Resume Next     FLAG = True     '同名シートチェック     DUMMY = ThisWorkbook.Sheets(strSheet).Name     If Err.Number = 0 Then       FLAG = False     Else       Err.Clear       'シート名に使えない文字がないかチェック       Application.ScreenUpdating = False       With ThisWorkbook.ActiveSheet         strBACKUP = .Name         .Name = strSheet         If Err.Number > 0 Then FLAG = False         .Name = strBACKUP       End With       Application.ScreenUpdating = True     End If     'シート名判定結果     If FLAG = False Then       MsgBox "既に同名シートがあるか、シート名として不適切です。", vbCritical     End If     On Error GoTo 0   Loop Until FLAG      'キャンセル判定   If blnCANCEL Then Exit Sub      'シート追加   With ThisWorkbook     On Error Resume Next     Application.ScreenUpdating = False     .Sheets("月").Copy After:=.Sheets(.Sheets.Count)     If Err.Number > 0 Then       Application.ScreenUpdating = True       MsgBox "コピー元のシートが見つかりません", vbCritical       Exit Sub     Else       .ActiveSheet.Name = strSheet     End If     On Error GoTo 0   End With End Sub

noname#132207
質問者

お礼

お答えありがとうございました。 私がやりたいことを全て式にしていただき、大変助かりました。 もう、ばっちりすぎて質問したこちらがびっくりです。 20ポイントしかお礼できないのが残念です。ホントは500点ぐらいお礼したい感じです。 また、お聞きすることがあると思いますが、その時はまたよろしくお願い致します。

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

関連するQ&A