Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Home Premium : Excel 2003)
どこが間違いでしょうか
投稿日時: 17/06/15 16:02:18
投稿者: 太助

 
このマクロが効きません
ETCの後には区間とか表示があり、ひとまとめにETCで高速料金と仕分けたい
と思っています。
Sub 高速代()
Dim i As Long
  On Error Resume Next
     With ActiveSheet
           myRow = .Range("B65536").End(xlUp).Row
            For i = 3 To myRow
             
            If .Range("B" & i).Text = "ETC" & "*" Then
                .Range("F" & i).FormulaR1C1Local = "高速料金"
            End If
             
             
        Next i
             
     End With
End Sub

回答
投稿日時: 17/06/15 16:08:14
投稿者: Suzu

回答者は質問者さんのPCが見える訳ではありません。
 
状況が理解でき、再現できる様
説明してください。

投稿日時: 17/06/15 16:18:33
投稿者: 太助

 
 
たとえばこのマクロは働くのです。が最初のは働かないのです。
 
Sub スカパ()
Dim i As Long
  On Error Resume Next
     With ActiveSheet
           myRow = .Range("B65536").End(xlUp).Row
            For i = 3 To myRow
             
            If .Range("B" & i).Text = "スカパ−シチヨウリヨウトウ" Then
                .Range("F" & i).FormulaR1C1Local = "スカパ"
            End If
             
             
        Next i
             
      
     End With
End Sub

回答
投稿日時: 17/06/15 16:28:10
投稿者: mattuwan44

>このマクロが効きません
こういう時はステップ実行(ステップイン)をして、
動作を確認してみてください。
 
http://www.239-programing.com/excel-vba/basic/basic023.html
http://www.ken3.org/vba/excel-help.html
 
意図したように条件分岐してないのが解ると思います。
 
「*」のワイルドカードを使うなら、
Like演算子を使ってください。
 
Sub 高速代()
    Dim i As Long
    Dim myRow As Long
         
    With ActiveSheet
        myRow = .Range("B65536").End(xlUp).Row
        For i = 3 To myRow
            If .Range("B" & i).Text Like "ETC*" Then
                .Range("F" & i).Value = "高速料金"
            End If
        Next
    End With
End Sub
 
それから、
On Error Resume Next
↑この命令は極力使わないようにしましょう。(出来れば使わない方法を模索する)
エラーを無視する命令なので、
エラーが出ないといけないときにエラーがでないと間違いが分かり難くなるだけでなく、
間違っていることすら気づかなくて大事になるときがあります。
 
それからさらに、こういう場合は、
セル範囲を特定してから、「一気に」数式を入れてしまった方が、
処理速度が速くなるようです。(表計算ソフトだから計算は得意^^)

投稿日時: 17/06/15 16:35:58
投稿者: 太助

 
If .Range("B" & i).Text Like "ETC*" Then
 
は最初に書いてみましたが、働きませんでしたね。

投稿日時: 17/06/15 16:44:07
投稿者: 太助

mattuwan44 さん、失礼しました。
確かに効いています。