Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


91 / 3841 ページ ←次へ | 前へ→

【80664】Re:マクロのコピーペストがうまく行かない
お礼  モリチャン  - 19/3/29(金) 23:37 -

引用なし
パスワード
   すみません。期末までにマクロ作れと言うことで、マクロ作成していました。現在までバグが治っていないので、採用しないと言うことになりました。アドバイス有難うございました。
・ツリー全体表示

【80663】Re:WORKDAY関数をVBAで使用したい
発言  みも  - 19/3/29(金) 21:15 -

引用なし
パスワード
   ▼マナ さん:
>エラーは文字列だからですね。
>
>IsDateで調べてTrueなら、
>CDateまたはDateValueを使うとよいです。
>そうすれば、エラーはでないと思います。
>
>J1の書式を標準にしておけばよいだけかもしれませんが…

ご回答ありがとうございます。

アドバイス頂いた点を踏まえて、実行してみます!
今はデータがないので、月曜日に実験してまたご報告、ご相談させて頂きます。

よろしくお願い致します。
・ツリー全体表示

【80662】Re:WORKDAY関数をVBAで使用したい
発言  マナ  - 19/3/29(金) 20:07 -

引用なし
パスワード
   ▼みも さん:

>このマクロを実行すると、6月生産の場合、セルは文字列の2019/5/20という結果になります。

エラーは文字列だからですね。

IsDateで調べてTrueなら、
CDateまたはDateValueを使うとよいです。
そうすれば、エラーはでないと思います。

J1の書式を標準にしておけばよいだけかもしれませんが…
・ツリー全体表示

【80661】Re:UserFormによる編集について
発言  マナ  - 19/3/29(金) 19:59 -

引用なし
パスワード
   ▼tarutaru さん:

ユーザーフォームではなく
編集用のシートを用意してはどうでしょうか。
シートなら、10行ずつ抽出も関数で簡単にできませんか。
編集後、sheet1に戻すマクロも簡単ですよね。
・ツリー全体表示

【80659】Re:WORKDAY関数をVBAで使用したい
発言  みも  - 19/3/29(金) 19:24 -

引用なし
パスワード
   ▼マナ さん:

>>“日付になっております” と表示されます。
>
>セル書式が文字列になっていませんか

ご回答ありがとうございます。

文字列になっております。
ただ、文字列ではなく、日付に変更してもエラーはでます。

後出しで申し訳ありませんが、このコードの前に違うコードを書いております。

内容は、元データの○月生産という項目の数字だけを読み取り、その数字−1の数値&”/20”を横のセルに入力するというものです。
このマクロを実行すると、6月生産の場合、セルは文字列の2019/5/20という結果になります。

つまり生産月の前月○日に手配する為の納期をだしております。

この納期の出し方が悪いでしょうか。
この入力を”生産月の数字−1の数値&”/20””以外の書き方に変えた方がいいでしょうか。

ファイルのあるパソコンからはすでに離れており、データを持ち出していない為、実際のコードが入力できなくて申し訳ありません。

よろしくお願い致します。
・ツリー全体表示

【80658】Re:UserFormによる編集について
質問  tarutaru  - 19/3/29(金) 4:18 -

引用なし
パスワード
   マナ様

今回もよろしくお願いいたします。

Jaka様

アドバイスありがとうございます。

すいません。説明が不足しておりました。

今作成しているものは、UserFormを2つ用意しており、UserForm1を入力用、UserForm2を編集用としています。

入力用は問題なくSheet1(データ表)に転記できており、そのSheet1上に以前マナ様からアドバイス頂いたフィルタオプションを用意し、データが抽出できるようにしてあります。

その抽出されたSheet1上のデータを、編集用(UserForm2)に反映したいのですが、反映の仕方というのが、例えば、抽出されたデータが10件(行)あるとすれば、まず先頭行の1件目が編集用(UserForm2)を起動した時に表示され、その編集用に用意した「前へボタン」と「次へボタン」で10件(行)分のデータが編集用(UserForm2)に表示され、各Boxの内容を変更し決定すると、Sheet1(データ表)に転記されるようにしたいと思っています。

また、1件目のデータが編集用(UserForm2)に表示された場合、「前へボタン」がFalseになるようにしたいとも思っています。

Jaka様からアドバイス頂いた「Textbox1.ControlSource="Sheet1!A1"」を試したのですが、上手くいきませんでした。

今回もお手数をおかけしますが、よろしくお願いいたします。
・ツリー全体表示

【80657】Re:UserFormによる編集について
発言  Jaka  - 19/3/28(木) 23:05 -

引用なし
パスワード
   前とか次とかはよく解らないけど、

ControlSource をいじってやれば、
セルの内容がテキストボックスに反映されます。
セルの内容を変えれば、すぐテキストボックスに反映。
テキストボックスの内容を変えれば、すぐにセルに反映。

Textbox1.ControlSource="Sheet1!A1"
・ツリー全体表示

