Excel VBA質問箱 IV

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

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


1 / 3743 ページ 前へ→

【80493】Re:カレンダーに予定を自動入力したい
発言[NEW]  マナ  - 19/2/18(月) 17:46 -

引用なし
パスワード
   ▼VBA初心者 さん:

申し訳ありませんが1月だけのコードで議論させていただけませんか。
・ツリー全体表示

【80492】Re:オートフィルターの可変できる絞り込み
お礼[NEW]  VBA勉強始めました  - 19/2/18(月) 16:05 -

引用なし
パスワード
   ピンク様

ありがとうございます!
教えて頂いたコードで無事動きました!

もっと良い参考書を購入してさらに勉強したいと思います。
本当にありがとうございました。


▼ピンク さん:
>>InputBoxで入力した数値以外にフィルターをかけたい場合は
>>Criteria1:="<>Autofilter"だとエラーになるのですが
>>どのようにすれば○以外でフィルターができますか?
>
>n値、以外は
>Dim n As Long
>n = InputBox("抽出したい大分類コードを入力してください。")
>ActiveSheet.Range("A1").AutoFilter _
>  Field:=9, Criteria1:="<>" & n
・ツリー全体表示

【80491】Re:オートフィルターの可変できる絞り込み
発言[NEW]  ピンク  - 19/2/18(月) 14:28 -

引用なし
パスワード
   >InputBoxで入力した数値以外にフィルターをかけたい場合は
>Criteria1:="<>Autofilter"だとエラーになるのですが
>どのようにすれば○以外でフィルターができますか?

n値、以外は
Dim n As Long
n = InputBox("抽出したい大分類コードを入力してください。")
ActiveSheet.Range("A1").AutoFilter _
  Field:=9, Criteria1:="<>" & n
・ツリー全体表示

【80490】Re:オートフィルターの可変できる絞り込み
発言[NEW]  VBA勉強始めました  - 19/2/18(月) 14:13 -

引用なし
パスワード
   ピンク様

色々教えて頂き、ありがとうございます。
私の参考書では「変数はあとで見てもわかるように」とあったので
分かりやすくしたのですが好ましくないのですね・・・
すぐにご教授頂いた通り、修正しました。


▼ピンク さん:
>>  Autofilter = InputBox("抽出したい大分類コードを入力してください。")
>
>Autofilter を変数に使用するのは好ましくないので
>
>Dim n As Long
>n = InputBox("抽出したい大分類コードを入力してください。")
>ActiveSheet.Range("A1").Autofilter _
>  Field:=9, Criteria1:=n
・ツリー全体表示

【80489】Re:オートフィルターの可変できる絞り込み
質問[NEW]  VBA勉強始めました  - 19/2/18(月) 14:11 -

引用なし
パスワード
   ピンク様

ご回答いただき、ありがとうございます!
もしよろしければ、もう一つ教えて頂きたいのですが
InputBoxで入力した数値以外にフィルターをかけたい場合は
Criteria1:="<>Autofilter"だとエラーになるのですが
どのようにすれば○以外でフィルターができますか?

よろしくお願い致します。


▼ピンク さん:
>  Dim Autofilter As Long
>  Autofilter = InputBox("抽出したい大分類コードを入力してください。")
>  ActiveSheet.Range("A1").Autofilter _
>      Field:=9, Criteria1:=Autofilter
・ツリー全体表示

【80488】Re:オートフィルターの可変できる絞り込み
発言[NEW]  ピンク  - 19/2/18(月) 14:11 -

引用なし
パスワード
   >  Autofilter = InputBox("抽出したい大分類コードを入力してください。")

Autofilter を変数に使用するのは好ましくないので

Dim n As Long
n = InputBox("抽出したい大分類コードを入力してください。")
ActiveSheet.Range("A1").Autofilter _
  Field:=9, Criteria1:=n
・ツリー全体表示

【80487】Re:カレンダーに予定を自動入力したい
回答[NEW]  VBA初心者  - 19/2/18(月) 14:09 -

