プロが教えるわが家の防犯対策術!

Sheet1の名前を「利用者情報」とし、4列目に1番目の方の情報としてB4に名前、C4に起床時の薬、D4に朝食前など。2番目の情報を5列目、3人目の情報を6列目、と約200名あります。
Sheet2以降は部屋番号「101」、Sheet3は「102」と作っています。「101」のシートには所定の用紙があり、「利用者情報」の4列目の情報を自動的に反映させたいです。反映させる内容は、名前と薬があれば〇、なければ空白。
わかりにくいですが、よろしくお願いします

質問者からの補足コメント

  • B列に利用者の名前、C~Oまでその方の情報をコントロールフォームチェックボックスを作成しています。B4の利用者の情報としてC4のチェックボックスを入れると、P4に0と表示。D4にチェックを入れるとQ4に0と表示。このように、C~Oのチェクボックスを入れるとP~AAに表示されるようにしています。

    「(再度投稿)Sheet1に200名の個人」の補足画像1
    No.2の回答に寄せられた補足コメントです。 補足日時:2016/10/18 14:47
  • 利用者情報を基に、シート101は「利用者情報のB4」の髙橋さんの情報を反映させたいと考えています。101のU42は利用者情報のA4を参照。101のW42は、利用者情報のB4参照することで、部屋番号と、名前が入力できるようになっています。利用者情報のC4にチェックが入ると、P4は0となり、101のB44は、〇と表示。数式としては=IF(利用者情報!$P$4=0,"○","")としています。利用者情報のD4にチェックが入ると、Q4は0となり、101のB45は、〇と表示。数式としては=IF(利用者情報!$Q$4=0,"○","")。これを繰り返し、101の28(日)の〇や空白は作ることはできました。29日のF44は28日のB44を参照。数式は=$B$44。29日のF45は、28日のF45を参照=$B$45。を繰り返し、29日は完成。その29日をコピペし、1カ月分作成したものが、添付写真です。

    「(再度投稿)Sheet1に200名の個人」の補足画像2
      補足日時:2016/10/18 15:14
  • 3回目の連続補足です。

    この101のシートを複製し、102、103、104、105と作りたいのですが、102は伊藤さんの情報、103は長野さんの情報といったように、複製をするたびに自動的に参照位置を変えたい!というのが、最終的な質問となります。

    長くなりましたが、よろしくお願いします!

      補足日時:2016/10/18 15:15
  • ママチャリさんありがとうございます。
    教えていただいた、頂いた内容を利用者情報のコードにコピペして、マクロ実施を行いました。そして、見事に101をコピーし102を作ることができました!
    もう少しお聞きしたいのですが、仮にこのコードが「102作成用」として、次の「103」を作るためにはコードはどこの部分を変更したらよいでしょうか?思うに、room No=102をroom No=103でマクロ実施したのですが、できませんでした。
    よろしくお願いします

    No.3の回答に寄せられた補足コメントです。 補足日時:2016/10/19 13:35
  • ママチャリさん、”103を作る用にマクロを修正したと”これは自分の勘違いでした。すみません。B5以降に名前が入力されていなかったので、部屋番号のシートが作成できていなかったようです。

    B5以降に名前を入れ、マクロ実行すると添付写真のようにファイルを開く画面が出てしまうのですが、これは普通のことなのでしょうか?なんのファイルを開いていいかわからないので、キャンセルを押すと102が作成され、また同じ画面がでるのでキャンセルすると103が作成と、、なります。
    よろしくお願いします

    「(再度投稿)Sheet1に200名の個人」の補足画像5
    No.4の回答に寄せられた補足コメントです。 補足日時:2016/10/20 14:48
  • 4列目の情報として、起床時、朝食前、朝食後、、、、13項目にフォームコントロールチェックボックスを付けています。レ点がなければ-1、レ点ありで0という設定をしています。起床時はC4であるため、0 or-1の表示を13個離れたP4に表示させています。
    Sub チェック1_Click()
    With ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(0, 13)
    .Value = Not .Value
    End With
    End Sub

    同様のマクロをSub チェック1_Click()~Sub チェック13_Click()作成しています。
    これが何か関係しているのでしょうか?

    「(再度投稿)Sheet1に200名の個人」の補足画像6
    No.5の回答に寄せられた補足コメントです。 補足日時:2016/10/20 21:57

A 回答 (6件)

質問の内容や条件などがわかりません。


