Excel VBA質問箱 IV

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

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


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

【81706】Re:Aの期間がBの期間に入っているかを判...
お礼  vba1年生  - 21/3/26(金) 13:41 -

引用なし
パスワード
   ▼山内 さん:
>セルE1
>=IF(SUMPRODUCT(($C$1:$C$50<=A1)*($D$1:$D$50>=B1))>=1,"〇","×")
>これでどうでしょうか
>表の範囲がわからないのでそこは変えてください

ありがとうございます!
考えていたことができました!大変助かりました。
・ツリー全体表示

【81705】Re:Aの期間がBの期間に入っているかを判...
回答  山内  - 21/3/26(金) 13:26 -

引用なし
パスワード
   セルE1
=IF(SUMPRODUCT(($C$1:$C$50<=A1)*($D$1:$D$50>=B1))>=1,"〇","×")
これでどうでしょうか
表の範囲がわからないのでそこは変えてください
・ツリー全体表示

【81704】Re:Aの期間がBの期間に入っているかを判...
回答  vba1年生  - 21/3/26(金) 12:17 -

引用なし
パスワード
   ▼山内 さん:
>E1セル
>=IF(AND(A1>=C1,B1<=D1),"〇","×")
>これを下にオートフィルとかでよろしいんじゃないでしょうか
>あえてVBAでやる必要があるということでしたらまた考えてみます

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

すべて横並びになっていればそれもできるのですが、
A-BとC-Dが同じ行にありません。

ですので処理的には、たとえば1行目のA-B期間が、すべての行のC-D期間を参照しに行き、その中のどれかに入っていれば〇、どれにも入っていない場合は×としたいです。
・ツリー全体表示

【81703】Re:Aの期間がBの期間に入っているかを判...
回答  山内  - 21/3/26(金) 11:57 -

引用なし
パスワード
   E1セル
=IF(AND(A1>=C1,B1<=D1),"〇","×")
これを下にオートフィルとかでよろしいんじゃないでしょうか
あえてVBAでやる必要があるということでしたらまた考えてみます
・ツリー全体表示

【81702】Re:Aの期間がBの期間に入っているかを判...
回答  vba1年生  - 21/3/26(金) 11:20 -

引用なし
パスワード
   ▼γ さん:
>念のため実例を挙げて下さい。
>  A   B   C   D   E   F
>1
>2
>3
>のような行・列位置がわかるもので、
>結果をどういう形式で表示するかも書いてください。

返信いただきありがとうございます!
そして気づくのが遅くなってしまい申し訳ありません。

実例ですが、
  A       B      C     D     E
1 11:07:10  11:08:10  11:05:00  11:14:00   〇
2 11:10:10  11:12:10  11:21:00  11:24:00   〇
3 11:23:10  11:25:10  11:25:00  11:28:00   ×

といった具合に、
A-Bの期間が、C-Dの期間に入っていれば、A-Bの行E列に〇、
入っていなければ×、としたいです。
A-B、C-Dはそれぞれペアになっていますが、
そのペアの個数は等しくないので、複数のA-Bの期間が一つのC-D期間に入ることもあります。

説明がうまくないかもしれませんが、宜しくお願いします。
・ツリー全体表示

【81701】Re:一つのフォルダ内にあるエクセルファ...
回答  [名前なし]あsd  - 21/3/25(木) 14:47 -

引用なし
パスワード
   ▼γ さん:
回答コメントをご覧いただき、ありがとうございます。
>
>>・その情報がA2から差し込まれる
>参考コードではどうなっているんですか?
>該当する箇所を示して説明できますか?
出来ません、見当たりません。
>
>>・フォルダ内にある全てのエクセルファイルの1番目のシートのA2からまとめたい
>参考コードではどうなっているんですか?
>該当する箇所を示して説明できますか?
出来ません、指定する記述が見当たりません。
もうしわけありません。
・ツリー全体表示

【81700】Re:「名前を付けて保存」の保存場所の変更
お礼  モリ  - 21/3/25(木) 10:52 -

引用なし
パスワード
   Y様

ご回答ありがとうございました。
教えていただいた内容で上手くいきました!