引用なし
パスワード
   ▼マナ さん:
>▼VBA初心者 さん:
>
>>カレンダーには
>>エクセルの年カレンダー(1つのタブで1か月)というものを使っております。
>>表示されている日数は日付のみです。
>
>
>γさんの回答のように、Day(d)で検索しなくて大丈夫?
>本当に、シリアル値 CLng(d)で検索ができていますか。

Day(d)で検索するマクロを考えてみました。
ですが、これだとエラーは出ないものの正しく入力されませんでした。
なぜ入力されないか教えていただきたいです。

Sub カレンダー入力新規2()

  Dim ws1     As Worksheet
  Dim lastRow   As Long
  Dim rngCalendar As Range
  Dim rngFound   As Range
  Dim rngFirstcell As Range
  
  Dim A      As Long
  
  Dim h      As Long
  Dim i      As String
  Dim j      As Long
  Dim k      As Long
  Dim l      As String
  
  Set ws1 = Worksheets("Sheet1")
  lastRow = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
  
  For A = 1 To lastRow
  
     h = ws1.Cells(A, 1).Value '日付け
     i = ws1.Cells(A, 2).Value 'スケジュール
     j = Month(d)        '日付から月を抜く
     k = Day(d)         '日付から日を抜く
   
     
  If j = 1 Then
   Set rngCalendar = Worksheets(1 & " " & "月").Range("B3:H13")
  ElseIf j = 2 Then
   Set rngCalendar = Worksheets(2 & " " & "月").Range("B3:H13")
  ElseIf j = 3 Then
   Set rngCalendar = Worksheets(3 & " " & "月").Range("B3:H13")
  ElseIf j = 4 Then
   Set rngCalendar = Worksheets(4 & " " & "月").Range("B3:H13")
  ElseIf j = 5 Then
   Set rngCalendar = Worksheets(5 & " " & "月").Range("B3:H13")
  ElseIf j = 6 Then
   Set rngCalendar = Worksheets(6 & " " & "月").Range("B3:H13")
  ElseIf j = 7 Then
   Set rngCalendar = Worksheets(7 & " " & "月").Range("B3:H13")
  ElseIf j = 8 Then
   Set rngCalendar = Worksheets(8 & " " & "月").Range("B3:H13")
  ElseIf j = 9 Then
   Set rngCalendar = Worksheets(9 & " " & "月").Range("B3:H13")
  ElseIf j = 10 Then
   Set rngCalendar = Worksheets(10 & " " & "月").Range("B3:H13")
  ElseIf j = 11 Then
   Set rngCalendar = Worksheets(11 & " " & "月").Range("B3:H13")
  ElseIf j = 12 Then
   Set rngCalendar = Worksheets(12 & " " & "月").Range("B3:H13")
  End If


  Set rngFound = rngCalendar.Find(k, After:=rngCalendar(1), _
      LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
      MatchCase:=False, MatchByte:=False, SearchFormat:=False)
  
    
    If k = rngFound.Value Then
      Call setSchedule(rngFound.Offset(1, 0), l)
    
    Else
      Set rngFound = rngCalendar.FindNext(rngFound)
      
      If Not rngFound Is Nothing Then
        
        If d = rngFound.Value Then
          Call setSchedule(rngFound.Offset(1, 0), l)
   
        End If
      
      End If
    
    End If
   
  Next A
   
End Sub

Function setSchedule(r As Range, l As String)
  If r.Value = "" Then
    r.Value = l
  Else
    r.Value = r.Value & vbLf & l
  End If
End Function


End Function
・ツリー全体表示

【80486】Re:オートフィルターの可変できる絞り込み
回答[NEW]  ピンク  - 19/2/18(月) 14:06 -

引用なし
パスワード
     Dim Autofilter As Long
  Autofilter = InputBox("抽出したい大分類コードを入力してください。")
  ActiveSheet.Range("A1").Autofilter _
      Field:=9, Criteria1:=Autofilter
・ツリー全体表示

