Excel VBA質問箱 IV

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

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


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

【81857】範囲指定につきまして まり 21/7/3(土) 15:30 質問[未読]
【81861】Re:範囲指定につきまして TD&S 21/7/5(月) 18:08 発言[未読]

【81857】範囲指定につきまして
質問  まり  - 21/7/3(土) 15:30 -

引用なし
パスワード
   はじめまして。VBA初心者です。
横列にフィルタ処理をかけたく、検索していたら下記のコードを見つけたのでテストをしてみましたが、実行を押すと処理がとても遅いので「範囲を絞る」ということを試してみたいのですが
C4〜ZZ100の範囲内で検索処理をしたい。といった場合には下記のコードにどのように追記すればよろしいでしょうか?


Dim rowno, colno As Integer

'=================================================
'フィルタ処理
'=================================================
Private Sub CommandButton1_Click()
  Dim colAlfa, compData As String
 
  With UserForm1.ListBox1
    If .ListIndex < 0 Then
      .ListIndex = 0
    End If
   
    selectedvalue = .List(.ListIndex, 0)
    For i = colno To Columns.Count
      nowcol = Cells(1, i).Address(True, False)
      colAlfa = Left(nowcol, InStr(nowcol, "$") - 1)
     
      If Columns(colAlfa).Hidden = False Then
        If TypeName(Cells(rowno, i).Value) = "Integer" Then
          compData = Trim(Str(Cells(rowno, i).Value))
        Else
          compData = Cells(rowno, i).Value
        End If
        If compData = selectedvalue Then
          Columns(colAlfa).Hidden = False
        Else
          Columns(colAlfa).Hidden = True
        End If
      End If
    Next i
  End With
  Unload UserForm1
End Sub

'=================================================
'クリア処理
'=================================================
Private Sub CommandButton2_Click()
  Dim colAlfa As String
 
  For i = 1 To Columns.Count
    nowcol = Cells(1, i).Address(True, False)
    colAlfa = Left(nowcol, InStr(nowcol, "$") - 1)
    Columns(colAlfa).Hidden = False
  Next i
 
  Unload UserForm1
 
End Sub
'=================================================
'初期化処理
'=================================================
Private Sub UserForm_Initialize()
  '選択行
  rowno = ActiveCell.Row
  '初期カラム
  colno = ActiveCell.Column + 1
 
  'リスト作成
  For i = colno To Columns.Count
    If UserForm1.ListBox1.ListCount = 0 Then
      UserForm1.ListBox1.AddItem Cells(rowno, i).Value
    Else
      flg = False
      For j = 0 To UserForm1.ListBox1.ListCount - 1
        If Cells(rowno, i).Value = UserForm1.ListBox1.List(j) Then
          flg = True
          Exit For
        End If
      Next
      If flg = False Then UserForm1.ListBox1.AddItem Cells(rowno, i).Value
    End If
  Next i
 
End Sub

【81861】Re:範囲指定につきまして
発言  TD&S  - 21/7/5(月) 18:08 -

引用なし
パスワード
   ▼まり さん:こんばんは、
どのくらい遅いか見当がつかないので、EXCEL画面の画面表示を停止する命令を入れてみてください。

Private Sub CommandButton1_Click()
  Application.ScreenUpdating = False '<--先頭行に追加 画面表示停止

  Application.ScreenUpdating = true '<--最終行に追加 画面表示開始
End Sub

Private Sub CommandButton2_Click()
  Application.ScreenUpdating = False '<--先頭行に追加

  Application.ScreenUpdating = true '<--最終行に追加
End Sub

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