Excel VBA質問箱 IV

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

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


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

【80428】Re:カレンダーに予定を自動入力したい
回答  VBA初心者  - 19/2/14(木) 10:46 -

引用なし
パスワード
   ▼マナ さん:
>▼VBA初心者 さん:
>
>sheet1のA列とカレンダーの日付は
>それぞれ、どんなデータなのでしょう?
>
>1例ずつで構いませんので、例示お願いします。

sheet1の

A列には
2019/1/25
2019/1/8
2019/1/25
2019/1/1

B列にはすべて
SAMPLE

と打ち込んでいます。

カレンダーには
エクセルの年カレンダー(1つのタブで1か月)というものを使っております。
表示されている日数は日付のみです。

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

【80427】Re:検索フォームの動作について
質問  tarutaru  - 19/2/14(木) 3:30 -

引用なし
パスワード
   ▼tarutaru さん:
>マナ様、早速のご返信ありがとうございます。またご指導ありがとうございました。以後気を付けたいと思います。
>また、説明不足で大変申し訳ありません。
>早速ですが、「検索フォーム」に設置しているListBox1に表示する各Boxの中身は、
>Range(“B”) ComboBox1(役職) = “部 長”,”課 長”,”係 長”,”社 員”
>Range(“C”) ComboBox3(所属) = “営 業”,”内 勤”,”配 送”
>Range(“E”) TextBox1(氏名)
>Range(“I”) ComboBox4(血液型) = “A”,”B”,”O”,”AB”,
>Range(“T”) ComboBox2(配偶者) = “有”,無”
>Range(“P”) ComboBox7(所業構成) =
>Range(“Q”) ComboBox8(就業形態) = 
>Range(“J”) TextBox2(入社年月日) 2000/1/1
>Range(“K”) TextBox3(退職年月日) 2001/1/1
>TextBox6 = 該当数(数字)
>TextBox7 = 総 数(数字) 
>となります。
>
>配置している各Boxのいずれかに入力し、CommandButton1を押すと、該当するデータが抽出され、ListBox1に表示される(例えば、ComboBox1で”社 員”を選択すると、全ての社員のデータが、さらにそこからComboBox3で”内 勤”を選択すると、“社 員”の中から“内 勤”に該当する社員のデータが抽出される。)ようにしてあります。
>そこから、ListBox1に抽出されているデータを1クリック(アクティブに)して、CommandButton2を押すと
>“Sheet3”にAutoFilterを使用したListBox1の内容を転記したいと思っています。
>ところが、ListBox1には問題なく抽出データが表示されるのですが、”Sheet3”に、ListBox1と同じ表示ができません。
>また、ListBox1に抽出されているデータをダブルクリックすると、”Sheet3”の該当するCell(行)が選択表示できようにしたいのですが上手くできません。
>
>よろしくお願いいたします。


すみません。
2箇所未記入のところがありました。

Range(“P”) ComboBox7(所業構成) = ”文字列1”,”文字列2”,”文字列3”,”文字列4”
Range(“Q”) ComboBox8(就業形態) = “文字列1”,”文字列2”,”文字列3”,”文字列4”

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

【80426】Re:検索フォームの動作について
質問  tarutaru  - 19/2/13(水) 22:09 -

引用なし
パスワード
   マナ様、早速のご返信ありがとうございます。またご指導ありがとうございました。以後気を付けたいと思います。
また、説明不足で大変申し訳ありません。
早速ですが、「検索フォーム」に設置しているListBox1に表示する各Boxの中身は、
Range(“B”) ComboBox1(役職) = “部 長”,”課 長”,”係 長”,”社 員”
Range(“C”) ComboBox3(所属) = “営 業”,”内 勤”,”配 送”
Range(“E”) TextBox1(氏名)
Range(“I”) ComboBox4(血液型) = “A”,”B”,”O”,”AB”,
Range(“T”) ComboBox2(配偶者) = “有”,無”
Range(“P”) ComboBox7(所業構成) =
Range(“Q”) ComboBox8(就業形態) = 
Range(“J”) TextBox2(入社年月日) 2000/1/1
Range(“K”) TextBox3(退職年月日) 2001/1/1
TextBox6 = 該当数(数字)
TextBox7 = 総 数(数字) 
となります。