【80485】オートフィルターの可変できる絞り込み
質問[NEW]  VBA勉強始めました  - 19/2/18(月) 12:16 -

引用なし
パスワード
   初めまして。

仕事の効率化の為にとVBAの参考書を購入し
Webなども参考にしつつ、見よう見まねで作成しているのですが
どうしてもこれが分からず先に進みません・・・。


A列〜BD列まで、行数は月によって増減しますが、
それぞれに文字列ないし数値が入ったファイルを使用しております。
このファイルのI列には1〜15までの数値が入力されており、
I列にオートフィルターを設定し、任意の数値でフィルターをかけたいと考えており
下記のようなコマンドを作ったのですがオートフィルターまではうまくいけるのですが
I列のフィルターがInputBoxで入力した数値以外での絞り込みになりません・・・。

フィルターの中身を確認すると数値フィルターの値がAutofilterのなっています。
Criteria1:="<>Autofilter"←ここが間違っているのだとは分かるのですが
参考書にも書いてなくてどう直せば良いのかが分かりません・・・。

皆様のお知恵を貸していただきたく、投稿させて頂きました。
どうか、よろしくお願い致します。


Sub Autofilter()

Dim Autofilter As Long
Autofilter = InputBox("抽出したい大分類コードを入力してください。")
Selection.Autofilter
ActiveSheet.Range("A1").Autofilter _
      Field:=9, Criteria1:="<>Autofilter"
End Sub
・ツリー全体表示

【80484】Re:時間の足し算を行うと、yyyy/mm/dd h...
お礼[NEW]  amatsuno  - 19/2/18(月) 8:07 -

引用なし
パスワード
   ▼マナ さん:
>▼amatsubo さん:
>
>正しく集計できているのでしょうか

すいません。どうやっても同じ結果しか出ないので、
もう一度確認してみます
・ツリー全体表示

【80483】Re:EXCEL2010 VBA オートフィルタ
お礼[NEW]  りょうた  - 19/2/18(月) 5:49 -

引用なし
パスワード
   ありがとうございました
・ツリー全体表示

【80482】Re:EXCEL2010 VBA オートフィルタ
発言[NEW]  マナ  - 19/2/17(日) 21:50 -

引用なし
パスワード
   ▼りょうた さん:

手作業で抽出できないものは、マクロでもできません。
オートフィルタでなく、
フィルタオプションを使用してください。
(これで3回めです)
・ツリー全体表示

【80481】Re:EXCEL2010 VBA オートフィルタ
発言[NEW]  りょうた  - 19/2/17(日) 21:38 -

引用なし
パスワード
   ピンク様

ありがとうございます


1つ目はC列の年月日が大きくて、
AQ列のABCを選択してデータを表示

2つ目はC列の年月日とAQ列のAEWQを選択して
データを表示

したいのですが
ABCはmaxdayだけが、対象になり
AEWQはmindayとmaxdayが、対象になるのですか?
・ツリー全体表示

【80480】Re:検索フォームの動作について
お礼[NEW]  tarutaru  - 19/2/17(日) 20:50 -

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

アドバイスありがとうございます。
2通り作成し、どちらがいいか試してみたいと思います。
・ツリー全体表示

【80479】Re:行のデータをクリアして1行づつ繰り上...
お礼[NEW]  ノンボ  - 19/2/17(日) 20:39 -

引用なし
パスワード
   ▼ピンク さん:
>参考に
>Sub Test6()
>  Dim myRow As Long, i As Long, j As Long
>  myRow = 2: j = 9
>  Do Until myRow > 10
>    If Cells(myRow, "B").Value = 0 Or Cells(myRow, "B").Value = "" Then
>      myRow = myRow + 1
>    ElseIf Cells(myRow, "B").Value > 0 And Cells(myRow, "U").Value > 0 Then
>      myRow = myRow + 1
>    ElseIf Cells(myRow, "U").Value = 0 Or Cells(myRow, "U").Value = "" Then
>      For i = myRow To j
>        Cells(i + 1, 1).Resize(, 23).Copy Cells(i, 1)
>      Next
>      Cells(j + 1, 1).Resize(, 23).ClearContents
>      Cells(j + 1, "G").FormulaR1C1 = "=RC[-5]*8%"
>      Cells(j + 1, "K").FormulaR1C1 = "=RC[-9]+RC[-4]"
>      Cells(j + 1, "U").FormulaR1C1 = "=RC[-10]-RC[-4]"
>      j = j - 1
>    End If
>  Loop
>  MsgBox "終わり"
>End Sub

