|
こんにちは。かみちゃん です。
>「行」が100までありまして、また、途中に「空欄」が幾つもありますので、
>「3行目以下のB列に空白があれば、そこで、マクロは停止」してしまうと、
>理想の処理にはならないのです。
であれば、以下のコードはおかしいです。
Do Until Cells(行, 2).Value = ""
これは、B列の変数「行」のセルが空白になるまでなので、途中に空白があれば
そこでDo 〜 Loopの繰り返し処理は終了します。
そのため、以下のように修正したほうがいいと思います。
☆は、削除する行
★は、追加する行
◆は、あったほうがいい行
Sub ファイル名変更2()
Dim フォルダ As String '◆
Dim 変換前 As String '◆
Dim 変換後 As String '◆
Dim 行 As Long '◆
Dim lngMaxRow As Long '★
フォルダ = Cells(3, 7).Value & "\"
行 = 3
lngMaxRow = Cells(Rows.Count, 2).End(xlUp).Row '★
' Do Until Cells(行, 2).Value = "" '☆
Do Until 行 > lngMaxRow '★
変換前 = フォルダ & Cells(行, 2).Value
変換後 = フォルダ & Cells(行, 4).Value
If 変換前 <> フォルダ And 変換後 <> フォルダ Then '★
Name 変換前 As 変換後
End If '★
行 = 行 + 1
Loop
MsgBox "終了" '◆
End Sub
なお、理想の処理にはならないことはわかりましたが、それは、説明不足のような
気がします。
提示されたシートレイアウトでは、最低限のことは処理できるコードを提示しているつもりですので、
それの動作確認の結果を知らせていただくのが先ではないでしょうか?
|
|