Excel VBA質問箱 IV

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

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


7553 / 13645 ツリー ←次へ | 前へ→

【38304】組番号等で選択範囲を取得するには。 くれよん 06/5/31(水) 9:38 質問[未読]
【38306】追記です。。 くれよん 06/5/31(水) 10:08 質問[未読]
【38307】Re:追記です。。 Statis 06/5/31(水) 10:12 発言[未読]
【38319】Re:追記です。。 くれよん 06/5/31(水) 12:26 質問[未読]
【38320】Re:追記です。。 Statis 06/5/31(水) 12:39 回答[未読]
【38325】Re:追記です。。 くれよん 06/5/31(水) 13:05 質問[未読]
【38329】Re:追記です。。 ハチ 06/5/31(水) 14:18 発言[未読]
【38332】Re:追記です。。 くれよん 06/5/31(水) 14:41 お礼[未読]
【38330】Re:追記です。。 Kein 06/5/31(水) 14:30 回答[未読]
【38333】ありがとうございました。 くれよん 06/5/31(水) 14:48 お礼[未読]

【38304】組番号等で選択範囲を取得するには。
質問  くれよん  - 06/5/31(水) 9:38 -

引用なし
パスワード
   皆様よろしくお願いいたします。
先日お世話になりました空白の行を非表示にするマクロです。
●マクロ1 
 Dim MyR As Range
  On Error GoTo ELine
  Set MyR = Range("Z1:Z9").SpecialCells(3, 2).EntireRow
  On Error GoTo 0
  MyR.Hidden = IIf(MyR.Hidden, False, True)
  Set MyR = Nothing
 ELine:
 End Sub
●マクロ2 Set MyR = Range("Z10:Z20").SpecialCells(3, 2).EntireRow 
●マクロ3 Set MyR = Range("Z21:Z30").SpecialCells(3, 2).EntireRow
ここで行の変動が多発し,全ての範囲を組み替えるのが困難なもので
Z1:Z9 の範囲を,組み番号:A1:A9 に1
Z10:Z20の範囲を,組み番号:A10:A20に2・・・
等で対応したいと思ってます。
Find等で組んでみたもののなかなか作動してくれません。
ご伝授をよろしくお願いいたします。

【38306】追記です。。
質問  くれよん  - 06/5/31(水) 10:08 -

引用なし
パスワード
   複数組番号の取得も出来るでしょうか?
よろしくお願いいたします

【38307】Re:追記です。。
発言  Statis  - 06/5/31(水) 10:12 -

引用なし
パスワード
   ▼くれよん さん:
こんにちは
>皆様よろしくお願いいたします。
>先日お世話になりました空白の行を非表示にするマクロです。
数式の結果空白の場合ですね。

>●マクロ1 
> Dim MyR As Range
>  On Error GoTo ELine
>  Set MyR = Range("Z1:Z9").SpecialCells(3, 2).EntireRow
>  On Error GoTo 0
>  MyR.Hidden = IIf(MyR.Hidden, False, True)
>  Set MyR = Nothing
> ELine:
> End Sub
>●マクロ2 Set MyR = Range("Z10:Z20").SpecialCells(3, 2).EntireRow 
>●マクロ3 Set MyR = Range("Z21:Z30").SpecialCells(3, 2).EntireRow
>ここで行の変動が多発し,全ての範囲を組み替えるのが困難なもので
>Z1:Z9 の範囲を,組み番号:A1:A9 に1
>Z10:Z20の範囲を,組み番号:A10:A20に2・・・
>等で対応したいと思ってます。
>Find等で組んでみたもののなかなか作動してくれません。
>ご伝授をよろしくお願いいたします。
で例えば具体的に何をしたいのでしょうか記載して下さい。

【38319】Re:追記です。。
質問  くれよん  - 06/5/31(水) 12:26 -

引用なし
パスワード
   ▼Statis さん:度々すみませんがよろしくお願いいたします
集計表を作成してます。
例えれば
   A    B    C    D ・・・  Z   AA
1 種別   種類   小計1  小計2     合計  グループ
2 果物   みかん   5    2      7    1
3 果物   バナナ                    1
4 野菜   白 菜                    2
5 野菜   人 参   3           3    2
・ ・     ・
ここで先日いただいたマクロに果物:("Z2:Z3")や野菜:("Z4:Z5")・・・
及び全種:("Z:Z")を当てはめ,合計に数値が入っている集計表を作成いた
しました。
幸いなことに個別のマクロを作動させると,合計の空白行が表示されず,再度
作動させたら全て表示(空白行も表示)される具合になっています。
ここからが問題なのですが
4行目に”果物 イチゴ”の項目が増えた場合,以降の範囲が全て変わってしま
います。範囲を全て修正すればいいのですが,数が多いもので・・。
そこで,果物はグループ1,野菜は2・・・とし
グループにおける範囲指定は出来ないものかと思いました。
グループ番号をAAに入れるとして
もし AA:AA が 1 の場合で 空白 だったら非表示 って具合です。
やりたい事を文章で書くって難しいですね。
すみませんが,よろしくお願いいたします。

