Excel VBA質問箱 IV

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

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


4289 / 13644 ツリー ←次へ | 前へ→

【57420】シート名の検索 おぢちゃん 08/8/21(木) 12:13 質問[未読]
【57421】Re:シート名の検索 かみちゃん 08/8/21(木) 13:41 発言[未読]
【57424】Re:シート名の検索 おぢちゃん 08/8/21(木) 15:45 お礼[未読]
【57422】Re:シート名の検索 ひげくま 08/8/21(木) 14:01 回答[未読]
【57425】Re:シート名の検索 おぢちゃん 08/8/21(木) 15:52 お礼[未読]
【57432】Re:シート名の検索 Abebobo 08/8/22(金) 9:04 発言[未読]
【57471】Re:シート名の検索 おぢちゃん 08/8/26(火) 7:56 お礼[未読]

【57420】シート名の検索
質問  おぢちゃん  - 08/8/21(木) 12:13 -

引用なし
パスワード
   おたずねします。

同一BOOK内に複数のシートがあり,新規シート作成時に
新規シートと同一名称の既存シートがある場合には
その既存シートを開き,無い場合には新規名称でシートを作成したいのですが,

"もし同一シート名のシートがあれば"←この記述がわかりません。
そのシートを開き
無ければ
新規シートを作成


どなたか御教示いただけますか。
よろしくお願いします。

【57421】Re:シート名の検索
発言  かみちゃん  - 08/8/21(木) 13:41 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>新規シートと同一名称の既存シートがある場合には
>その既存シートを開き,無い場合には新規名称でシートを作成したいのですが,
>
>"もし同一シート名のシートがあれば"←この記述がわかりません。

以下はのような感じでできると思います。

Sub Sample()
 If ChkSheet("Sheet1") Then
  MsgBox "Sheet1は、存在します"
 Else
  MsgBox "Sheet1は、存在しません"
 End If
End Sub

'シート名存在チェック関数
Function ChkSheet(strWS As String) As Boolean
 Dim ws As Worksheet
 
 On Error Resume Next
 Set ws = Worksheets(strWS)
 On Error GoTo 0
 If Not ws Is Nothing Then
  ChkSheet = True
 Else
  ChkSheet = False
 End If
End Function

【57422】Re:シート名の検索
回答  ひげくま  - 08/8/21(木) 14:01 -

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

▼おぢちゃん さん:
>その既存シートを開き

既存シートを開く、の意味をちゃんと把握していないのですが・・・

こんな感じでどうでしょう?

  Dim Sh
  For Each Sh In Worksheets
    If Sh.Name = "新規名称" Then
      Sh.Activate '既存シートを開く?
      Exit For
    End If
  Next Sh

  'この時点で、"新規名称"シートが既存であれば、Shに既存シートがSetされており、
  '"新規名称"シートがなければ、Shには何もSetされていない。

  If Sh Is Nothing Then
    Worksheets.Add '新規シート作成処理
  End If

【57424】Re:シート名の検索
お礼  おぢちゃん  - 08/8/21(木) 15:45 -

引用なし
パスワード
   ありがとうございます。
わけもわからずコードを入力してみましたところ,希望通りの動作を確認できました。
これからコードの内容を理解します…。(トホホ)

【57425】Re:シート名の検索
お礼  おぢちゃん  - 08/8/21(木) 15:52 -

引用なし
パスワード
   コード記述してみましたが…
どうもいろんなところにハイライトが付いてしまいます。
たぶん私の記述が拙いのですが,どこが不整合なのかわかりません。
検証してみます。
また不明な点があった場合,ご教授ください。
ありがとうございました。

【57432】Re:シート名の検索
発言  Abebobo  - 08/8/22(金) 9:04 -

引用なし
パスワード
   おぢちゃん さん こんにちは
かみちゃんさんのコードの勉強のつもりで書きました。
*かみちゃんさんへ、勝手に使ってしまいました。

’コマンドボタンのモジュール
Private Sub CommandButton1_Click()
Dim NewS_N As String
Dim Sh   As Worksheet
Dim NewSh  As Worksheet

NewS_N = Application.InputBox _
     ("新規シート作成", "新規シートの名前の入力")
If ChkSheet(NewS_N) Then
 MsgBox NewS_N & "  は、存在します"
 Worksheets(NewS_N).Activate
Else
 MsgBox NewS_N & "  は、存在しません"
 Worksheets.Add(after:=Worksheets(Worksheets.Count)) _
      .Name = NewS_N
End If
’---------------------------

’標準モジュール
Function ChkSheet(strWS As String) As Boolean
 Dim ws As Worksheet

 On Error Resume Next
 Set ws = Worksheets(strWS)
 On Error GoTo 0
 If Not ws Is Nothing Then
  ChkSheet = True
 Else
  ChkSheet = False
 End If
End Function
’以上

インプットボックスにシート名を入れます。

【57471】Re:シート名の検索
お礼  おぢちゃん  - 08/8/26(火) 7:56 -

引用なし
パスワード
   返信遅れました。遅い夏休みを取っていました。
ありがとうございます、参考にさせていただきます。
VBAは仕事の合間にチョコチョコ触る程度で、集中して勉強できないのがつらいです。
このサイトのおかげで挫折せずにいます。

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