Excel VBA質問箱 IV

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

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


44888 / 76732 ←次へ | 前へ→

【36853】Re:Arrayで作成したいのですが・・・
発言  ponpon  - 06/4/16(日) 12:08 -

引用なし
パスワード
   >雛形のシート増とシート名設定について
>
>"作業シート" A列に次のようにシート名が書かれていますが、
>一部シート名が歯抜けになっている場合(10行目のように)、
>"売上実績"(雛形)のシートコピーを増やし、シート名を
>それぞれシートタブに表示するコードを作成しました。
>(シート名の数は増減します)
>
>これをArrayを使った構文に作成する事が出来ましたら
>アドバイスいただけませんでしょうか?

Arrayを使った構文を配列を使ってというように解釈して
方法はいろいろあると思いますが、・・・
Dictionaryを使って考えてみました

Sub test()
  
  Dim WS  As Worksheet
  Dim myDic As Object
  Dim myKey As Variant
  Dim r   As Range
  
  Application.ScreenUpdating = False
  
  '作業シート、売上実績以外のシートの削除
  For Each WS In ThisWorkbook.Worksheets
    If WS.Name = "作業シート" Or WS.Name = "売上実績" Then
    Else
     Application.DisplayAlerts = False
     WS.Delete
     Application.DisplayAlerts = True
    End If
  Next
  
    '辞書にA列のシート名をKeyにして入れ配列の作成
  Set myDic = CreateObject("Scripting.Dictionary")
  With Sheets("作業シート")
    For Each r In .Range("A6", .Range("A65536").End(xlUp))
      If Not IsEmpty(r.Value) Then
       myDic(r.Value) = Empty
      End If
    Next
    
    '辞書が0でなかったら、売上実績をコピーして、名前をKeyにする
    If myDic.Count > 0 Then
      For Each myKey In myDic.Keys
        Sheets("売上実績").Copy after:=ActiveSheet
        ActiveSheet.Name = myKey
      Next
    End If
  End With
  Application.ScreenUpdating = True

End Sub
3 hits

【36852】Arrayで作成したいのですが・・・ Mik 06/4/16(日) 10:55 質問
【36853】Re:Arrayで作成したいのですが・・・ ponpon 06/4/16(日) 12:08 発言
【36855】Re:Arrayで作成したいのですが・・・ Mik 06/4/16(日) 16:39 お礼
【36854】Re:Arrayで作成したいのですが・・・ Kein 06/4/16(日) 13:48 回答
【36856】Re:Arrayで作成したいのですが・・・ Mik 06/4/16(日) 16:47 お礼

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