Sub アクティブシートの可視セルのみFor_Eachループで処理する()
Dim rng As Range
For Each rng In
ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
rng.Select
MsgBox rng.Address(False, False)
Next
End Sub
Private Sub CommandButton3_Click()
Dim i As Long
Dim rng As Range
If ActiveSheet.AutoFilterMode = True Then
MsgBox "設定されています"
i = Sheets("承認フォーム2").Cells(Rows.Count, 1).End(xlUp).Row
For Each rng In Range("P10:P" & i).SpecialCells(xlCellTypeVisible)
rng.Value = "TRUE"
Next
Else
MsgBox "設定されていません"
ActiveSheet.CheckBoxes.Value = True
End If
End Sub
Sub Macro1()
Dim c As Range
Worksheets("Sheet1").Select
Range("A1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="ウレタン"
For Each c In Worksheets("Sheet1").Columns(1).SpecialCells(xlCellTypeVisible)
If c = "" Then
Exit Sub
End If
If Range("e" & c.Row) < 30 Then
Range("f" & c.Row) = "〇"
End If
Next c
End Sub
Sub Macro1()
Dim Rw As Long
Dim Msg As String
For Rw = 2 To 30
If Not Rows(Rw).Hidden Then
With Cells(Rw, 2)
'Msg = Msg & Rw & "行 表示 " & .Address(False, False) & " = " & .Value & vbLf
Range("F" & Rw).Value = "済"
End With
End If
Next
'MsgBox Msg, , "表示行の B列データ"
End Sub
Sub Macro2()
Dim Rw As Long
Dim Msg As String
For Rw = 1 To 10
With Cells(Rw, 2)
If Not .EntireRow.Hidden Then
Msg = Msg & Rw & "行 表示 " & .Address(False, False) & " = " & .Value & vbLf
Range("F" & Rw).Value = "済"
End If
End With
Next
MsgBox Msg, , "表示行の B列データ"
End Sub
Private Sub CommandButton1_Click() '一括チェック
高速開始
Dim Rw As Long, Erow As Long
Erow = Sheets("承認フォーム").Cells(Rows.Count, 1).End(xlUp).Row '最終行
If Sheets("承認フォーム").FilterMode = True Then 'フィルタが有りの時
For Rw = 10 To Erow '10行目から最終行まで
If Not Rows(Rw).Hidden Then '可視セルだったら
With Cells(Rw, 10)
'Msg = Msg & Rw & "行 表示 " & .Address(False, False) & " = " & .Value & vbLf
Range("AF" & Rw).Value = "TRUE" '可視行のAFにTrue
End With
End If
Next
Else 'フィルタがなかったら
Sheets("承認フォーム").CheckBoxes.Value = True 'すべてチェックする
End If
チェックをいれたものだけ済
高速終了
End Sub
Sub チェックをいれたものだけ済()
Dim cb As checkbox
Dim j As Long
j = 10
'チェックボックスをループ
For Each cb In ActiveSheet.CheckBoxes
'チェックボックスがオンだったら
If cb.Value = xlOn Then
Range("AG" & j) = "済"
End If
j = j + 1
Next cb
End Sub
Sub Rowsで行の非表示を判定する()
If Rows(7).Hidden = ture Then
MsgBox "非表示です。"
Else
MsgBox "非表示では、ありません。"
End If
End Sub