配置している各Boxのいずれかに入力し、CommandButton1を押すと、該当するデータが抽出され、ListBox1に表示される(例えば、ComboBox1で”社 員”を選択すると、全ての社員のデータが、さらにそこからComboBox3で”内 勤”を選択すると、“社 員”の中から“内 勤”に該当する社員のデータが抽出される。)ようにしてあります。
そこから、ListBox1に抽出されているデータを1クリック(アクティブに)して、CommandButton2を押すと
“Sheet3”にAutoFilterを使用したListBox1の内容を転記したいと思っています。
ところが、ListBox1には問題なく抽出データが表示されるのですが、”Sheet3”に、ListBox1と同じ表示ができません。
また、ListBox1に抽出されているデータをダブルクリックすると、”Sheet3”の該当するCell(行)が選択表示できようにしたいのですが上手くできません。

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

【80425】Re:検索フォームの動作について
発言  マナ  - 19/2/13(水) 19:15 -

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

回答側で、簡単に再現できるようにすると良いと思います。

例えば、

>フォームにはComboBox、TextBox等を配置し

これではだめです。
必要な部品をすべて列挙すべきです。

また、コードを実行するための
サンプルデータも必須です。

マルチポストしてもあまり意味はないと思います。
・ツリー全体表示

【80424】Re:カレンダーに予定を自動入力したい
発言  マナ  - 19/2/13(水) 18:56 -

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

sheet1のA列とカレンダーの日付は
それぞれ、どんなデータなのでしょう?

1例ずつで構いませんので、例示お願いします。
・ツリー全体表示

【80423】Re:カレンダーに予定を自動入力したい
回答  VBA初心者  - 19/2/13(水) 14:12 -

引用なし
パスワード
   ▼マナ さん:
>▼VBA初心者 さん:
>
>>Worksheet(1月〜12月)にカレンダーを表示させてあります。
>
>まず、1月のシートだけで、ちゃんと動くものにしてください。

マナ様
いつもお世話になっております。
お返事ありがとうございます。

1月のシートのみでしたらγ様が教えてくださったコードで動きました。

Sub カレンダー入力新規()
  Dim ws1     As Worksheet
  Dim ws2     As Worksheet
  Dim lastRow   As Long
  Dim rngCalendar As Range
  Dim rngFound  As Range
  Dim rngFirstcell As Range
  Dim d      As Long
  Dim s      As String
  Dim k      As Long
  Dim i      As Long
  Dim j      As Long
  

  Set ws1 = Worksheets("Sheet1")
  Set ws2 = Worksheets("1月")
  lastRow = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
  
  Set rngCalendar = ws2.Range("A1:H14")


   For k = 1 To lastRow
     d = ws1.Cells(k, 1).Value '日付け
     s = ws1.Cells(k, 2).Value 'スケジュール
     i = CLng(d) '日付をシリアル値に変更
    
    
     Set rngFound = rngCalendar.Find(i, After:=rngCalendar(1), _
      LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
      MatchCase:=False, MatchByte:=False, SearchFormat:=False)
  
    
    If d = rngFound.Value Then
      Call setSchedule(rngFound.Offset(1, 0), s)
    
    Else
      Set rngFound = rngCalendar.FindNext(rngFound)
      
      If Not rngFound Is Nothing Then
        
        If d = rngFound.Value Then
          Call setSchedule(rngFound.Offset(1, 0), s)
    
        End If
      
      End If
    
    End If
  
   Next k
  
End Sub

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


これです!
・ツリー全体表示

【80422】検索フォームの動作について
質問  tarutaru  - 19/2/13(水) 13:36 -

引用なし
パスワード
   VBA初心者です。
