過去ログ

                                Page     644
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼操作範囲の指定をシート上でするには  ポチ 03/1/29(水) 14:13
   ┣Re:操作範囲の指定をシート上でするには  りん 03/1/29(水) 19:43
   ┃  ┗ご説明が下手ですみません  ぽち 03/1/29(水) 20:26
   ┗Re:操作範囲の指定をシート上でするには  ポンタ 03/1/29(水) 20:01
      ┗本当に説明が下手で参ります  ぽち 03/1/29(水) 20:31
         ┗Re:本当に説明が下手で参ります  ポンタ 03/1/29(水) 20:35
            ┗Re:本当に説明が下手で参ります  ぽち 03/1/29(水) 23:56
               ┗Re:本当に説明が下手で参ります  ポンタ 03/1/30(木) 0:04
                  ┗Re:本当に説明が下手で参ります  ポチ 03/1/30(木) 9:38

 ───────────────────────────────────────
 ■題名 : 操作範囲の指定をシート上でするには
 ■名前 : ポチ
 ■日付 : 03/1/29(水) 14:13
 -------------------------------------------------------------------------
   計算シートで勘定項目(固定列)が0円の場合、必要のない列は隠したい為
その列を非表示にさせるボタンをつけています再表示ボタンもつけています。
ところが行数が固定でないため、いちいちVBAからCellの行数を入力してから
操作しています。

できれば、シート上にテキストボックスを作成してそこに行数を入力することにより
範囲指定ができるようにしたいです。(列は固定の為入力の必要なし)
何か良い方法はありませんか?
宜しくお願いします。
 ───────────────────────────────────────  ■題名 : Re:操作範囲の指定をシート上でするには  ■名前 : りん <rin_doggie@hotmail.com>  ■日付 : 03/1/29(水) 19:43  -------------------------------------------------------------------------
   ポチ さん、こんばんわ

>ところが行数が固定でないため、いちいちVBAからCellの行数を入力してから
>操作しています。

とりあえず、InputBoxメソッドを使って範囲をドラッグして指定する方法。

Sub test()
  Dim r1 As Range
  On Error Resume Next
  Set r1 = Application.InputBox(Prompt:="範囲をドラッグしてください", _
                 Title:="非表示にする行", Type:=8)
  On Error GoTo 0
  '
  If r1 Is Nothing Then
   MsgBox "キャンセル",vbExclamation
  Else
   With r1
     .EntireRow.Hidden = True
     .Cells(.Count).Offset(1, 0).Select
   End With
  End If
End Sub

こんな感じです。
 ───────────────────────────────────────  ■題名 : ご説明が下手ですみません  ■名前 : ぽち  ■日付 : 03/1/29(水) 20:26  -------------------------------------------------------------------------
   りんさん、こんばんわ。
回答ありがとうございます。
早速試したのですが(試してからわかったのですが)私の説明が下手なために
上手く伝わらなかったみたいです。
ごめんなさい。。
範囲を指定したら見事に消えましたのでこれは別の機会に使わせてもらいます。

えっと、もうすでに表示・非表示の切替えボタンはシートにあって
以下のような場合、「非表示ボタン」を押すとC列だけ隠れるんです。


費用名列 →  A   B    C    D 
項目名行  
 ↓  
 あ     100  5,000         
 い                    300
 う 
合計     100  5,000    0   300


それで、費用名の列(A,B,C,D)は固定数なのですが、
項目名の行(あ,い,う)は行数が日々変わるのです。

この部分のCell数をいちいちVBAの所で変更してから「非表示ボタン」を
押さなければならないので面倒なのです。

このシート上にテキストボックスを作り、そこに行数を入力してプログラムに
反映させる事ができないかな・・と。
手段は、別に入力でなくても例えばマウスでA列の最終行を選択するという
行為でも構いません。

何℃も質問してしまってすみませんが、よろしくお願いいたします。
 ───────────────────────────────────────  ■題名 : Re:操作範囲の指定をシート上でするには  ■名前 : ポンタ  ■日付 : 03/1/29(水) 20:01  -------------------------------------------------------------------------
   以下のコードはA列の中で、"0円"と表示されている全ての行を非表示にします。

