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の行数を入力してから 操作しています。 できれば、シート上にテキストボックスを作成してそこに行数を入力することにより 範囲指定ができるようにしたいです。(列は固定の為入力の必要なし) 何か良い方法はありませんか? 宜しくお願いします。 |
ポチ さん、こんばんわ >ところが行数が固定でないため、いちいち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 こんな感じです。 |
りんさん、こんばんわ。 回答ありがとうございます。 早速試したのですが(試してからわかったのですが)私の説明が下手なために 上手く伝わらなかったみたいです。 ごめんなさい。。 範囲を指定したら見事に消えましたのでこれは別の機会に使わせてもらいます。 えっと、もうすでに表示・非表示の切替えボタンはシートにあって 以下のような場合、「非表示ボタン」を押すとC列だけ隠れるんです。 費用名列 → A B C D 項目名行 ↓ あ 100 5,000 い 300 う 合計 100 5,000 0 300 それで、費用名の列(A,B,C,D)は固定数なのですが、 項目名の行(あ,い,う)は行数が日々変わるのです。 この部分のCell数をいちいちVBAの所で変更してから「非表示ボタン」を 押さなければならないので面倒なのです。 このシート上にテキストボックスを作り、そこに行数を入力してプログラムに 反映させる事ができないかな・・と。 手段は、別に入力でなくても例えばマウスでA列の最終行を選択するという 行為でも構いません。 何℃も質問してしまってすみませんが、よろしくお願いいたします。 |
以下のコードは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 |
ポンタさん、回答ありがとうございます。 やっぱり私の説明が下手なのですね。すみません。 りんさんにも同じ事を書いたのですが、以下のような事をしたいと 思っています。 すでに表示・非表示の切替えボタンはシートにあって以下のような場合、 「非表示ボタン」を押すとC列だけ隠れるんです。 費用名列 → A B C D 項目名行 ↓ あ 100 5,000 い 300 う 合計 100 5,000 0 300 それで、費用名の列(A,B,C,D)は固定数なのですが、 項目名の行(あ,い,う)は行数が日々変わるのです。 この部分のCell数をいちいちVBAの所で変更してから「非表示ボタン」を 押さなければならないので面倒なのです。 このシート上にテキストボックスを作り、そこに行数を入力してプログラムに 反映させる事ができないかな・・と。 手段は、別に入力でなくても例えばマウスでA列の最終行を選択するという 行為でも構いません。 と、こんな感じです・・。 すみませんがよろしくお願いします。 |
最終入力行は Range("A65536").End(xlUp).Row で求められます。 コードも一緒に投稿したほうが、 解決が早かったと思います。 |
ポンタさん、ありがとうございます。 遅くなりましたがコードを載せます。 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 >で求められます。 > >コードも一緒に投稿したほうが、 >解決が早かったと思います。 |
お試しください。 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 |
ポンタさん 難しくて悩んでいたのですが、更に回答を下さったお陰で 問題解決できました!! ばっちりです! ありがとうごうざいます〜♪ 助かった助かった!!!! 本当にありがとうございますぅ。 |