Excel VBA質問箱 IV

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

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


9426 / 13644 ツリー ←次へ | 前へ→

【27425】置き換えをループで・・・ Help Me! 05/8/9(火) 7:36 質問[未読]
【27426】Re:置き換えをループで・・・ りん 05/8/9(火) 7:53 回答[未読]
【27428】Re:置き換えをループで・・・ りん 05/8/9(火) 8:29 回答[未読]
【27436】Re:置き換えをループで・・・ Help Me! 05/8/9(火) 11:48 お礼[未読]

【27425】置き換えをループで・・・
質問  Help Me!  - 05/8/9(火) 7:36 -

引用なし
パスワード
   下記のマクロを見てください。

Selection.Replace What:="3000", Replacement:="機械部品", LookAt:=xlWhole,
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False,ReplaceFormat:=False


といった感じに、3000という番号を 機械部品という文字に置換しています。

私は3000〜3999をすべて機械部品 に置換したいのです。
一つ一つ書いていくと日が暮れてしまいます。
何か良い方法はございませんか?

置換の検索条件は 完全一致でしかも途中途中の番号が存在しないかもしれませんが、存在しなくてもそのまま次の番号に・・・といった流れです。

よろしくお願い致します。

【27426】Re:置き換えをループで・・・
回答  りん E-MAIL  - 05/8/9(火) 7:53 -

引用なし
パスワード
   Help Me! さん、おはようございます。

>Selection.Replace What:="3000", Replacement:="機械部品", LookAt:=xlWhole,
>SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False,ReplaceFormat:=False
>
>私は3000〜3999をすべて機械部品 に置換したいのです。

>一つ一つ書いていくと日が暮れてしまいます。
>何か良い方法はございませんか?
日は暮れませんが、ちょっと時間がかかります。

Sub Test()
  Dim II% 'as Integer
  'AからC列を置換する場合。
  For II% = 3000 To 3999
   Columns("A:C").Replace What:=II%, Replacement:="機械部品", LookAt:=xlWhole
  Next
End Sub
こんな感じです。

【27428】Re:置き換えをループで・・・
回答  りん E-MAIL  - 05/8/9(火) 8:29 -

引用なし
パスワード
   Help Me! さん、おはようございます。
>>私は3000〜3999をすべて機械部品 に置換したいのです。

>Sub Test()
  Application.ScreenUpdating = False
>  Dim II% 'as Integer
>  'AからC列を置換する場合。
>  For II% = 3000 To 3999
>   Columns("A:C").Replace What:=II%, Replacement:="機械部品", LookAt:=xlWhole
>  Next
  Application.ScreenUpdating = True
>End Sub

ループの回数が少ない分処理が速くなりました。
Sub test()
  Application.ScreenUpdating = False
  Dim r1 As Range, c1 As Range
  On Error Resume Next
  '編集→ジャンプ→セル選択→定数:数値と文字
  '文字列として数値が入っていても処理するように
  Set r1 = Columns("A:C").SpecialCells(xlCellTypeConstants, 3)
  On Error GoTo 0
  '該当セルがあればループ処理
  If Not r1 Is Nothing Then
   For Each c1 In r1
     With c1
      If IsNumeric(.Value) Then
        Select Case .Value
         Case 3000 To 3999 
           .Value = "機械部品"
        End Select
      End If
     End With
   Next
  End If
  Set r1 = Nothing
  Application.ScreenUpdating = True
End Sub

【27436】Re:置き換えをループで・・・
お礼  Help Me!  - 05/8/9(火) 11:48 -

引用なし
パスワード
   りん さん
早速の回答ありがとうございます!!
これで日が暮れずに済みました!

早速使わせていただきました!

本当にありがとうございます!


Help Me! さん、おはようございます。
>>>私は3000〜3999をすべて機械部品 に置換したいのです。
>
>>Sub Test()
>  Application.ScreenUpdating = False
>>  Dim II% 'as Integer
>>  'AからC列を置換する場合。
>>  For II% = 3000 To 3999
>>   Columns("A:C").Replace What:=II%, Replacement:="機械部品", LookAt:=xlWhole
>>  Next
>  Application.ScreenUpdating = True
>>End Sub
>
>ループの回数が少ない分処理が速くなりました。
>Sub test()
>  Application.ScreenUpdating = False
>  Dim r1 As Range, c1 As Range
>  On Error Resume Next
>  '編集→ジャンプ→セル選択→定数:数値と文字
>  '文字列として数値が入っていても処理するように
>  Set r1 = Columns("A:C").SpecialCells(xlCellTypeConstants, 3)
>  On Error GoTo 0
>  '該当セルがあればループ処理
>  If Not r1 Is Nothing Then
>   For Each c1 In r1
>     With c1
>      If IsNumeric(.Value) Then
>        Select Case .Value
>         Case 3000 To 3999 
>           .Value = "機械部品"
>        End Select
>      End If
>     End With
>   Next
>  End If
>  Set r1 = Nothing
>  Application.ScreenUpdating = True
>End Sub

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