入力フォームと検索フォームを作成し、データ処理を行おうと思っています。
問題は、検索フォームの方なのですが、フォームにはComboBox、TextBox等を配置し
入力が終わった後、CommandButtonをクリックすると、ListBoxに結果が表示され、
別のCommandButtonをクリックすると"Sheet3"にその結果が転記されるようにしたいのですが、 以下の問題が発生し、解決できず困っています。

1.検索フォームのListBoxには各入力Boxの結果が反映されているのだが、"Sheet3"にそのまま反映されない。 ※AutoFilter Fieldを2列目に指定しているため、Range("B3:T3")計19項目(うち検索フォームは10項目)の検索ができていない。

2.AListBoxに表示されているListをダブルクリックしてもデバックが発生し該当行が変化しない。

3."Sheet3"に反映させるには、一度ListBoxのListを選択し、CommandButtonを押さないといけない。
ネットで色々と調べてはいるのですが、思っているような答えが見つからずにいます。
どなたかお詳しい方がいらっしゃればご教示お願い致します。
よろしくお願いいたします。

Option Explicit
‘-------------------------------------------------------------------------------------
Private Sub CommandButton1_Click()
 Dim LastRow As Long  
 Dim myData, myData2(), myno  
 Dim i As Long, j As Long, cn As Long  
 Dim key1 As String, key2 As String, key3 As String, key4 As String, key5 As String, key6 As String, _
    key7 As String, key8 As String, key9 As String, key10 As String
 Dim ListNo As Long

  ListNo = ComboBox1.ListIndex  
  If ListNo < 0 Then      
   key1 = "*"
  Else
   key1 = ComboBox1.List(ListNo)
  End If
  
    Dim ListNo1 As Long
     ListNo1 = ComboBox3.ListIndex
     If ListNo1 < 0 Then
      key2 = "*"
     Else
      key2 = ComboBox3.List(ListNo1)
     End If
   
 If TextBox1.Value = "" Then key3 = "*" Else key3 = "*" & TextBox1.Value & "*" 

 Dim ListNo2 As Long
  ListNo2 = ComboBox4.ListIndex
  If ListNo2 < 0 Then
   key4 = "*"
  Else
   key4 = ComboBox4.List(ListNo2)
  End If
 
    Dim ListNo3 As Long
     ListNo3 = ComboBox2.ListIndex
     If ListNo3 < 0 Then
      key5 = "*"
     Else
      key5 = ComboBox2.List(ListNo3)
     End If
 
       Dim ListNo4 As Long
        ListNo4 = ComboBox7.ListIndex
        If ListNo4 < 0 Then
         key6 = "*"
        Else
         key6 = ComboBox7.List(ListNo4)
        End If

    Dim ListNo5 As Long
     ListNo5 = ComboBox8.ListIndex
     If ListNo5 < 0 Then
      key7 = "*"
     Else
      key7 = ComboBox8.List(ListNo5)
     End If

  If TextBox2.Value = "" Then key8 = "*" Else key8 = "*" & TextBox2.Value & "*"

  If TextBox3.Value = "" Then key9 = "*" Else key9 = "*" & TextBox3.Value & "*"

  If TextBox5.Value = "" Then key10 = "*" Else key10 = "*" & TextBox5.Value & "*"
  
With Worksheets("2019.4")
   LastRow = .Cells(Rows.Count, 2).End(xlUp).Row  
  myData = .Range(.Cells(3, 1), .Cells(LastRow, 20)).Value 
 End With

ReDim myData2(1 To LastRow, 1 To 10)
For i = LBound(myData) To UBound(myData)  
 If myData(i, 2) Like key1 And myData(i, 3) Like key2 And myData(i, 5) Like key3 And myData(i, 9) _
 Like key4 And myData(i, 20) Like key5 And myData(i, 16) Like key6 And myData(i, 17) Like key7 _