ピンクさん、参考のコードをかいていただきましてたいへんありがとうございました。とてもうまくいきました。もっと勉強するように努力します。
本当にありがとうございました。
・ツリー全体表示

【80478】Re:EXCEL2010 VBA オートフィルタ
回答[NEW]  ピンク  - 19/2/17(日) 19:31 -

引用なし
パスワード
   >※1と※2のデータをシートに一度で表示するには
>どのようにしたらよいでしょうか?

With ActiveSheet.Range("$A$1:$AW" & LastRow)
  .AutoFilter Field:=3, Criteria1:=MaxDay, Operator:=xlOr, Criteria2:=MinDay
  .AutoFilter Field:=43, Criteria1:="ABC", Operator:=xlOr, Criteria2:="AEWQ"
End With
・ツリー全体表示

【80477】Re:検索フォームの動作について
発言[NEW]  マナ  - 19/2/17(日) 18:55 -

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

現行とかなり変わってしまうかもしれませんが
こんな感じが一番すっきりしそうに思いました。
(フィルタオプション案です)

1)条件設定:コンボボックス、テキストボックス
   ↓
2)コマンドボタン
   ↓
3)フィルタオプションでSheet3に抽出
   ↓
4)Sheet3のデータをリストボックスに表示
   ↓
5)条件変更:コンボボックス、テキストボックス
   ↓
  繰り返し
・ツリー全体表示

【80476】Re:行のデータをクリアして1行づつ繰り上...
回答[NEW]  ピンク  - 19/2/17(日) 18:53 -

引用なし
パスワード
   参考に
Sub Test6()
  Dim myRow As Long, i As Long, j As Long
  myRow = 2: j = 9
  Do Until myRow > 10
    If Cells(myRow, "B").Value = 0 Or Cells(myRow, "B").Value = "" Then
      myRow = myRow + 1
    ElseIf Cells(myRow, "B").Value > 0 And Cells(myRow, "U").Value > 0 Then
      myRow = myRow + 1
    ElseIf Cells(myRow, "U").Value = 0 Or Cells(myRow, "U").Value = "" Then
      For i = myRow To j
        Cells(i + 1, 1).Resize(, 23).Copy Cells(i, 1)
      Next
      Cells(j + 1, 1).Resize(, 23).ClearContents
      Cells(j + 1, "G").FormulaR1C1 = "=RC[-5]*8%"
      Cells(j + 1, "K").FormulaR1C1 = "=RC[-9]+RC[-4]"
      Cells(j + 1, "U").FormulaR1C1 = "=RC[-10]-RC[-4]"
      j = j - 1
    End If
  Loop
  MsgBox "終わり"
End Sub
・ツリー全体表示

【80475】Re:検索フォームの動作について
お礼[NEW]  tarutaru  - 19/2/17(日) 17:33 -

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

お忙しい中、懇切丁寧にご教示いただき、大変ありがとうございます。

後日、ご教示いただいたステートメントで再構成したいと思います。
結果につきましても、報告させていただきます。

マナ様のような上級者が周りにいないもので、本当に助かります。

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

【80474】Re:行のデータをクリアして1行づつ繰り上...
お礼  ノンボ  - 19/2/17(日) 11:35 -

引用なし
パスワード
    ありがとうございました。

 いろいろ教えていただきまして助かりました。あとは自分で努力してみます。
 すみませんでした。
・ツリー全体表示

1 / 3743 ページ 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free