これからももっと勉強していきたいと思います。
本当にありがとうございました!
・ツリー全体表示

【81699】Re:一つのフォルダ内にあるエクセルファ...
発言  γ  - 21/3/25(木) 10:03 -

引用なし
パスワード
   回答コメントをご覧いただき、ありがとうございます。

>・フォルダを選択するボタンを押すと選択出来る
「マクロボタンへの登録方法」などとネット検索してはどうですか?
といいますか、VBAに関する書籍は持っていないのですか?
必ず書いてあるはずですが。

>・その情報がA2から差し込まれる
参考コードではどうなっているんですか?
該当する箇所を示して説明できますか?

>・フォルダ内にある全てのエクセルファイルの1番目のシートのA2からまとめたい
参考コードではどうなっているんですか?
該当する箇所を示して説明できますか?
・ツリー全体表示

【81698】一つのフォルダ内にあるエクセルファイル...
質問  [名前なし]エク初心者  - 21/3/25(木) 7:19 -

引用なし
パスワード
   はじめまして、ご覧いただきありがとうございます。

私がやりたいのは
・フォルダを選択するボタンを押すと選択出来る
・その情報がA2から差し込まれる
・フォルダ内にある全てのエクセルファイルの1番目のシートのA2からまとめたい

ということです(わかりづらかったらもうしわけありません)。

そこで
Sub folder()

  If Application.FileDialog(msoFileDialogFolderPicker).Show = True Then
    Range("b2").Value = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
  End If

End Sub

Sub merge()


'シート[merge]を削除
  On Error Resume Next
  Application.DisplayAlerts = False
    Worksheets("merge").Delete
  Application.DisplayAlerts = True
  
'シート[merge]を一番右に追加
  Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = "merge"
  
'フォルダの場所を変数に入れる
  Dim Folder_path
  Folder_path = ThisWorkbook.Worksheets("folder").Range("b2").Value
  
 
'結合するブックを変数に入れる
  Dim FileType
  If Worksheets("folder").Range("b1").Value = "Excel" Then
    FileType = "\*.xls*"
  Else
    FileType = "\*.csv"
  End If
  
  
  Dim MergeWorkbook
  MergeWorkbook = Dir(Folder_path & FileType)

  
'指定したフォルダから、ファイルを探して、開いてコピペ
  Do Until MergeWorkbook = ""
    Workbooks.Open Filename:=Folder_path & "\" & MergeWorkbook
    
  
    Dim MergeWorkbook_data '結合するブック内のシートのデータ数
    Dim ThisWorkbook_data '結合先のシートのデータ数
   
    
    Dim i
    For i = 1 To Workbooks(MergeWorkbook).Worksheets.Count
    
      MergeWorkbook_data = Workbooks(MergeWorkbook).Worksheets(i).Range("a" & Rows.Count).End(xlUp).Row
      ThisWorkbook_data = ThisWorkbook.Worksheets("merge").Range("a" & Rows.Count).End(xlUp).Row
      
      Workbooks(MergeWorkbook).Worksheets(i).Rows("1:" & MergeWorkbook_data).Copy ThisWorkbook.Worksheets("merge").Range("a" & ThisWorkbook_data + 1)
    Next
  
     
  '結合するブックを閉じる
    Application.DisplayAlerts = False
      Workbooks(MergeWorkbook).Close
    Application.DisplayAlerts = True
  
'次のブックを探しに行く
    MergeWorkbook = Dir()
  Loop
 

End Sub

こういうものを見つけたのですが、これだとA2から取得するのは難しいのかなと思いました。
どう変えたらいいのか、ご教示いただけないでしょうか。
よろしくお願いいたします。
・ツリー全体表示

【81697】Re:Activateのエラーについて
お礼  kazu  - 21/3/24(水) 9:21 -

引用なし
パスワード
   y様

コメントありがとうございます。
仰る通り、保護ビューブックから通常ブックへアクティブを移すときに、保護ビューからアクティブが外れないという制限が掛かっているかもしれません。

また、Activateという命令自体も、アクティブにしたいブックだけに命令が飛ぶのではなく、命令を出す前にアクティブになっているブックにも何かしらの命令が飛んでおり、保護ビューだとそれを受けられないのかもしれませんね。