And myData(i, 10) Like key8 And myData(i, 11) Like key9 And myData(i, 8) Like key10 Then
  cn = cn + 1                                   
  myData2(cn, 1) = myData(i, 2)
  myData2(cn, 2) = myData(i, 3)
  myData2(cn, 3) = myData(i, 5)
  myData2(cn, 4) = myData(i, 9)
  myData2(cn, 5) = myData(i, 20)
  myData2(cn, 6) = myData(i, 16)
  myData2(cn, 7) = myData(i, 17)
  myData2(cn, 8) = myData(i, 10)
  myData2(cn, 9) = myData(i, 11)
  myData2(cn, 10) = myData(i, 8)
 End If
Next i

 With ListBox1
  .ColumnCount = 10  
  .ColumnWidths = "45;40;65;20;20;60;60;60;60;20"
  .List = myData2  
 End With
TextBox7.Value = Worksheets("2019.4").Cells(Rows.Count, 2).End(xlUp).Row - 2
End Sub
‘------------------------------------------------------------------------------------------------------
Private Sub CommandButton2_Click()
ComboBox1 = ""
ComboBox2 = ""
ComboBox3 = ""
ComboBox4 = ""
ComboBox5 = ""
ComboBox6 = ""
ComboBox7 = ""
ComboBox8 = ""
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox5 = ""
TextBox6 = ""
ListBox1.Clear

Worksheets("2019.4").Activate  
End Sub
‘-----------------------------------------------------------------------------------------------------
Private Sub CommandButton3_Click()
Dim myFld, myCri
Dim myRow4 As String
Dim Sh2 As Worksheet, Sh3 As Worksheet

 Set Sh2 = Worksheets("2019.4")
 Set Sh3 = Worksheets("Sheet3")
 
  myFld = 2
 
  myCri = UserForm2.ListBox1.Value
 
   With Sh2
  .Range("A1").AutoFilter Field:=myFld, Criteria1:=myCri 
   myRow4 = .Range("A" & Rows.Count).End(xlUp).Row
  
     Sh3.Range("A:T").ClearContents
   
    .Range("A1:T" & myRow4).Copy Sh3.Range("A1")
   
   TextBox6.Value = Worksheets("sheet3").Cells(Rows.Count, 2).End(xlUp).Row - 2     
   .Range("A1").AutoFilter
  End With
 
 Sh3.Activate  
 Range("A1").Select

End Sub
‘--------------------------------------------------------------------------------------------------
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 
With Worksheets("2019.4")
  .Range(.Cells(ListBox1.List(ListBox1.ListIndex, 0) + 2, 2), .Cells(ListBox1.List(ListBox1.ListIndex, 0) + 2, 20)).Select
End With
End Sub
‘----------------------------------------------------------------------------------------------------
Private Sub userform2_initialize()

Dim LastRow As Long
Dim myData, mayData2(), myno
Dim i As Long, j As Long, cn As Long

 With Worksheets("2019.4")
   LastRow = .Cells(Rows.Count, 2).End(xlUp).Row 
  myData = .Range(.Cells(3, 1), .Cells(LastRow, 20)).Value 
End With

ReDim myData2(1 To LastRow, 1 To 10)
 For i = LBound(myData) To UBound(myData) 
   myData2(i, 1) = myData(i, 2)
   myData2(i, 2) = myData(i, 3)
   myData2(i, 3) = myData(i, 5)
   myData2(i, 4) = myData(i, 9)
   myData2(i, 5) = myData(i, 20)
   myData2(i, 6) = myData(i, 16)
   myData2(i, 7) = myData(i, 17)
   myData2(i, 8) = myData(i, 10)
   myData2(i, 9) = myData(i, 11)
   myData2(i, 10) = myData(i, 8)
   
  Next i
 
 With ListBox1  
  .ColumnCount = 10  
  .ColumnWidths = "45;40;65;20;20;60;60;60;60;20"
  .List = myData2  
 End With

Dim lastRow2 As Long
Dim myData3

End Sub
・ツリー全体表示

【80421】Re:見積FMの情報を集計したい
発言  マナ  - 19/2/12(火) 19:36 -

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

>ただ、速さはあまり変わらないように感じました。
>

