Excel VBA質問箱 IV

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

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


233 / 73642 ←次へ | 前へ→

【79040】Re:等間隔の行数取得
発言  β  - 17/4/18(火) 13:37 -

引用なし
パスワード
   ▼boss さん:

Dictionary で制御する案も2つほどアップしておきます。

コードでは K列 13行目から最終行までの間で 7行ごとに処理しています。
Sample2,Sample3 、基本的に同じことをしているんですが、Sample2 のほうは
取得する あああ アドレスを Range("K13,K20,K27,・・・") といったようにしています。
この Range内のアドレス文字列が 255桁を超えるとエラーになります。

そういう心配があるなら、Sample2 のように該当のセルを1つずつ取り出して処理することが
必要になります。

Sub Sample2()
  Dim dic As Object
  Dim i As Long
  Dim mx As Long
  Dim sh1 As Worksheet
  Dim c As Range
  Dim g As Range
  
  Set sh1 = Sheets("Sheet1")
  Set dic = CreateObject("Scripting.Dictionary")
  mx = sh1.Range("K" & Rows.Count).End(xlUp).Row
  
  For i = 13 To mx Step 7
    Set c = sh1.Cells(i, "K")
    Select Case c.Value
      Case "最終": Set g = c
      Case "あああ": dic(c.Address(False, False)) = True
    End Select
  Next
  
  If g Is Nothing Then
    MsgBox "最終 がありません" & vbLf & "処理を打ち切ります"
  ElseIf dic.Count = 0 Then
    MsgBox "あああ がありません" & vbLf & "処理を打ち切ります"
  Else
    MsgBox "最終 は " & g.Address(External:=True) & vbLf & _
      "あああ は " & sh1.Range(Join(dic.keys, ",")).Address(External:=True)
  End If
  
End Sub

Sub Sample3()
  Dim dic As Object
  Dim i As Long
  Dim mx As Long
  Dim sh1 As Worksheet
  Dim c As Range
  Dim g As Range
  Dim d As Variant
  
  Set sh1 = Sheets("Sheet1")
  Set dic = CreateObject("Scripting.Dictionary")
  mx = sh1.Range("K" & Rows.Count).End(xlUp).Row
  
  For i = 13 To mx Step 7
    Set c = sh1.Cells(i, "K")
    Select Case c.Value
      Case "最終": Set g = c
      Case "あああ": Set dic(c.Address(False, False)) = c
    End Select
  Next
  
  If g Is Nothing Then
    MsgBox "最終 がありません" & vbLf & "処理を打ち切ります"
  ElseIf dic.Count = 0 Then
    MsgBox "あああ がありません" & vbLf & "処理を打ち切ります"
  Else
    MsgBox "最終 は " & g.Address(External:=True) & vbLf & _
          "いまから あああ のセルを1つずつ表示します"
    For Each d In dic.items
      MsgBox d.Address(External:=True)
    Next
    
  End If
  
End Sub



44 hits

【79007】等間隔の行数取得 boss 17/4/13(木) 19:43 質問[未読]
【79008】Re:等間隔の行数取得 γ 17/4/13(木) 21:02 発言[未読]
【79011】Re:等間隔の行数取得 boss 17/4/14(金) 12:42 発言[未読]
【79024】Re:等間隔の行数取得 boss 17/4/17(月) 16:17 質問[未読]
【79031】Re:等間隔の行数取得 γ 17/4/17(月) 21:25 発言[未読]
【79033】Re:等間隔の行数取得 γ 17/4/18(火) 7:38 発言[未読]
【79036】Re:等間隔の行数取得 boss 17/4/18(火) 10:20 発言[未読]
【79037】Re:等間隔の行数取得 β 17/4/18(火) 10:56 発言[未読]
【79038】Re:等間隔の行数取得 β 17/4/18(火) 11:12 発言[未読]
【79039】Re:等間隔の行数取得 boss 17/4/18(火) 11:46 発言[未読]
【79040】Re:等間隔の行数取得 β 17/4/18(火) 13:37 発言[未読]
【79041】Re:等間隔の行数取得 boss 17/4/18(火) 18:50 お礼[未読]
【79035】Re:等間隔の行数取得 β 17/4/18(火) 9:33 発言[未読]

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