作業上、問題ない事ではありますが、原因が分からないとすっきりしませんので、一度、マイクロソフト社に確認させて頂こうと思います。

度重なるご回答ありがとうございました。
・ツリー全体表示

【81696】Re:Activateのエラーについて
発言  γ  - 21/3/24(水) 8:51 -

引用なし
パスワード
   保護ビューになっているブックを操作した経験がないので
確かな話ではなく、想像に過ぎませんが、少しコメントします。

そもそも、「保護ビュー」というのは、
インターネットからダウンロードしたりしたもので、内容に懸念があるとき等に、
設定されるものと思います。
ですから、なんらかの制限的なことがあっても、
それはセキュリティ管理上のものであると、想像するほかないと思います。
保護ビューのかかったブックを操作したあともリスク懸念しているのかもしれません。

もう少し他の回答を待つか、確実なことを知りたければ、
マイクロソフト社に確認されたらどうでしょうか。
・ツリー全体表示

【81695】Re:Activateのエラーについて
回答  kazu  - 21/3/23(火) 23:03 -

引用なし
パスワード
   Y様
ご回答ありがとうございます。

現在、仕事で個人的にマクロを組み使用しておりますが、
今後、他同僚も使用する事を考え、不具合の検証等を行っているところです。

不具合を検証するために、シンプルに下記コードで検証しても同じ結果が得られます。

ブックAのSheet1にユーザーフォーム1(モードレスです)を呼び出すボタンを設置し、
下記コードにてユーザーフォーム1を呼び出す。

Sub Sheet1_ボタン1_Click()
UserForm1.Show
End Sub

ユーザーフォーム1を呼び出した後に、
マウスクリックにて編集を有効化していないブックBの任意のセルを選択し、
ブックBをアクティブにしてからマウスクリックにてユーザーフォーム1に戻る。
(ユーザーフォーム1に戻る時はブックAをクリックするのではなく、
 ユーザーフォームをクリックし戻る)


ユーザーフォーム上の下記コードが書かれたコマンドボタンをクリック。
Private Sub CommandButton1_Click()
ThisWorkbook.Activate
End Sub

ブックBが編集を有効化していなかった場合、エラーが発生し、
有効化していた場合はエラーが発生しません。


正直、このような操作を行うケースは(偶発的にも)無いと思いますし、
ブックAと同時に開くエクセルファイルは常に編集を有効化しておけばこの問題は起きませんので、気にする事ではないのかもしれませんが、
VBAを勉強している中で、どのような理屈でこのエラーが発生するのか非常に気にな
っております。
・ツリー全体表示

【81694】Re:Activateのエラーについて
発言  γ  - 21/3/23(火) 19:56 -

引用なし
パスワード
   ht tps://support.microsoft.com/ja-jp/topic/%E4%BF%9D%E8%AD%B7%E3%83%93%E3%83%A5%E3%83%BC%E3%81%A8%E3%81%AF-d6f09ac7-e6b9-4495-8e43-2bbcdbcb6653#bm2
を見たら、下記の記述がありました。これが関係していないでしょうか。

> 保護ビューを終了できない理由
> 保護ビューを終了できない場合は、システム管理者によって、
> 保護ビューを終了できないようにするルールが作成されている可能性があります。
> 管理者に問い合わせて、そのようなルールが適用されているかどうかを確認してください。

個人ユースですか?
企業で使っているのでしたら、システム管理者に確認したらどうでしょう。

なお、もし単なるコードのミスだとしても、関連するコード提示が無いので
当方では不明です。
・ツリー全体表示

【81693】Re:Aの期間がBの期間に入っているかを判...
発言  γ  - 21/3/23(火) 19:46 -

引用なし
パスワード
   念のため実例を挙げて下さい。
  A   B   C   D   E   F
1
2
3
のような行・列位置がわかるもので、
結果をどういう形式で表示するかも書いてください。
・ツリー全体表示

【81692】Activateのエラーについて
質問  kazu  - 21/3/23(火) 17:43 -