100回のコピペなら1秒もかからないと思います。
どのくらい時間がかかっているのでしょうか?
・ツリー全体表示

【80420】Re:カレンダーに予定を自動入力したい
発言  マナ  - 19/2/12(火) 19:30 -

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

>Worksheet(1月〜12月)にカレンダーを表示させてあります。

まず、1月のシートだけで、ちゃんと動くものにしてください。
・ツリー全体表示

【80419】Re:分類表示を並び替えたい2
質問  riki7 E-MAIL  - 19/2/12(火) 10:40 -

引用なし
パスワード
   マナ先生
可能であれば、またマクロ式でご教授お願い致します。

▼マナ さん:
>▼riki7 さん:
>
>用意する配列を大きくすれば同じロジックで可能です。
>配列(大大分類,大分類,中分類,小分類,品物,大きさ,単価,個数,掲載,別掲載)
・ツリー全体表示

【80418】Re:カレンダーに予定を自動入力したい
回答  VBA初心者  - 19/2/12(火) 9:28 -

引用なし
パスワード
   ▼マナ さん:
>▼VBA初心者 さん:
>
>>原因として考えられるのは、検索した結果(rngFound)がdと一つも当てはまらなかった場合の処理が入っていないということかなと思うのですが、その場合どうすればいいでしょうか?
>>
>>自分としてはIf Not rngFound Is Nothing Thenを使えばいいと思い、何度か組んでみたのですがすべてエラーになってしまうので、教えていただきたいです。
>
>最初の検索の直後に挿入するのでは?
>どのように試したのか提示してください。


マナ様

いつもお世話になっております。

Worksheet("Sheet1")に日付とスケジュール
Worksheet(1月〜12月)にカレンダーを表示させてあります。


Sub カレンダー入力新規()
  Dim ws1     As Worksheet
  Dim ws2     As Worksheet
  Dim lastRow   As Long
  Dim rngCalendar As Range
  Dim rngFound  As Range
  Dim rngFirstcell As Range
  Dim d      As Long
  Dim s      As String
  Dim k      As Long
  Dim i      As Long
  Dim j      As Long
  
  
  For j = 1 To 12

  Set ws1 = Worksheets("Sheet1")
  Set ws2 = Worksheets(j & " " & "月")
  lastRow = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
  
  Set rngCalendar = ws2.Range("A1:H14")


   For k = 1 To lastRow
     d = ws1.Cells(k, 1).Value '日付け
     s = ws1.Cells(k, 2).Value 'スケジュール
     i = CLng(d) '日付をシリアル値に変更
    
    
     Set rngFound = rngCalendar.Find(i, After:=rngCalendar(1), _
      LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
      MatchCase:=False, MatchByte:=False, SearchFormat:=False)
  
    
    If d = rngFound.Value Then
      Call setSchedule(rngFound.Offset(1, 0), s)
    
    Else
      Set rngFound = rngCalendar.FindNext(rngFound)
      
      If Not rngFound Is Nothing Then
        
        If d = rngFound.Value Then
          Call setSchedule(rngFound.Offset(1, 0), s)
    
        End If
      
      End If
    
    End If
  
   Next k
   
  Next j
  
End Sub

Function setSchedule(r As Range, s As String)
  If r.Value = "" Then
    r.Value = s
  Else
    r.Value = r.Value & vbLf & s
  End If
End Function
・ツリー全体表示

【80417】Re:見積FMの情報を集計したい
回答  mkmk  - 19/2/12(火) 0:52 -

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

SELECT記述をしないとすっきりしますね。
ただ、速さはあまり変わらないように感じました。

他に良い方法があると良いのですが・・・
・ツリー全体表示

【80416】Re:分類表示を並び替えたい2
発言  マナ  - 19/2/11(月) 23:26 -

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

用意する配列を大きくすれば同じロジックで可能です。
配列(大大分類,大分類,中分類,小分類,品物,大きさ,単価,個数,掲載,別掲載)
・ツリー全体表示

