Sheet1のA列に「髙橋・鈴木・加藤」など、100名ほどの名前があり、1行目~100行目までその方の年齢や個人情報があります。
Sheet2を作り、Sheet2のA1に髙橋様、
Sheet3を作り、Sheet3のA1に鈴木様
Sheet4を作り、Sheet4のA1に加藤様、、、、、Sheet100まで作りたいのですが、コピーごとにSheetのA1に名前を入力するのが大変であるため、マクロなど良い方法はありませんでしょうか?
よろしくお願いします
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
『シート「利用者情報」のC4のレ点チェックがあれば、「101号室」のB43に「○」が反映』はできているとのことですが、これはどんな感じで実装されているのでしょうか?
チェックボックスとどこかの作業用セルがリンクされていて、「101号室」のB43はその作業用セルを参照して「○」を表示していると推測しますが、作業用セルの位置(Z4とか)および、「101号室」のB43セルの数式を補足していただけないでしょうか。残念ながら補足コメントの画像からでは推測できませんでした。
No.4
- 回答日時:
続けてお邪魔します。
No.3のコードは質問者様が作られているような「チェックボックス」に対応するコードではなく、
「利用者情報」Sheetのセルそのものをダブルクリックすると
マクロが実行されるコードですので、セルの上にチェックボックスがかぶさっているとまともな動きになりません。
すなわちチェックボックスは全く使わない方法の一例です。
そしてあくまで流れの説明だけでしたので、表の配置が1行・1列でも違えばとんでもない動きになってしまいます。
画面を最大限拡大してみましたが、表のレイアウトが全く分かりません。
必要なのは
① 「部屋番号」シートを決定する要素
② 「部屋番号」シートの行を決定する要素
③ 「部屋番号」シートの列を決定する要素
以上の3点が判らないとお手上げです。
おそらく「部屋番号」シートのレイアウトはすべて統一されているでしょうから
「利用者情報」シートと「部屋番号」シートのレイアウトの一部分だけでも判れば
具体的なアドバイスができるかもしれません。m(_ _)m
No.3
- 回答日時:
No.1・2です。
流れだけの説明ですが、こちらで勝手にやってみました。
「利用者情報」・各部屋のシートは↓の画像のような配置になっている前提のコードです。
行番号がずれるというコトはおそらく日付によって行番号が変わる!と解釈しました。
① 日付セルがどこかにないと各シートの行の判別ができないので
日付で行番号を取得する。(A2セルを日付としています)
② 項目名で列番号を取得する。
としています。
そして「利用者情報」シートの5~E12セルで反応するようにしています。
↓のコードを「利用者情報」シートのシートモジュールにしてください。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'この行から//
Dim myRow As Long, myCol As Long, sN As String
Dim c As Range, r As Range, wS As Worksheet
If Intersect(Target, Range("C5:E12")) Is Nothing Then Exit Sub '←範囲は実情に合わせる
Cancel = True
With Target
sN = Cells(.Row, "A")
Set wS = Worksheets(sN)
'▼各シートの行番号を取得//
Set r = wS.Range("A:A").Find(what:=Format(Range("A2"), "m/d"), LookIn:=xlValues, lookat:=xlWhole)
'↑「"m/d"」の部分は「部屋番号」シートの日付表示形式にする
myRow = r.Row '←行番号が決定
'▼各シートの列番号を取得//
Set c = wS.Rows(10).Find(what:=Cells(4, .Column), LookIn:=xlValues, lookat:=xlWhole)
'↑「10」の部分は各シートの項目が入っている行
myCol = c.Column '←列番号が決定
If .Value = "" Then
.Value = ChrW(10003) '←一応「チェック」にしているが他の印でも良いのでは・・・
wS.Cells(myRow, myCol) = "○"
Else
.Value = ""
wS.Cells(myRow, myCol) = ""
End If
End With
End Sub 'この行まで//
これで「利用者情報」SheetのC5~E12セル(←範囲は実情にあわせる)をダブルクリックすると
画像のような感じになります。
チェックが入っているセルをもう一度ダブルクリックすると
チェックも各シートの「○」も消えます。
※ あくまで勝手にこちらで作った配置なので
流れだけでも理解してもらえればよいと思います。m(_ _)m
No.2
- 回答日時:
No.1です。
ありゃりゃ!
お礼欄の内容は最初の質問とは全く異なりますね。
「チェックボックス」とはActiveXコントロールのチェックボックスでしょうか?
それともフォームコントロールのチェックボックスでしょうか?
ActiveXコントロールのチェックボックスであればコードを記載。
フォームコントロールのチェックボックスであれば「リンクするセル」で対象セルを指定していると思います。
いずれにしても単純にシートをコピーし複製する方法ではかなり厄介だと思います。
(簡単にできる方法があればごめんなさい)
「利用者情報シート」の行もしくは列と101号室・102号室・・・の対象セルには何らかの規則性があると思いますので、
自分であれば以下のような方法にします。
① 必要な部屋数だけまず、名前を付けてシートを複製する。
② 「利用者情報シート」のセルをダブルクリックするとチェックが入ったり消えたりする。
③ ②と同時にチェックを入れたり消したりするセルと関連するシートのセルの「○」や空白の表示をマクロで実行する
(「利用者情報シート」のChangeイベントで可能だと思います)
※ こちらではお手元の詳しいレイアウトが判らないので
この程度でごめんなさい。m(_ _)m
No.1
- 回答日時:
こんばんは!
各シートのA1セルに「名前」(A列だけ)だけを表示し、(他の項目は無視)
シート名には手を付ける必要がないのですね?
一例です。標準モジュールにしてください。
Sub Sample1()
Dim i As Long
With Worksheets("Sheet1")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
Worksheets.Add after:=Worksheets(i)
Worksheets(i + 1).Range("A1") = .Cells(i, "A") & "様"
Next i
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
ありがとうございます。ちょっと自分には難しいのですが、もう少し詳しく情報をお伝えしますので、できれば引き続きご回答いただければと都もいます。
以下、詳細
Sheet1のシート名は「利用者情報」となっています。
Sheet2のシート名は部屋番号「101号室」となっています。
「利用者情報」のセルA4に部屋番号、B4に氏名、C4起床時の内服、D4に朝食前薬、E4に朝食後薬などの項目が横一列あります。C,D,E,以降はチェックボックスを使用し、ありならレ点チェックが入るようになっています。
A列には100名ほどおり、その横には各々、上記の情報が入力してあります。
シート「利用者情報」のC4のレ点チェックがあれば、「101号室」のB43に「○」が反映。「利用者情報」のD4の朝食前にレ点チェックがあれば、「101号室」のB44に「○」が反映、レ点チェックがなければ「空白」。これを、1か月分作成しました。
つまり、「利用者情報」のA4からY4までチェックボックスを入力すると、「101」の一か月分の表に「○、or、空白」ができるようになっています。
ここからが、問題となっているのですが、シート「101」をコピー複製を繰り返し、「102」「103」と100名ほど行った場合、「102」の参照元が、すべて利用者情報のA4~Y4となってしまうのです。
自分としては、「102」の参照元はA5~Y5、「103」の参照元はA6~Y6とひとつづつずれていくようなものをつくりたいと考えています。
詳細を書くうちに、最初の質問とは異なっていることに気が付きました。大変申し訳ありませんが、ご回答よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) python文字化けエラーが発生しているようです 3 2022/04/13 19:41
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) VBAでvlookup関数から、別シート参照するやり方・・・ 2 2022/11/14 18:49
- Excel(エクセル) VBAにてエクセルをpdf化する方法 1 2023/03/10 16:20
- Visual Basic(VBA) VBA 別sheetからの転記なのですが 2 2023/05/22 15:55
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Visual Basic(VBA) このプログラムなんですがsheetにデータを置いて表示できるようにしてありますがsheetに101を 2 2023/02/23 20:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
エクセルで1月0日と表示される!!
-
エクセルで条件に一致したセル...
-
(Excel)あるセルに文字を入力...
-
Excelで複数シートの選択セルを...
-
エクセルで、加筆修正したセル...
-
Rangeメソッドは失敗しました。...
-
Excelシートの保護時にデータの...
-
エクセルで複写のように自動入...
-
エクセルで、勤務表から 日付...
-
エクセル ハイパーリンクで画像...
-
エクセルで文字を自動的に別シ...
-
エクセルでシート保護をかける...
-
excelでハイパーリンクになって...
-
EXCEL関数でシート名が変わる可...
-
エクセルで指定のセルのみ完全...
-
セルの値と同じ名前のシートを...
-
シート参照で変数を使いたい(EX...
-
EXCEL ハイパーリンク先を表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
日付が未入力の際はゼロか、空...
-
エクセルで条件に一致したセル...
-
エクセルで1月0日と表示される!!
-
(Excel)あるセルに文字を入力...
-
別シートのセルを絶対参照にする
-
Rangeメソッドは失敗しました。...
-
Excelシートの保護時にデータの...
-
複数シートの同じセル内容を1シ...
-
エクセルで、加筆修正したセル...
-
シート参照で変数を使いたい(EX...
-
エクセルで複写のように自動入...
-
Excelで複数シートの選択セルを...
-
INDIRECTを使わず excelで複数...
-
ExcelでTODAY関数を更新させな...
-
式の説明をお願いします。
-
excelでハイパーリンクになって...
-
エクセルのルビがついたセルを...
-
Excelでスクロールすると文字が...
-
エクセル ハイパーリンクで画像...
おすすめ情報
tom様、なにやら少しずつ答えに近づいているような気がするのですが、やはり私の頭では解読困難な状態です。いっそのこと、エクセルデーターをtom様に送信しご指南いただきたいところです(-_-;)
チェックボックスについてはフォームコントロールから作成しました。これについて、どうにか利用者100名分をVBAでつくることができました。
Changeイベント?ですね。初めて聞きますがやってみたいとおもいます・・・。汗
ご回答ありがとうございます。遅くなり大変失礼しました。
私が作っているものを写真で添付いたします。
「利用者情報」の横一列の情報にチェックボックスを使っていくと、TRUEを0、FALSEを-1として、0の場合だけ、「101」の一か月分の表に「〇」が付くようにしています。
102以降を作成したいのですが、、、、。tom様が教えてくださいましたコードを使ってみたのですが、どこがどう違うのかわからずエラーとなってしまいました。
再度、お時間があるようでしたらよろしくお願いいたします
情報が不足していたようです「利用者情報」
C4起床時はP4。→「101」B44
D4朝食前はQ4。→「101」B45
E4朝食後はR4。→「101」D45
F4昼食前はS4。→「101」B46
G4昼食後はT4。→「101」D46
H4夕食前はU4。→「101」B47
I4夕食後はV4。→「101」D47
J4眠前はW4。→「101」B48
K4の8時はX4→「101」B49
L4の12時はY4→「101」C49
M4の17時はZ4→「101」D49
N4の21時はAA4。→「101」E49
O4の貼付薬は手入力でそのまま「101」B50へ反映させるようにしています。上記の設定を行ったうえで、コピー貼り付けを行い1か月分の表を作成しています。もしかすると、これよりも簡単に作成する方法もあったりするのでしょうか?