• ベストアンサー

エクセルで当番表を作ろうと、探していると、http://www.mat

エクセルで当番表を作ろうと、探していると、http://www.matsubarase.com/misc_program/Pipet-HTU.phpと言うサイトを見つけました。自動作成マクロですごく便利なのですが、マクロのpassがある為に、アレンジできません。又、勉強にもなりません。こんなの簡単だと思われる方はたくさんおられると思いますが、どなたか教えて頂けませんか?宜しくお願いします。

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

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

そのマクロは、マクロ学校1年生卒業で、難しいことは何もしていません。 ただ、リンク先のツールは、kt関数がないので私の環境では動きません。祝日自体は、政府の来年の発表があるまでは、祝日さえ決まらないのですから、年間のリストを作っておけば良いのです。だから、kt 関数は必要ありません。 >マクロのpassがある為に、アレンジできません。 そういう考え方は改めたほうがよいです。他人のものでも、自分のマクロでも半年経てば別人のマクロで、分かりません。ご自身で作ることをお薦めします。 表だけみてマクロも作ってみたのですが、今回のサイトの改編で私の作ったプロシージャ全部は入らないです。もう、ここのサイトで完全にはマクロの質問はダメかもしれません。 マクロは三つに分かれています。[カレンダーの枠組みのフォームを作る][日付を入れる][人名を入れる]その内の人名を入れるマクロだけ入れておきます。 '------------------------------------------- Sub PutInNames()   Dim arNames As Variant   Dim rng As Range   Dim StartRng As Range   Dim i As Long   Dim j As Long   Dim SetteiSh As Worksheet   Dim n As Long, m As Long   Dim Doyobiflg As Boolean     '=========================================   Set SetteiSh = Worksheets("設定")   Set rng = SetteiSh.Range("D5:D12") '名前リスト   Doyobiflg = False '日曜/祭日のみ True   '=========================================   With SetteiSh     If Application.CountA(rng) < 2 Then       MsgBox "名前リストがないかもしれません。", vbExclamation       Exit Sub     End If          arNames = rng.Value '名前リスト     arNames = Application.Transpose(arNames)     m = UBound(arNames)     For i = 1 To rng.Rows.Count       If rng.Cells(i, 2).Value <> "" Then         j = i '最初の人の順番         Exit For       End If     Next i     If i > rng.Rows.Count Then       MsgBox "最初の印がありません。", vbCritical       Exit Sub     End If    End With     '-------------------------------------------     With ActiveSheet 'アクティブシート       '書き込み       Set StartRng = .Range("A6")       n = j '最初の人の順番の移し替え       With StartRng         For i = 1 To 50           With .Cells(1 + Int((i - 1) / 7) * 3, ((i - 1) Mod 7) + 1)             If Val(.Offset(-1).Value) > 0 Then               '日曜日か土曜日含むかの判定               If .Offset(-1).Font.ColorIndex <= IIf(Doyobiflg, 3, 1) Then                 .Cells(1).Value = arNames(n)                 n = n Mod m + 1               Else                 .Cells(1).ClearContents               End If             End If           End With         Next       End With     End With End Sub

その他の回答 (2)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

掲載されたサイトの一番下に ソースが欲しい方はメールでお知らせください。 連絡先はこちらです。 と表示されているので連絡してみてはいかが? あと、老婆心ながら 他の人が作成したマクロをアレンジ出来る位VBAに精通しているのであればご自分で作った方が早いと思いますよ サイトにある表は通常のカレンダー作成と同じ要領で可能、日にち欄に曜日や六曜表示を行う手法を担当者名を置き換えるだけで済みそうです。

  • may0430
  • ベストアンサー率54% (57/104)
回答No.1

こんばんは^^ >マクロのpassがある為に、アレンジできません。 そのサイトに行ってみましたが、 「Excelのアドイン指定のpassが違っている為に、マクロが実行されません」 ということでしたら、 アドインフォルダは、WindowsXPの場合は、 C:\Documents and Settings\ユーザ名\Application Data\Microsoft\AddIns になると思います。

alba5678
質問者

補足

有難う御座います。マクロ自体は起動しますしいいのですが、自分でマクロをマイナーチェンジして使いたいのです。題名を変えたり、土曜日を空白にしたりと・・・因みにOSはvista ultimateです。宜しくお願いします。

関連するQ&A