【80415】分類表示を並び替えたい2
質問  riki7  - 19/2/11(月) 23:14 -

引用なし
パスワード
   /は列区切りです
以下の並びがあります
1/大大分類名1
2/大分類名1
3/中分類名1
4/小分類名1
/品物名X/大きさ/単価/個数=2/掲載ページ/別掲載ページ
/品物名Y/大きさ/単価/個数=1/掲載ページ/別掲載ページ
4/小分類名2
/品物名Y/大きさ/単価/個数=3/掲載ページ/別掲載ページ
4/小分類名3
/品物名X/大きさ/単価/個数=2/掲載ページ/別掲載ページ
/品物名Z/大きさ/単価/個数=3/掲載ページ/別掲載ページは無いのでブランク
3/中分類名2
4/小分類名1
/品物名X/大きさ/単価/個数=1/掲載ページ/別掲載ページ
/品物名Y/大きさ/単価/個数=1/掲載ページ/別掲載ページ
2/大分類名2
3/中分類名2
4/小分類名1
/品物名X/大きさ/単価/個数=3/掲載ページ/別掲載ページ
/品物名Y/大きさ/単価/個数=2/掲載ページ/別掲載ページ
この並びを下記の一覧に変換させるマクロを作るにはどうしたら良いでしょうか?
以前似たような質問をして解決したのですが
今度は
品物名の横のセルから品物の情報や個数が横に並べて表示してあるケースにてまた悩んでしまいました。
大大分類名1/大分類名1/中分類名1/小分類名1/品物名X/大きさ/単価/個数=2/掲載ページ/別掲載ページ
大大分類名1/大分類名1/中分類名1/小分類名1/品物名Y/大きさ/単価/個数=1/掲載ページ/別掲載ページ
大大分類名1/大分類名1/中分類名1/小分類名2/品物名Y/大きさ/単価/個数=3/掲載ページ/別掲載ページ
大大分類名1/大分類名1/中分類名1/小分類名3/品物名X/大きさ/単価/個数=2/掲載ページ/別掲載ページ
大大分類名1/大分類名1/中分類名1/小分類名3/品物名Z/大きさ/単価/個数=3/掲載ページ/別掲載ページは無いのでブランク
大大分類名1/大分類名1/中分類名2/小分類名1/品物名X/大きさ/単価/個数=1/掲載ページ/別掲載ページ
大大分類名1/大分類名1/中分類名2/小分類名1/品物名Y/大きさ/単価/個数=1/掲載ページ/別掲載ページ
大大分類名1/大分類名2/中分類名2/小分類名1/品物名X/大きさ/単価/個数=3/掲載ページ/別掲載ページ
大大分類名1/大分類名2/中分類名2/小分類名1/品物名Y/大きさ/単価/個数=2/掲載ページ/別掲載ページ
・ツリー全体表示

【80414】Re:見積FMの情報を集計したい
発言  マナ  - 19/2/11(月) 22:51 -

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

とりあえず、こんな感じで
selectしない記述にしてください。

で、規則性がわかるように2シート分作成してみてください。

  Sheet11.Range("C1:C2").Copy
  Sheets("date集計").Range("B5:C17").PasteSpecial Paste:=xlPasteValues, Transpose:=True
・ツリー全体表示

【80413】Re:見積FMの情報を集計したい
回答  mkmk  - 19/2/11(月) 22:22 -

引用なし
パスワード
   早速のご返答ありがとうございます。

実は項目はもう少し多くありまして、
一つのsheetで下記の記述になっています。
sheet12〜は貼り付け先の場所を変えています。

引き続き宜しくお願い致します。