これも関係しているのでしょうか。 https://oshiete.goo.ne.jp/qa/9442911.html
他にも関係しているのがあるのでしょうか。
特に不都合がないのであれば、質問履歴を公開した方が、回答者のためには便利がよいのではないかと思います。 https://oshiete.goo.ne.jp/profile/542264877
なお、「1か月分の表を作成しています」というのは、1ヶ月分を1つのbookにし、101~各部屋のsheetは、そのsheet中で1ヶ月分のサービス提供状況が一覧になるようになっているのでしょうか。そして、7行で1日分の記録になっていて、ある日にちのデータが、ある部屋のsheetの「B44、B45、D45、B46、D46、B47、D47、B48、B49、C49、D49、E49、B50」に、「利用者情報」sheetのA列の部屋番号を参照して、(日にち情報はどこにあるのか)、部屋番号該当行のC列~O列にあるチェックを参照して、○か空白にするのでしょうか。
そうなると、「利用者情報」sheetのデーター(チェック)は、日が翌日になるときクリアするが、各部屋の既存の○はそのままに残すことになるのでしょうか。
そうであれば、単純なセルリンクは使えないように思います。
また月の途中で、利用者が入れ替わったり、部屋を移ることはないのでしょうか。 利用者毎にではなくて、部屋ごとのサービス提供状況が残ればよいのでしょうか。
月が変わるときに、新規に(?)bookを造り直すのでしょうか。出来れば前の月の(A列=部屋番号、B列=利用者氏名)を再利用してBOOKを造り直すのでしょうか。
たぶん、各部屋のsheetの上の方の行とか、他にも様式が設定されているのだとおもいますが、何を再利用し、なにを再利用しないのかがわからないと、回答もしにくいと思います。
    • good
    • 1

こんな感じでしょうか。


添付の図のように、「利用者情報」シートと「101」シートを手作業で作成します。
「101」シートのB1~B3セルは数式で「利用者情報」シートを参照しています。
【B1】=IF(利用者情報!$B$4="","",利用者情報!$B$4)
【B2】=IF(利用者情報!$C$4="","",利用者情報!$C$4)
【B3】=IF(利用者情報!$D$4="","",利用者情報!$D$4)

「102」以降のシートは、マクロで作成しますので、手作業で作る必要はありません(逆に存在しているとエラーになります)。

【マクロの処理概要】
「101」シートをコピーして、「102」シートを作る。
「102」シート内の数式が設定されているセルについて、数式の参照先の行番号(利用者情報!R4)を次の行(利用者情報!R5)にReplaceする(Replaceする際、R1C1形式の方が便利だったので、こんな書き方になっています)。
上記の処理を「利用者情報」シートの最終行分まで繰り返す。

Sub sample()
Dim i As Long
Dim RoomNo As Long
Dim ws As Worksheet
Dim Rng As Range
RoomNo = 102
With Sheets("利用者情報")
For i = 5 To .Cells(Rows.Count, "B").End(xlUp).Row
Sheets("101").Copy After:=Sheets(Sheets.Count)
Set ws = ActiveSheet
ws.Name = RoomNo
RoomNo = RoomNo + 1
For Each Rng In ws.Cells.SpecialCells(xlCellTypeFormulas, 23)
Rng.FormulaR1C1 = Replace(Rng.FormulaR1C1, "利用者情報!R4", "利用者情報!R" & i)
Next Rng
Next i
End With
End Sub
「(再度投稿)Sheet1に200名の個人」の回答画像2
この回答への補足あり
    • good
    • 0

No.2 ママチャリです。

長々と補足コメントご苦労様です。
ただ、その辺も加味して、No.2の回答を書いたつもりなのですが、何か不足がありましたでしょうか。
No.2の例では、B1~B3までしか式が入っていませんが、プログラム上は幾つあっても対応できるようになっています。
プログラムコードを熟読して、しかっり理解して、ご自分のシートに適用してみて下さい。
ご検討をお祈りします。
この回答への補足あり
    • good
    • 0

ご提供したマクロは、102だけを作るマクロではありません。

B5、B6、B7・・・と値が入力されていれば、すべて作られるはずなのですが、うまく動かなかったでしょうか?

念のため言っておくと、このマクロは102,103,104・・・とシートを作成します。シートができた状態で再実行すると、また102、103・・・とシートを作りに行くのですが、同名のシートは作れないのでエラーになります。再実行する際は、最初に作られたシートを削除しておく必要があります。

ちなみに、103を作る用にマクロを修正したとのことですが、そのコードはどんなのでしょうか?興味があるので、補足にアップして頂けますか。
この回答への補足あり
    • good
    • 0

「ファイルを開く」ウインドウが表示されるということですが、普通じゃないと思います。


もしかして、余計なマクロが入っていたりしませんか?
例えば、Workbook_SheetActivateイベントプロシジャに余計なマクロが書かれているとか…。
この回答への補足あり
    • good
    • 0

それは関係なさそうですね。


ちなみに、手動で次の操作をしても何か起きそうな気がするのですが、いかがでしょうか?
①単純に新しいシートを作る。
➁101をコピーして新しいシートを作る。

ここから先は、kotasannさんが作ったマクロの問題のようなので、これ以上はお役に立てないかもしれません。あしからず…。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!