
sheet1
A B C D
日付 名前 事由
1 はさん 休み
4 いさん 早退
sheet2
A B C D E... AF
日付 1 2 3 4... 31
いさん 早退
ろさん
はさん 休み
---------------------
シフト表を作成しており、提出された届出をsheet1に入力し、
sheet2に反映させるようにし、反映後にsheet1のD列に”済”と
入力できればと思っています。
また、次に入力した場合は”済”の次から反映できるように
できればと思っていますが、マクロの組み方が分かりません。
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
No.2の回答者です。
>"失敗しました"と出てしまいます(><)
ふつうは、正しく設定している限りは、このエラーが出てくることはめったにないのですが、ただ、
最初に使おうとしたりするときにオブジェクトが収まっていないと、そのようなエラーが出るようです。こちらで新しくシートから作り直してみましたが、こちらも1回だけ不明なエラーが発生しました。
一応確認だけさせていただきます。
最初に、エラーの時の対処の仕方を書いておきます。
(1)
> Set sh1 = Worksheets("Sheet1")
> Set sh2 = Worksheets("Sheet2") ←こちら側の名称は正しいですか?
(2)
25行目付近にある
j = .Cells(i, 1).Value
これは、確認のためで不要ですから、削除してください。
(3)
34行目付近にある、このコードですが、
' If Err() <> 0 Then
' MsgBox "失敗しました", vbExclamation
' Exit Sub
' End If
(文字の先頭に、シングルコーテーション「'」で、マクロを使わないようにする)
これは、予定していないエラーのためでしたが、なくても作動するはずでず。
次に、デバッグ・ツールの使い方を念のために書かせていただきます。
(解決すれば、使わなくても結構です)
以下の左端の枠をワンクリックして「●」をつけます。(通常茶色の丸)
● If .Cells(i, dt + 1).Value = "" Then '日付が2列目を1日とした場合 dt +1【修正】
そして同じようにマクロを実行させます。
その部分に来るとマクロが止まります。、次に、F8 を押すと、ステップモードに切り替わりますので、1行ずつエラーがないのか探します。
それは、ローカルウィンドウを、画面下に出して、変数が正しく返っているか、0になったりしていないか、エラーが出たところを見つけるわけです。
●は、メニューのデバッグで、「すべてのブレークポイント削除」を選択していただけると早いです。
なお、マクロとワークブックはアドインというスタイルで、分離させることも可能です。

No.3
- 回答日時:
此は 如何でしょう?
代表式、
=IFERROR(OFFSET(Sheet1!$A$2,
SUMPRODUCT((C$2=OFFSET(Sheet1!$A$2,1,0,COUNTA(Sheet1!$A$3:$A$102),1))*($B3=OFFSET(Sheet1!$A$2,1,1,COUNTA(Sheet1!$A$3:$A$102),1))*ROW(OFFSET(Sheet1!$A$2,1,0,COUNTA(Sheet1!$A$3:$A$102),1)))-2,2,1,1),"")&""
ファイル、
https://1drv.ms/x/s!AjviygfJDgV_2nv6LrEwFAiIMjOr

No.2
- 回答日時:
こんばんは。
'//フォームコントールのボタンを想定したマクロ
Sub ボタン1_Click()
Dim rw As Long, dt As Variant, c As Variant
Dim i As Long, j As Long
Dim DataRow As Range
Dim sh1 As Worksheet, sh2 As Worksheet
Dim sReason As String
Dim Psn As String
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
With sh1
rw = .Cells(Rows.Count, 4).End(xlUp).Row + 1
dt = .Cells(rw, 1).Value '日付
Psn = .Cells(rw, 2).Value '人
sReason = .Cells(rw, 3).Value '事由
End With
On Error Resume Next
With sh2
Set c = .Cells.Find(Psn, , xlValues, xlPart)
If c Is Nothing Then
MsgBox Psn & "のお名前が見つかりません。", vbExclamation
Exit Sub
End If
i = c.Row
j = .Cells(i, 1).Value
If .Cells(i, dt + 1).Value = "" Then '日付が2列目、1非とした場合 dt +1
.Cells(i, dt + 1).Value = sReason
Else
If MsgBox("すでに" & .Cells(i, dt + 1).Value & "と書かれています。" & vbCrLf & _
"上書きしますか?", vbYesNo) = vbNo Then: Exit Sub
End If
End With
If Err() <> 0 Then
MsgBox "失敗しました", vbExclamation
Exit Sub
End If
On Error GoTo 0
sh1.Cells(rw, 4).Value = "済"
End Sub
p.s. 「葉」さんの読みは、本当は[よう]と言います。

No.1
- 回答日時:
マクロでなければ、
駄目なのですか?
式で 作る方が、
簡単ですよ?
「式の方が 重くなる」と、いうのは、
噓ですよ。
式だと、
瞬時に、漏れなく、
繁栄されるから、
「済み」の 処理は、
要りませんよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】実行時エラー '424':...
-
【マクロ】数式を入力したい。...
-
Office2021のエクセルで米国株...
-
エクセルのVBAで集計をしたい
-
vba テキストボックスとリフト...
-
【マクロ】【配列】3つのシー...
-
【マクロ】元データと同じお客...
-
【マクロ】【相談】Excelブック...
-
他のシートの検索
-
【画像あり】オートフィルター...
-
【マクロ】左のブックと右のブ...
-
空白のはずがSUBTOTAL関数でカ...
-
エクセルシートの見出しの文字...
-
【関数】3つのセルの中で最新...
-
Excelに貼ったXのURLのリンク...
-
【マクロ】excelファイルを開く...
-
LibreOffice Clalc(またはエク...
-
【マクロ】【画像あり】❶ブック...
-
エクセルの複雑なシフト表から...
-
Excelで4択問題を作成したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報
"失敗しました"と出てしまいます(><)