引用なし
パスワード
   いつも参考にさせて頂き助かっております。

さて、色々解決方法を模索しておりますが原因自体が全くが分からない為、非常に困っております。

状況としては以下です。

ブックA・・・マクロを組んでいるブック
ブックB・・・保護ビュー状態
      (「編集を有効にする」ボタンを押していない状態で開いている)

ブックAのユーザーフォーム上にあるThisWorkbook.Activateが書かれたコマンドボタンを実行する際、ユーザーフォームを開いた後、一度ブックBを選択(Activate)してから、ユーザーフォームに戻りコマンドボタンを実行した場合、エラーが発生します。
ブックBの編集が有効になっている場合はエラーは起こりません。

エラー内容は
実行時エラー'1004':
'Activate'メソッドは失敗しました:'_Workbook'オブジェクト

ブックAがアクティブになるかどうかの問題に対して、直前にアクティブになっているブックの状態の影響をなぜ受けるのか全然検討つかず、どのような解決策を取ればいいか分からない状態です。

恐れ入りますが、原因及び解決策をご教示頂けますと幸いです。
・ツリー全体表示

【81691】Aの期間がBの期間に入っているかを判断す...
質問  vba1年生  - 21/3/23(火) 14:52 -

引用なし
パスワード
   VBAの初心者です。
壁にぶち当たりましたので以下の方法を教えていただけると助かります!

[前提]
xとyの時刻データがあり、xの開始時刻はA列、終了時刻はB列にあり、
yの開始時刻はC列、終了時刻はD列にあります。

[やりたいこと]
xがyの期間に入っているか確認する。
ただし、xもyも個数はデータによって変動する。


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

【81690】Re:Excelの一覧表の情報を、Wordテンプレ...
回答  質問者  - 21/3/23(火) 13:18 -

引用なし
パスワード
   ▼マナ さん:
貴重なコードありがとうございます。なんと、マナさんのコードのおかげで思い通りの動作ができました。
大変助かりました!本当に感謝、感謝です。
・ツリー全体表示

【81689】Re:Excelの一覧表の情報を、Wordテンプレ...
発言  マナ  - 21/3/22(月) 21:59 -

引用なし
パスワード
   ▼質問者 さん:

テンプレートの文書に、ブックマークを挿入しておいて
開いて、転記、保存
これを繰り返すとよいです。

転記でブックマーク設定は消えてしまうので
テンプレートから都度開けばよいです。
こんな感じです。

Sub test()
  Dim wd As Object
  Dim p As String
  Dim k As Long
  Const wdformatxmldocument = 12

  p = ThisWorkbook.Path & "\" & "雛形.docx"
  
  Set wd = CreateObject("word.application")
  wd.Visible = True

  For k = 2 To 3
    With wd.documents.Add(p)
      .bookmarks("日付").Range.Text = Cells(k, 1).Text
      .bookmarks("時間").Range.Text = Cells(k, 2).Text
      .bookmarks("住所").Range.Text = Cells(k, 3).Text
      .bookmarks("名前").Range.Text = Cells(k, 4).Text
      .SaveAs2 ThisWorkbook.Path & "\" & k & ".docx", wdformatxmldocument
      .Close
    End With
  Next
  
  wd.Quit

End Sub
・ツリー全体表示

【81688】Re:Excelの一覧表の情報を、Wordテンプレ...
発言  質問者  - 21/3/22(月) 20:41 -

引用なし
パスワード
   ▼γ さん:
>Wordには「差込印刷」というまさにこのための機能がありますね。
>それでは不都合なんですか?


回答ありがとうございます。
印刷するだけではなくて、ファイルを作成したいと考えています。
ファイルを100個くらい作成する必要があり、
マニュアルでコピペしていましたが、ミスも発生してしまい、
これがVBAで対応できると格段に効率が上がると思っております。
・ツリー全体表示

【81687】Re:Excelの一覧表の情報を、Wordテンプレ...
回答  γ  - 21/3/22(月) 20:31 -

引用なし
パスワード
   Wordには「差込印刷」というまさにこのための機能がありますね。
それでは不都合なんですか?
・ツリー全体表示

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