【80656】Re:UserFormによる編集について
発言  マナ  - 19/3/28(木) 21:46 -

引用なし
パスワード
   ▼tarutaru さん:

念のため、確認ですが
「フォーム」という機能があるのですが
これでは、不十分ということでしょうか。
・ツリー全体表示

【80655】UserFormによる編集について
質問  tarutaru  - 19/3/28(木) 21:14 -

引用なし
パスワード
   すいません。
またお世話になります。

編集用userformを作成しました。

内容は、sheet1に入力されているデータを、編集用UserFormの各Boxに呼び出して、文字や数値を変更するとその内容がSheet1に反映されるといったものです。

Sheet1には「検索ボタン」を配置しており、条件入力後、押すことで該当データが抽出され、抽出されたデータのみを編集用UserFormに表示されるようにしたいと思います。

検索条件(絞込み)によっては複数の該当データが抽出(sheet1に表示)されることになりますが、その場合、編集用UserFormに「前ボタン」、「次ボタン」を配置することで移動できるようにしたいと思っています。

sheet1(データ)
Range("B3").Value = 氏 名
Range("C3").Value = 住 所
Range("D3").Value = 生年月日
Range("E3").Value = 職 業

編集用UserForm
TextBox1 = 氏 名
TextBox2 = 住 所
TextBox3 = 生年月日
ComboBox1= 職 業  

sheet1に、「編集ボタン」を配置、編集用UserFormが立ち上がるようにしています。

また、編集用UserFormに「前ボタン」、「次ボタン」も配置したのですが、移動については

Private Sub 次ボタン_Click()
 
  行 = 行 + 1
 
 Worksheets("sheet1").Activate
 Worksheets("sheet1").Cells(行, 2).Select
 
 If 行 >= 1000 Then(入力データを1000までとした場合)
  Me.次ボタン.Enabled = False
 Else
  Me.前ボタン.Enabled = True
  Me.次ボタン.Enabled = True
 End If
  
End Sub

Private Sub 前ボタン_Click()

  行 = 行 - 1
 
 Worksheets("sheet1").Activate
 Worksheets("sheet1").Cells(行, 2).Select
 
 If 行 <= 3 Then
  Me.前ボタン.Enabled = False
 Else
  Me.前ボタン.Enabled = True
  Me.次ボタン.Enabled = True
 End If
    
End Sub

このような構文でよろしいのでしょうか?

よろしくお願いいたします。
・ツリー全体表示

【80654】Re:WORKDAY関数をVBAで使用したい
発言  マナ  - 19/3/28(木) 18:13 -

引用なし
パスワード
   ▼みも さん:

>“日付になっております” と表示されます。

セル書式が文字列になっていませんか
・ツリー全体表示

【80653】Re:WORKDAY関数をVBAで使用したい
質問  みも  - 19/3/28(木) 12:09 -

引用なし
パスワード
   ▼マナ さん:

>
>>WORKDAY関数をVBAで使用したいのですが、エラーが出てしまいます。
>
>J1セルに日付が入力されているか確認するコードを追加してはどうでしょうか。


ご回答誠にありがとうございます。

下記コードをWorksheetFunction.WorkDayの前に追加してみましたが、

“日付になっております” と表示されます。

IfIsDate(DATA.Cells(1,10).Value)=FalseThen

DATA.Cells(1,10).Value=CDate(DATA.Cells(1,10))

Else

MsgBox"日付になっております。"

EndIf

お手数ですがご確認よろしくお願い致します。
・ツリー全体表示

【80652】Re:WORKDAY関数をVBAで使用したい
発言  マナ  - 19/3/27(水) 18:50 -

引用なし
パスワード
   ▼みも さん:

>WORKDAY関数をVBAで使用したいのですが、エラーが出てしまいます。

J1セルに日付が入力されているか確認するコードを追加してはどうでしょうか。
・ツリー全体表示

【80651】WORKDAY関数をVBAで使用したい
質問  みも  - 19/3/27(水) 18:28 -

引用なし
パスワード
   WORKDAY関数をVBAで使用したいのですが、エラーが出てしまいます。

エラー内容: “Worksheetfunction クラスの workdayプロパティを取得できません。”

やりたい事: 入力してある日付が土日祝日であった場合に、一番近い平日の数字を別のセルに入力する(前倒し)

手順シートには予め祝日を記載しています(S列)

コード:

Dim TEJYUN As Worksheet

Set TEJYUN = Worksheets("手順書")

Dim DATA As Worksheet

Set DATA = Worksheets("データ")


DATA.Cells(1, 11) = WorksheetFunction.WorkDay(DATA.Cells(1, 10)+1, -1, TEJYUN.Range("S1:S100"))

初心者ですので、根本的なところが間違っているかもしれませんが、ご教授頂けますと幸いです。

よろしくお願いいたします。
・ツリー全体表示