【38320】Re:追記です。。
回答  Statis  - 06/5/31(水) 12:39 -

引用なし
パスワード
   こんにちは
問題はZ列のデータ数が変動すると言う事ですよね。
なら下記で良いのでは?

Sub マクロ1()
 Dim MyR As Range
  On Error GoTo ELine
  Set MyR = Range("Z1", Range("Z65536").End(xlUp)).SpecialCells(3, 2).EntireRow
  On Error GoTo 0
  MyR.Hidden = IIf(MyR.Hidden, False, True)
  Set MyR = Nothing
ELine:
End Sub

【38325】Re:追記です。。
質問  くれよん  - 06/5/31(水) 13:05 -

引用なし
パスワード
   ▼Statis さん:ありがとうございました。
>問題はZ列のデータ数が変動すると言う事ですよね。
説明が悪くてすみませんでした。
表には沢山の種類の項目があり
各項目のZ列のデーター(行)が変動してしまう。
それで,単項目の呼び出しも含めて
各項目(グループ)ごとにマクロを組みたいのです。

Set MyR = Range("AA:AA")=1の場合.SpecialCells(3, 2).EntireRow
Set MyR = Range("AA:AA")=2の場合.SpecialCells(3, 2).EntireRow
・    ・    ・  
Set MyR = Range("AA:AA")=1か2の場合.SpecialCells(3, 2).EntireRow

お忙しい中 すみませんが よろしくお願いいたします。

【38329】Re:追記です。。
発言  ハチ  - 06/5/31(水) 14:18 -

引用なし
パスワード
   横から失礼します。

内容を拝見していたのですが、
Z列の固定した範囲ではなくて
A列の種別で分類してマクロを実行したい。ってことですか?
AutoFilterと併用すればできると思いますよ。

検討違いならスイマセン。

【38330】Re:追記です。。
回答  Kein  - 06/5/31(水) 14:30 -

引用なし
パスワード
   項目ごとに表示したいなら、そんな簡単なマクロでは無理です。
どうしても特定の項目を選択する必要がでてくるからです。
で、一例として

[シートモジュール]

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
  Dim Wp As Single, Hp As Single
 
  With Target
   If .Address <> "$A$1" Then Exit Sub
   Wp = .Width * 2: Hp = .Height
  End With
  Cancel = True: Range("IV:IV").ClearContents
  Range("A1", Range("A65536").End(xlUp)).AdvancedFilter _
  xlFilterCopy, , Range("IV1"), True
  Range("IV65536").End(xlUp).Offset(1).Value = "[ 行表示 ]"
  With ActiveSheet.DropDowns.Add(0.1, 0.1, Wp, Hp)
   .ListFillRange = Range("IV2", Range("IV65536").End(xlUp)) _
   .Address
   .OnAction = "Hdn_Row"
  End With
End Sub

[標準モジュール]

Sub Hdn_Row()
  Dim x As Variant
  Dim MyType As String
  Dim C As Range
 
  x = Application.Caller
  If VarType(x) <> 8 Then Exit Sub
  With ActiveSheet.DropDowns(x)
   If .ListIndex = .ListCount Then
     Rows.Hidden = False
   Else
     MyType = .List(.ListIndex)
   End If
   .Delete
  End With
  If MyType = "" Then Exit Sub
  Application.ScreenUpdating = False
  For Each C In Range("A2", Range("A65536").End(xlUp))
   If C.Value = MyType Then
     If C.Offset(, 25).Value = "" Then
      C.EntireRow.Hidden = True
     End If
   Else
     C.EntireRow.Hidden = True
   End If
  Next
  Application.ScreenUpdating = True
End Sub

を、各モジュールに入れ、表のあるシートの A1 をダブルクリック
してみて下さい。そこにコンボボックスが出てきますから、任意の
項目を一つ選びます。そのとき、既に行の非表示がされていて、
元に戻したいときには、リストの最後の [ 行表示 ] を選んで下さい。
シート全体の非表示行が、表示されて終わります。

【38332】Re:追記です。。
お礼  くれよん  - 06/5/31(水) 14:41 -

引用なし
パスワード
   ▼ハチ さん:
ありがとうございます。
超初心者なのでもう少し勉強してみます。

【38333】ありがとうございました。
お礼  くれよん  - 06/5/31(水) 14:48 -

引用なし
パスワード
   ▼Kein さん:
度々ありがとうございます
初心者にとっては,すっごい難しいマクロですね。
分相応な依然頂いたマクロでやります。
でも
勉強をして,いつかはこのマクロで走らせたいと思います。
貴重なお時間を頂きまして誠にありがとうございました。

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