Excel VBA質問箱 IV

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

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


69987 / 76733 ←次へ | 前へ→

【11259】Re:変数の指定方法について
回答  かみちゃん  - 04/3/3(水) 23:16 -

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

>>このコードだと氏名一覧シートのA1〜A108に書かれているシート名が存在しない(たとえば空白セルとか)とエラーになります。
>
>シート名または氏名一覧シートの名前の前後どちらかにスペースが含まれていたりしないですか?
>シート名にスペースが入っているとタブの大きさが違うので一目でわかりますが、セル内のデータは後ろにスペースが入っていると見ただけではわからないので要注意です。

シート名存在チェック関数を思い出したので、紹介しておきます。
シート名が存在した場合には、氏名一覧のシートの右側に○、存在しない場合は×を表示するようにしています。
また、変数の宣言などもついでにしてあります。

Option Explicit

Sub 転記()
 Dim i As Integer
 Dim SheetName As String
 
 For i = 2 To 1179 Step 11
  SheetName = Worksheets("氏名一覧").Cells((i - 2) / 11 + 1, 1)
  If chkSHEET(SheetName) Then
   Worksheets("氏名一覧").Cells((i - 2) / 11 + 1, 2) = "○"
   With Worksheets(SheetName)
    .Range("C3") = "=集計!b" & i
    .Range("D10") = "=集計!e" & i + 1
    .Range("E10") = "=集計!g" & i + 1
    .Range("G10") = "=集計!k" & i + 1
    .Range("H10") = "=集計!p" & i + 1
   End With
  Else
   Worksheets("氏名一覧").Cells((i - 2) / 11 + 1, 2) = "×"
  End If
 Next i
End Sub

'シート名存在チェック
'http://www.ken3.org/backno/backno_vba19.html#92
' シート名を受け取り、
' 判断結果をTrue , Falseで返す関数
'
'関数名:  chkSHEET
'入力値:  シート名文字列
'戻り値 :シートの有無・結果
'処理概要: シート名をパラメーターで受け取り、
'     アクティブなブック内に存在するかを確認し、
'     結果のTrue , Falseを戻り値で返す
Function chkSHEET(strSNAME As String) As Boolean

   Dim MyObject As Object

   'ブック内のシート名の比較を行う
   For Each MyObject In ThisWorkbook.Sheets
     '.Nameプロパティのシート名と受け取ったstrSNAMEを比べる
     If MyObject.Name = strSNAME Then
      chkSHEET = True '名前が一致したのでTrueをセット
      Exit Function  'もうすること無いので関数を抜ける
     End If
   Next

   '一つも一致しなかったので、Falseをセット
   chkSHEET = False

End Function

しかし、そもそも、「氏名一覧」と「集計」シート以外の全シートを処理するという方法ではいけないのでしょうか?

1 hits

【11251】変数の指定方法について 初心者です 04/3/3(水) 21:23 質問
【11257】Re:変数の指定方法について かみちゃん 04/3/3(水) 22:22 回答
【11258】Re:変数の指定方法について アイエネス 04/3/3(水) 22:36 回答
【11259】Re:変数の指定方法について かみちゃん 04/3/3(水) 23:16 回答
【11297】ありがとうございます。 初心者です 04/3/4(木) 21:08 お礼

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