1週間分のスケジュールをシートにセットするための入力フォームを作りました。
大まかには、◎年◎月◎週目と選択すると該当日(月~日)が表示され、各日に対するスケジュールを入力します。
『Cmdデータセット』と言うコマンドボタンをクリックすると該当シートにそのデータが反映されます。
シートは月間スケジュールと週間スケジュールに分かれていて、
コマンドボタンをクリックすると月間・週間のそれぞれ該当シートにデータを反映させます。・・・と言うものです。
週間スケジュールについては問題ないのですが、月間スケジュールで行き詰まってしまっています。
助けていただきたいのは・・・
現在は”19年10月5週目”を選択していたら10月のシートを見るように設定してあります。
基本的にはこれで問題ないのですが、
例えば実際に”19年10月5週目”を選択したとします。
すると、10月29日~11月4日の日付が表示されます。
そのため、この状態だと10月1日~4日と10月29日~31日にデータが反映されてしまいます。
10月29日~31日分は10月のシートを見る(selectする)ように、11月1日~4日分は11月のシートを見る(selectする)ようにしたいのです。
月をまたがない場合は日付は必ず昇順となります。
日付が昇順の場合は現状通り選択した月のシートをselectし、
そうでない場合は1桁の数字(あるいは1~6)の分のみ
次(右隣)の月のシートをselect(ActiveSheet.Next.Select?)させたいのですが可能でしょうか?
イメージとしてはselect文を条件式、「どのセルにどのスケジュールをセットするか」を実行する処理としてloopを使えたら。という感じなのですが。
VBAを独学で進めている上にまだまだ未熟のため、
馬鹿げていたりありえない話をしてしまっているかもしれませんが、何卒よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんばんは。
うん、だいたいイメージつかめますよ~。整理すると
(1)年・月・週目を入力する。
(2)すると、7日分の日付が表示され、その横に入力欄が出てくる。
(3)データ入力後「Cmdデータセット」ボタンをクリックで、週/月データの該当部分のセルにデータが登録される。
という感じでしょうか。
「Cmdデータセット」がクリックされた場合
(1)表示されている7つの日付を順番に読み込む。
(2)読み込むごとに、その日付を月と日に分解する。
で、月データのシート名を(2)で読み込んだ「月」から合成する仕組みにしておけば、「その週が月をまたぐかどうか」の心配をする必要は無いですよね。
すなわち、「次の月のシート」という概念は ちょっと置いていただいて、
・「月」から「どのシートに書き込むのか(シート名)」を指定し、
・「日」から「シートのどの位置(日付)に書き込むのかを指定する
という考え方でいけば、よりうまく行くのでは?と思います。
なにか追加でわからないことがあれば、お気軽にご質問どうぞ(ただしお返事は明日の晩になってしまいますが(泣))。
この回答への補足
返事がかなり遅くなってしまってすみません。
気づいていただけると良いのですが・・・
教えていただいたことから光が見えたものの、
自分の力不足のために思っているように作業が進まず今頃になってしまいました。
教えていただいたことから修正を加えていったところ、全然関係のないところ?でエラーが出てしまいました。
出たエラーは『オブジェクト変数または With ブロック変数が設定されていません。(Error 91)』です。
Dim nth As Integer
nth = (Cmb年.Value & Cmb月.Value & Cmb週.Value)
Dim mysheet As Worksheet
Dim k As Integer
Dim i As Integer
For i = 1 To 7
k = i + 2
mysheet = Application.WorksheetFunction.VLookup(nth, Range("シート検索"), k, False)
データをセットするために見るシート名を検索させるためにvlookupを使うことにしました。
エラーが出るとき、nthは19111(19年11月1週目)を見ています。
kは3(1日目)を見ています。
このことから、「シート検索」をvlookupすると、19年10月29日なので19.10がヒットするはずなのですが、エラーが出るときの結果は「nothing」なのです。
なぜなのかさっぱりわからないのです。。。
よろしくお願いします。
なんとか、完成させることができました。
また困ったときがあったらそのときはよろしくお願いします。
どうもありがとうございました。
No.2
- 回答日時:
正直言ってご質問を読んでも意味が解りませんでした。
「コマンドボタン」等の用語が出ていますが、これらが置かれる場所(シート上なのかUserFormなのか)によっても記述が変わりますし、シート名がどうなっているか等も影響します。
状況を見ることが出来ない回答者の立場に立って、回答者の環境で再現出来る情報(シート名やセルの番地、データの状況、記述中のマクロコードなど)を網羅し、且つ、もう少し内容を絞って質問された方が良いかも知れません。
ちなみにシート名が 1月 ~ 12月 の12枚のシートがある場合、下記のマクロを実行して日付を入力すると
2007/10/1 ~ 2007/11/4 までは「10月」
2007/11/5 ~ 2007/12/2 までは「11月」
2007/12/3 ~ 2008/1/6 までは「12月」
のシートをそれぞれ選択します。
以上、ご参考まで。
Sub Test()
myDate = Application.InputBox("年月日を入力", "日付", Type:=2)
If Not IsDate(myDate) Then Exit Sub
cnt = Weekday(myDate, vbMonday)
myMon = DateSerial(Year(myDate), Month(myDate), Day(myDate) - (cnt - 1))
If Month(myMon) = Month(myDate) Then
Worksheets(Month(myDate) & "月").Select
Else
Worksheets(Month(myMon) & "月").Select
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- その他(Microsoft Office) エクセルの休日について教えてください。 1 2023/01/06 15:45
- Excel(エクセル) vba シートの並び替え 1 2023/04/19 13:44
- Visual Basic(VBA) 祝日を除いた月曜から土曜までの1週間分の日付行を選択し、別シートへカットアンドペーストしたい 13 2023/07/13 22:46
- Excel(エクセル) エクセル関数について 2 2022/04/13 18:25
- Excel(エクセル) エクセルでセルの日付を和暦表示設定にしたらおかしなことに? 3 2022/05/25 11:47
- Excel(エクセル) 再質問です。エクセルでシートが1から31まであり、日付けが入力されているセルがあります。シート1から 4 2022/08/02 23:08
- Visual Basic(VBA) 列 A に同じ日が2つが必要です。 1 2023/03/28 07:25
- Excel(エクセル) Excel セルに入っている日付を参照して、別シートのリストを表示させたい 1 2022/04/12 17:02
- Excel(エクセル) 【エクセル】参照セルに何も入力が無い場合の空白表示方法 1 2022/05/26 10:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで入力シートから別シ...
-
エクセル自動の年月
-
エクセルVBA:表の内容を担当者...
-
VBA セルの値と同じ名前のシー...
-
ExcelVBAで、指定したシートに...
-
VBAでシート名をセルから取得し...
-
Excel日付変更との参照先の連動
-
EXCEL VBA 一致しないデータの...
-
エクセルVBAで
-
該当するデータを書式設定ごと...
-
Excelの中央値の複数条件について
-
EXCEL VBA 作業用シートの使い回し
-
エクセル マクロを使って日々...
-
【Excel】VLOOKUP関数で複数の...
-
エクセル シフト勤務表から、...
-
エクセル1のワークシートで1ペ...
-
Excel 複数のシートからグラフ...
-
EXCELの日付データをWORD文書に...
-
エクセルにて別シートの値を参...
-
テキストボックス内の文字のふ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで入力シートから別シ...
-
ExcelVBAで、指定したシートに...
-
エクセルのワークシートが重く...
-
IF, ISNUMBER, INDIRECTの組み...
-
VBA セルの値と同じ名前のシー...
-
Excel ハイパーリンク先のセル...
-
エクセル シフト勤務表から、...
-
Excel 複数のシートからグラフ...
-
VBAでシート名をセルから取得し...
-
Excelの中央値の複数条件について
-
エクセルについて質問です 日付...
-
エクセルで入力→日付を自動判別...
-
VBAのoffsetの動き方について教...
-
エクセル自動の年月
-
エクセルVBA:表の内容を担当者...
-
エクセル 毎日更新する表のデ...
-
エクセル マクロを使って日々...
-
質問:特定文字列から空白行ま...
-
EXCEL VBA 一致しないデータの...
-
エクセルにて別シートの値を参...
おすすめ情報