【80650】Re:変数の参照が不正ですを直したい
お礼  モリチャン  - 19/3/26(火) 22:23 -

引用なし
パスワード
   ▼モリチャン さん:
>以下の様なマクロ部分のプログラムです。他にフォーム部分がありますが動かすとコンパイルエラ:Nextで指定された変数の参照が不正ですと表示します。そして、Next iのiの部分が強調されますので、変数i関係が違うと思いますがどう直したらよいでしょうか?
>Sub main()
>Application.ScreenUpdating = False
>Workbooks.Open Filename:=gfilename
>sinn = ActiveWorkbook.Name
>Sheets("規格値").Select
>Range("E10").Select
>ActiveCell.Offset(0, 0).Range(Cells(2, 1), Cells(15, 7)).Select
>Selection.ClearContents
>Workbooks.Open Filename:=dfilename
>For i = 1 To 7
>For k = 1 To 14
>Data = ActiveWorkbook.Name
>Windows(sinn).Activate
>Range("E10").Select
>ActiveCell.Offset(k - 1, i - 1).Select
>Windows(Data).Activate
>D = Val(Mid(TESTNO, (k - 1) * 2 + 1, 2))
>Range(Cells(D, 1), Cells(D, 6)).Copy
>Windows(sinn).Activate
>Selection.PasteSpecial Paste:=xlFormula
>Next i
>Windows(Data).Activate
>ActiveWindow.Close
>If i = 7 Then Exit For
>Application.ScreenUpdating = True
>MsgBox ("終了しました")
>End Sub


以上の記載は、EXCELファイルの試験条件規格を、&#128201;ファイルに転送する目的で作ったのですが、ロジックが未熟で、3月25日分がある程度完成したファイルなので
閉じさせていただきます。ご回答ありがとうございました。
・ツリー全体表示

【80649】Re:フォルダからファイルを選択後別フォ...
発言  マナ  - 19/3/26(火) 17:45 -

引用なし
パスワード
   ▼katsura さん:


>以下のコードでコピー元とコピー先を指定するコピーの仕方はわかりましたが、選択したフォルダのパスとファイル名をマクロで取得したものをコピー元に当て込むことができません。
>FileCopy source, destination
>つまりパスを直接書き込まずに、自由にフォルダから選択したエクセルファイルをコピー元としてマクロに当て込むようにしたいのですがエラーになってしまします。

そのエラーのでたコードを提示できませんか。
・ツリー全体表示

【80648】Re:打刻からの時間加算
お礼  はじめまして  - 19/3/26(火) 15:56 -

引用なし
パスワード
   ▼ピンク さん:
>▼はじめまして さん:
>>選択したセル(時刻記入済み)に+2時間を加算するマクロを作りたいと思っております。
>
>ActiveCell.Value = ActiveCell.Value + TimeValue("02:00")

ご回答ありがとうございます、実行しましたところ
当方の求める結果になりました、ありがとうございます。
知識不足ゆえ、簡単なこともわからず ご回答いただいたお二方に感謝いたします。
・ツリー全体表示

【80647】Re:打刻からの時間加算
回答  ピンク  - 19/3/26(火) 15:50 -

引用なし
パスワード
   ▼はじめまして さん:
>選択したセル(時刻記入済み)に+2時間を加算するマクロを作りたいと思っております。

ActiveCell.Value = ActiveCell.Value + TimeValue("02:00")
・ツリー全体表示

【80646】Re:打刻からの時間加算
お礼  はじめまして  - 19/3/26(火) 15:46 -

引用なし
パスワード
   ▼Jaka さん:
>なんか勘違いされそうだけど、解りやすいかと思って
>適当に
>00:01:20
>にしただけなんで、適当に修正してください。

早速のご回答ありがとうございます。
当方の書き方がわかりにくくて申し訳ありません。
表記は時間で13:00 は13時で追加時間は2時間です

例えば、A1にCtrl+:で現在時刻(13:00 13時)をセルに打刻した後に
時間延長として(2:00 2時間)を加算してA1の値を15:00(15時)に書き換えたい
という質問です。
ただし、打刻するセルが多数ありますのrangeでセル指定をしてしまいますと
セルの数だけマクロを作らなければいけないかと思いますので
選択したセル(時刻記入済み)に+2時間を加算するマクロを作りたいと思っております。
・ツリー全体表示

【80645】Re:打刻からの時間加算
発言  Jaka  - 19/3/26(火) 15:18 -

引用なし
パスワード
   なんか勘違いされそうだけど、解りやすいかと思って
適当に
00:01:20
にしただけなんで、適当に修正してください。
・ツリー全体表示

【80644】Re:打刻からの時間加算
発言  Jaka  - 19/3/26(火) 14:39 -

引用なし
パスワード
   分なのか時間なのか解らんけど、

Range("A1").Value = Time

Range("A2").Value = Range("A1").Value + TimeValue("00:01:20")

とか。
・ツリー全体表示

91 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free