頭がこんがらがってしまい途中でしめさせていただきました。改めて整理がついたので質問をしたいと思います。
VBAを使い表を作成しています。
まず入力フォームというブックがあり、そこに入力した日付より1ヶ月分のデータを日付、曜日などを別ブックにある予めできている表に貼り付けていきます。表には31日分の表(罫線あり)が出来ています。
☆一つ目
Datediff("d",wSh1.Range("C6"),Dateadd("m",1,wSh1range("C6")))
を使いその月の日数を求め表からいらない分の表を削除。
例えば)2/1を入力した際に31日分もいらないため2つ削除。
削除したら入力した日付から1ヶ月間の日付と曜日を貼り付ける。
表は
L ・・・
4 日付・・・
5 曜日・・・
・
・
・
のようになっています。
ここまでにいく前に次のような処理をしましたのでソースを載せます。
Private Sub CommandButton1_Click()
Dim wStr As String
Dim wDate As String
Dim wDate2 As String
Dim Exitflg As Boolean
Dim i As Integer
Dim wVal As Variant
Dim wSh1 As Worksheet
Dim wSh2 As Worksheet
Dim iStartRow As Long
Dim iEndRow As Long
Dim wDay As Long
Set wSh1 = Workbooks("入力フォーム.xls").Worksheets("日付セット")
If wSh1.Range("C6") = "" Then '値が入っているか
MsgBox "日付を入力してください!"
Exit Sub
End If
wDate = Replace(wSh1.Cells(6, "C"), "西暦", "")
wDate = Format(wSh1.Cells(6, "C"), "yyyy/mm/dd")
If Date < wDate Then
MsgBox "未来の日付入力はできません!"
Exit Sub
End If
If DateAdd("yyyy", -1, Date) > wDate Then
MsgBox "日付を今日から1年以内で設定してください!"
Exit Sub
End If
わかりづらいかもしれませんがよろしくお願いします。
DATの読書きをしなくちゃいけない事になって
元のコードを元に書き出す事はできたのですが
読込みができなくて困っています。構造体の中に値を入れてるんですが
msgboxで値を表示しても、空白しか返ってきません。
ネットでも検索してみたんですが、どこがおかしいの分からなくてお手上げです。
どなたか宜しければおかしい所を教えて下さい。
Type TEST_DAT
TEST_A as string * 1
TEST_B as string * 2
TEST_C as string * 3
End Type
Sub a ()
Dim Dat as TEST_DAT
Dim Fn as integer
Fn = FreeFile
Open ThisWorkbook.path & "\Test.dat" For Random as #Fn Len = 6
Get #Fn , , Dat
Msgbox Dat.TEST_A
Msgbox Dat.TEST_B
Msgbox Dat.TEST_C
Close #Fn
End Sub
Datファイルの方には、上の構造体を使ってPut #Fn,,Dat
の様に書いて1行出力した物をそのまま使っています。
なので、データが無いって事はありません。
元のコードとネットで調べはしたのですが、上で問題無い様な気がして
おかしい場所がさっぱりわかりません。エラー等は一切返ってきてません。
Msgbox Len(Dat.TEST_A)の様にすると1,2,3と帰って来るので
値が入ってないのが悪いとはわかるんですが…。
頭がこんがらがってしまい途中でしめさせていただきました。改めて整理がついたので質問をしたいと思います。
VBAを使い表を作成しています。
まず入力フォームというブックがあり、そこに入力した日付より1ヶ月分のデータを日付、曜日などを別ブックにある予めできている表に貼り付けていきます。表には31日分の表(罫線あり)が出来ています。
☆一つ目
Datediff("d",wSh1.Range("C6"),Dateadd("m",1,wSh1range("C6")))
を使いその月の日数を求め表からいらない分の表を削除。
例えば)2/1を入力した際に31日分もいらないため2つ削除。
削除したら入力した日付から1ヶ月間の日付と曜日を貼り付ける。
表は
L ・・・
4 日付・・・
5 曜日・・・
・
・
・
のようになっています。
ここまでにいく前に次のような処理をしましたのでソースを載せます。
Private Sub CommandButton1_Click()
Dim wStr As String
Dim wDate As String
Dim wDate2 As String
Dim Exitflg As Boolean
Dim i As Integer
Dim wVal As Variant
Dim wSh1 As Worksheet
Dim wSh2 As Worksheet
Dim iStartRow As Long
Dim iEndRow As Long
Dim wDay As Long
Set wSh1 = Workbooks("入力フォーム.xls").Worksheets("日付セット")
If wSh1.Range("C6") = "" Then '値が入っているか
MsgBox "日付を入力してください!"
Exit Sub
End If
wDate = Replace(wSh1.Cells(6, "C"), "西暦", "")
wDate = Format(wSh1.Cells(6, "C"), "yyyy/mm/dd")
If Date < wDate Then
MsgBox "未来の日付入力はできません!"
Exit Sub
End If
If DateAdd("yyyy", -1, Date) > wDate Then
MsgBox "日付を今日から1年以内で設定してください!"
Exit Sub
End If
わかりづらいかもしれませんがよろしくお願いします。
VBA全くの初心者です。
時刻が入力されているB列で、例えば、
19:**のデータが入っているセルが、何行目にあるか、を知りたいと思っています。**としているのは、複数のファイルを扱うため、分(**)の値が特定できないからです。
Find を使い、
Dim n As Integer
n = Range("B:B").Find("12:").Row
で、12時台の行は取得できました。。
ところが、13時以降は、うまくいきません。
どのようにすればよいのでしょうか。。
初心者のため、質問の仕方も、うまくなくてすみません。。
どなたかお教えくださいましたら、とてもありがたいです。。
VBA全くの初心者です。
時刻が入力されているB列で、例えば、
19:**のデータが入っているセルが、何行目にあるか、を知りたいと思っています。**としているのは、複数のファイルを扱うため、分(**)の値が特定できないからです。
Find を使い、
Dim n As Integer
n = Range("B:B").Find("12:").Row
で、12時台の行は取得できました。。
ところが、13時以降は、うまくいきません。
どのようにすればよいのでしょうか。。
初心者のため、質問の仕方も、うまくなくてすみません。。
どなたかお教えくださいましたら、とてもありがたいです。。
VBA全くの初心者です。
時刻が入力されているB列で、例えば、
19:**のデータが入っているセルが、何行目にあるか、を知りたいと思っています。**としているのは、複数のファイルを扱うため、分(**)の値が特定できないからです。
Find を使い、
Dim n As Integer
n = Range("B:B").Find("12:").Row
で、12時台の行は取得できました。。
ところが、13時以降は、うまくいきません。
どのようにすればよいのでしょうか。。
初心者のため、質問の仕方も、うまくなくてすみません。。
どなたかお教えくださいましたら、とてもありがたいです。。