Sheet11.Select
  Range("C1").Select
  Selection.Copy
  Sheets("date集計").Select
  Range("B5:B17").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Sheet11.Select
  Range("C2").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("date集計").Select
  Range("C5:C17").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Sheet11.Select
  Range("C9").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("date集計").Select
  Range("D5:D17").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Sheet11.Select
  Range("C10").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("date集計").Select
  Range("E5:E17").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Sheet11.Select
  Range("C50").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("date集計").Select
  Range("F5:F17").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Sheet11.Select
  Range("C51").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("date集計").Select
  Range("G5:G17").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Sheet11.Select
  Range("C52").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("date集計").Select
  Range("H5:H17").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Sheet11.Select
  Range("C53").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("date集計").Select
  Range("I5:I17").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Sheet11.Select
  Range("C54").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("date集計").Select
  Range("J5:J17").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Sheet11.Select
  ActiveWindow.SmallScroll Down:=-24
  Range("B14:E14").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("date集計").Select
  Range("K5:N17").Select
  Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
  Sheet11.Select
  Range("C16").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("date集計").Select
  Range("O5:O17").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  ActiveWindow.SmallScroll ToRight:=7
  Sheet11.Select
  Range("E16").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("date集計").Select
  Range("P5:P17").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  Sheet11.Select
  Range("B21:N33").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("date集計").Select
  Range("Q5").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
  ActiveWindow.SmallScroll ToRight:=11
  Sheet11.Select
  ActiveWindow.SmallScroll Down:=9
  Range("B37:N48").Select
  Application.CutCopyMode = False
  Selection.Copy
  Sheets("date集計").Select
  Range("AD5").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False


▼マナ さん:
>▼mkmk さん:
>
>>excelのマクロ登録でsheet1のコピペを登録し、
>>sheet2〜は貼り付け先の場所の場所の変更で記録を
>>したのですが、実行に時間がかかってしまいます。
>
>全部で5×20回のコピペですよね。
>時間がかかると思えないのですが?
>
>>繰り返しの記述等で簡素化できる方法を教えて下さい。
>
>まずは、現在のコードを提示お願いします。
・ツリー全体表示

【80412】Re:見積FMの情報を集計したい
発言  マナ  - 19/2/11(月) 21:53 -

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

>excelのマクロ登録でsheet1のコピペを登録し、
>sheet2〜は貼り付け先の場所の場所の変更で記録を
>したのですが、実行に時間がかかってしまいます。

全部で5×20回のコピペですよね。
時間がかかると思えないのですが?

>繰り返しの記述等で簡素化できる方法を教えて下さい。

まずは、現在のコードを提示お願いします。
・ツリー全体表示

【80411】見積FMの情報を集計したい
質問  mkmk  - 19/2/11(月) 21:34 -

引用なし
パスワード
   vba超初心者です。
何卒ご教授下さい。

EXCELでの見積書フォーマットを作成(20シート分)し、
最後のシートで集計するVBAを作成したいです。

FMシート(sheet1-20)
C1 提出日
C9 企業CD
D10 企業名
B21:N33 商品見積内容

集計シート(sheet21)
sheet1〜
提出日 B5:B17
企業CD C5:C17
企業名 D5:D17
商品別見積内容F5:R17
:
:
sheet2
提出日 B18:30

という形で集計したく、
excelのマクロ登録でsheet1のコピペを登録し、
sheet2〜は貼り付け先の場所の場所の変更で記録を
したのですが、実行に時間がかかってしまいます。

繰り返しの記述等で簡素化できる方法を教えて下さい。
お願いします。
・ツリー全体表示

【80410】Re:複数条件で一致を見つけ、特定の条件...
発言  マナ  - 19/2/11(月) 18:19 -

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

>小計機能を使う事でどのように共通項目を1行にまとめ、
>非共通項をその下に続けるのか、イメージがつかず、

小計のあとは、地道に、コピーペーストの繰り返しです。
共通項目は、1行だけ選んでコピーすればよいのです。
・ツリー全体表示

【80409】Re:複数条件で一致を見つけ、特定の条件...
回答  もち吉  - 19/2/11(月) 17:41 -

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

理解力が不足しており申し訳ありません。

マナ様からいただいたアドバイスの通り、
小計機能を使う事でどのように共通項目を1行にまとめ、
非共通項をその下に続けるのか、イメージがつかず、
ご教示いただけないでしょうか?

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

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