意味が違ったらスミマセン。

Sub test()
  Dim MyRange As Range
  Dim FirstAddress As String
  With Range("A1", Range("A65536").End(xlUp))
    Set MyRange = .Find("0円", Range("A1"), , xlWhole)
    If Not MyRange Is Nothing Then
      FirstAddress = MyRange.Address
      Do
        MyRange.EntireRow.Hidden = True
        Set MyRange = .FindNext(MyRange)
      Loop While Not MyRange Is Nothing And MyRange.Address <> FirstAddress
    End If
  End With
End Sub
 ───────────────────────────────────────  ■題名 : 本当に説明が下手で参ります  ■名前 : ぽち  ■日付 : 03/1/29(水) 20:31  -------------------------------------------------------------------------
   ポンタさん、回答ありがとうございます。

やっぱり私の説明が下手なのですね。すみません。
りんさんにも同じ事を書いたのですが、以下のような事をしたいと
思っています。

すでに表示・非表示の切替えボタンはシートにあって以下のような場合、
「非表示ボタン」を押すとC列だけ隠れるんです。


費用名列 →  A   B    C    D 
項目名行  
 ↓  
 あ     100  5,000         
 い                     300
 う 
合計     100  5,000    0    300


それで、費用名の列(A,B,C,D)は固定数なのですが、
項目名の行(あ,い,う)は行数が日々変わるのです。

この部分のCell数をいちいちVBAの所で変更してから「非表示ボタン」を
押さなければならないので面倒なのです。

このシート上にテキストボックスを作り、そこに行数を入力してプログラムに
反映させる事ができないかな・・と。
手段は、別に入力でなくても例えばマウスでA列の最終行を選択するという
行為でも構いません。


と、こんな感じです・・。
すみませんがよろしくお願いします。
 ───────────────────────────────────────  ■題名 : Re:本当に説明が下手で参ります  ■名前 : ポンタ  ■日付 : 03/1/29(水) 20:35  -------------------------------------------------------------------------
   最終入力行は
Range("A65536").End(xlUp).Row
で求められます。

コードも一緒に投稿したほうが、
解決が早かったと思います。
 ───────────────────────────────────────  ■題名 : Re:本当に説明が下手で参ります  ■名前 : ぽち  ■日付 : 03/1/29(水) 23:56  -------------------------------------------------------------------------
   ポンタさん、ありがとうございます。
遅くなりましたがコードを載せます。

Cellsで指定しているので、きっとこの部分の変更が必要なのですよね?
初心者なのでちょっと難しいですが・・頑張ってみます。

どうもありがとうございました。

Private Sub CommandButton1_Click()
Dim 列番号 As Long

 '隠す
 For 列番号 = 1 To 10
  If Cells(16, 列番号).Value = "0" Then
   Cells(1, 列番号).EntireColumn.Hidden = True
  End If
 Next 列番号
 
End Sub


>最終入力行は
>Range("A65536").End(xlUp).Row
>で求められます。
>
>コードも一緒に投稿したほうが、
>解決が早かったと思います。
 ───────────────────────────────────────  ■題名 : Re:本当に説明が下手で参ります  ■名前 : ポンタ  ■日付 : 03/1/30(木) 0:04  -------------------------------------------------------------------------
   お試しください。

Private Sub CommandButton1_Click()
Dim 列番号 As Long
Dim 最終行 As Long

 '隠す
 For 列番号 = 1 To 10
  最終行 = Cells(65536, 列番号).End(xlUp).Row
  If Cells(最終行, 列番号).Value = "0" Then
   Cells(1, 列番号).EntireColumn.Hidden = True
  End If
 Next 列番号

End Sub
 ───────────────────────────────────────  ■題名 : Re:本当に説明が下手で参ります  ■名前 : ポチ  ■日付 : 03/1/30(木) 9:38  -------------------------------------------------------------------------
   ポンタさん

難しくて悩んでいたのですが、更に回答を下さったお陰で
問題解決できました!!
ばっちりです!
ありがとうごうざいます〜♪
助かった助かった!!!!

本当にありがとうございますぅ。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 644