Excel VBA質問箱 IV

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

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


12750 / 13646 ツリー ←次へ | 前へ→

【8850】オートフィルター検索データ参照ストップ カルーア 03/11/6(木) 9:43 質問
【8851】Re:オートフィルター検索データ参照ストップ INA 03/11/6(木) 9:50 回答
【8852】Re:オートフィルター検索データ参照ストップ カルーア 03/11/6(木) 10:00 質問
【8853】Re:オートフィルター検索データ参照ストップ INA 03/11/6(木) 10:08 回答
【8857】Re:オートフィルター検索データ参照ストップ カルーア 03/11/6(木) 13:37 質問
【8858】Re:オートフィルター検索データ参照ストップ INA 03/11/6(木) 13:55 回答
【8859】Re:オートフィルター検索データ参照ストップ カルーア 03/11/6(木) 14:30 質問
【8860】Re:オートフィルター検索データ参照ストップ INA 03/11/6(木) 14:48 回答
【8861】Re:オートフィルター検索データ参照ストップ カルーア 03/11/6(木) 14:55 お礼

【8850】オートフィルター検索データ参照ストップ
質問  カルーア E-MAIL  - 03/11/6(木) 9:43 -

引用なし
パスワード
   以前の質問の中にオートフィルターを使って抽出したデータを一件づつ見る方法が有りましたのでそれを適用してVBAを組んで見ましたら出来たのですが、ほしいデータを見つけた所で終了したいのですが、抽出したデータが終わるまでボタンを押しつづけないと終了しません。何方か教えて下さい。
標準モジュール
 Sub データ抽出()
  Dim Rng As Range

  Set Rng = Range(Range("A3"), Range("A65536").End(xlUp)) _
    .SpecialCells(xlCellTypeVisible)
  
  For Each i In Rng
    For t = 1 To 12
    UserForm2.Controls("TEXTBOX" & t).Text _
      = i.Offset(, t - 1).Value
    Next
    UserForm2.Show
  Next
  
  Set Rng = Nothing
 End Sub

UserForm1
 Private Sub CommandButton1_Click()
   Me.Hide
 End Sub
※オブジェクトには、10個のTEXTボックスを設置

【8851】Re:オートフィルター検索データ参照ストッ...
回答  INA  - 03/11/6(木) 9:50 -

引用なし
パスワード
   マクロを終了したいところで、
Exit Sub
とすれば良いと思います。

【8852】Re:オートフィルター検索データ参照ストッ...
質問  カルーア E-MAIL  - 03/11/6(木) 10:00 -

引用なし
パスワード
   INA さんへ
Exit Subは、何処へ記述するのですか?
コマンドボタンを設置してやってみたのですが終われませんでした。
 Private Sub CommandButton2_Click()
  Exit Sub
 End Sub

【8853】Re:オートフィルター検索データ参照ストッ...
回答  INA  - 03/11/6(木) 10:08 -

引用なし
パスワード
   exit sub は、end sub と同じようなものです。
終了したい条件のところに記述すればよいのです。

Sub main()
Dim i
  
 For i = 1 To 100000
   Debug.Print i
   
   If i = 1000 Then
     MsgBox "i=1000です。終了します。"
     Exit Sub
   End If
 Next i

 MsgBox "i=100000です。" '←これは表示されない。
    
End Sub

【8857】Re:オートフィルター検索データ参照ストッ...
質問  カルーア E-MAIL  - 03/11/6(木) 13:37 -

引用なし
パスワード
   INA さん
能力不足で申し訳ございません。VBAの理解力が不足の為、書かれている内容が理解出来ません。
具体的に何処に書けばいいのですか?具体的に教えて下さい。
宜しく御願い致します。
>exit sub は、end sub と同じようなものです。
>終了したい条件のところに記述すればよいのです。
>
>Sub main()
>Dim i
>  
> For i = 1 To 100000
>   Debug.Print i
>   
>   If i = 1000 Then
>     MsgBox "i=1000です。終了します。"
>     Exit Sub
>   End If
> Next i
>
> MsgBox "i=100000です。" '←これは表示されない。
>    
>End Sub

【8858】Re:オートフィルター検索データ参照ストッ...
回答  INA  - 03/11/6(木) 13:55 -

引用なし
パスワード
   マクロを終わらせたいところにExit Subを記述すれば、
End Subまで処理する前に終了できると言うことです。

先の例題は、
For i = 1 To 100000 
より、iの値が 1から100000まで変化して終了しますが、
途中の条件に
If i = 1000 Then
MsgBox "i=1000です。終了します。"
Exit Sub
とありますので、
iが1000になったところで、メッセージを表示して
Exit Sub(終了)すると言うことです。
その為、最後のメッセージ
MsgBox "i=100000です。" 
が表示されることなく終了するマクロであることを説明したかったのです。

ご質問の内容は
「ほしいデータを見つけた所で終了したい」
とありますが、「ほしいデータを見つけた所」の定義が明確でないため
具体的な説明が出来ないのです。


 

【8859】Re:オートフィルター検索データ参照ストッ...
質問  カルーア E-MAIL  - 03/11/6(木) 14:30 -

引用なし
パスワード
   INA さんへ
説明が不足していて申し訳ございません。
オートフィルターで検索・抽出したデータをユーザーフォーム上のテキストBOXで
1レコード毎に表示して行くプログラムの途中で必要なデータが出たときにユーザーフォームを終了させたいと言うことなのですが?
この説明では、不足でしょうか?どのように説明すれば良いのか解らなくて申し訳ございません。参考にした内容ですを下記に示します。

質問
「オートフィルで抽出した複数行のデータをユーザーフォームのテキストボックスに表示させる。」
回答
前提条件
1.A列からL列までにデータが存在

2.1行目はタイトル行

3.UserForm1にTextBoxが12個
  名前はTextBox1からTextBox12

4. Form上に「次を表示」のコマンドボタンが1個

5.対象シートがアクティブである。

6.オートフィルタが実行された後である。

以上の前提で下記のコードを実行すると、
フォームが表示され、コマンドボタンを押すと
次に移ります。

'[標準モジュール]
Sub TEST()
Dim Rng As Range
  
  Set Rng = Range(Range("A2"), Range("A65536").End(xlUp)) _
       .SpecialCells(xlCellTypeVisible)
  
  For Each i In Rng
   For t = 1 To 12
    UserForm1.Controls("TEXTBOX" & t).Text _
               = i.Offset(, t - 1).Value
   Next
   UserForm1.Show
  Next
  
  Set Rng = Nothing

End Sub

'[Formのモジュール]
Private Sub CommandButton1_Click()
 Me.Hide
End Sub

宜しく御願い致します。
 

【8860】Re:オートフィルター検索データ参照ストッ...
回答  INA  - 03/11/6(木) 14:48 -

引用なし
パスワード
   理解できました。
ユーザーフォームに、もう一個コマンドボタンを配置して、

Private Sub CommandButton2_Click()
 End
End Sub

として、試して下さい。

【8861】Re:オートフィルター検索データ参照ストッ...
お礼  カルーア E-MAIL  - 03/11/6(木) 14:55 -

引用なし
パスワード
   INA さんへ
ありがとうございました。問題は解決しました。
今後もいろいろとご迷惑をお掛けすることに成るかと思いますが、宜しく御願い致します。

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