Excel VBA質問箱 IV

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

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


13015 / 76734 ←次へ | 前へ→

【69230】Re:一番上のセルまで同じ文字を入力したい
回答  UO3  - 11/6/9(木) 13:54 -

引用なし
パスワード
   ▼[名前なし]alikui さん:

なんとなく、まだ要件を誤解しているような気がします。
一応、こちらの解釈によるコードを以下にアップしますが、

こちらの解釈とコード(Sample1)

・インプットボックスで、【抽出文字列】を指定。
・その指定文字列でフィルタリング
・抽出されたもののB列のセルに、特定の文字をセット。(以下のコードでは、"○")
・これを、インプットボックスでキャンセルボタンが押されるまで繰り返す。

でも、もしかしたら

・手作業でフィルタ抽出し、その後、マクロ実行
・マクロでは、B列に入力する文字列を指定させて
・それを抽出されたデータのB列のセルに転記して終わり。

この作業を繰り返す?もし、そうであれば、Sample2

Sub Sample1()
  Dim myWord As String
  Dim sh As Worksheet
  Dim myA As Range, myB As Range, myC As Range, myV As Range
  Dim vC As Range
  
  Set sh = Sheets("Sheet1")  '対象のシート名
  
  If Not sh.AutoFilterMode Then
  
    MsgBox "フィルターが設定されていません"
    
  Else
  
    If sh.FilterMode Then sh.ShowAllData
    Set myA = sh.AutoFilter.Range
    Set myB = Intersect(myA, myA.Offset(1))
    
    If myB Is Nothing Then
      MsgBox "データがリストに登録されていません"
      
    Else
    
      Do
      
        myWord = InputBox("検索文字を指定してください")
        If myWord = Empty Then Exit Do 'キャンセル
        
        myA.AutoFilter 1, myWord
        Set myV = Nothing
        
        On Error Resume Next
        Set myV = myB.Columns(1).SpecialCells(xlCellTypeVisible)
        On Error GoTo 0
        
        If Not myV Is Nothing Then
          For Each myC In myV
            myC.Offset(, 1).Value = "○"
          Next
        Else
          MsgBox "抽出されませんでした"
        End If
  
        ActiveSheet.ShowAllData
        
      Loop
      
    End If
    
  End If
  
  Set myA = Nothing
  Set myB = Nothing
  Set myC = Nothing
  Set myV = Nothing
  Set sh = Nothing
  
End Sub

Sub Sample2()
  Dim myWord As String
  Dim sh As Worksheet
  Dim myA As Range, myB As Range, myC As Range, myV As Range
  Dim vC As Range
  
  Set sh = Sheets("Sheet1")  '対象のシート名
  
  If Not sh.AutoFilterMode Then
  
    MsgBox "フィルターが設定されていません"
    
  Else
    Set myA = sh.AutoFilter.Range
    Set myB = Intersect(myA, myA.Offset(1))
      
    If myB Is Nothing Then
      MsgBox "データがリストに登録されていません"
    Else

      If Not sh.FilterMode Then
        MsgBox "フィルタリングされていません"
      Else
        Set myV = Nothing
        On Error Resume Next
        Set myV = myB.Columns(1).SpecialCells(xlCellTypeVisible)
        On Error GoTo 0

        If Not myV Is Nothing Then
          myWord = InputBox("セットする文字列を指定してください")
          If myWord <> Empty Then 'キャンセルではない
            For Each myC In myV
              myC.Offset(, 1).Value = myWord
            Next
          End If
        Else
          MsgBox "抽出されていませんよ"
        End If
  
        ActiveSheet.ShowAllData
        
      End If
        
    End If
    
  End If
  
  Set myA = Nothing
  Set myB = Nothing
  Set myC = Nothing
  Set myV = Nothing
  Set sh = Nothing
  
End Sub
8 hits

【69224】一番上のセルまで同じ文字を入力したい [名前なし]alikui 11/6/8(水) 12:18 質問
【69226】Re:一番上のセルまで同じ文字を入力したい UO3 11/6/8(水) 13:54 発言
【69227】Re:一番上のセルまで同じ文字を入力したい [名前なし]alikui 11/6/8(水) 15:08 発言
【69230】Re:一番上のセルまで同じ文字を入力したい UO3 11/6/9(木) 13:54 回答
【69231】Re:一番上のセルまで同じ文字を入力したい alikui 11/6/9(木) 15:59 お礼

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