web-dev-qa-db-ja.com

VBA-隣接するセルが空でない場合はセルにデータを入力します

Excelブックを開いて編集するマクロを作成しました。

まず、新しい列Aを追加してから、A1、B1、C1、D1のタイトルを変更します。

この後、VBAにある種の式/ループを作成して、この場合はAの各セルにテキスト(2014年12月31日)を追加しますが、隣接するセルにテキストがある場合に限ります。右RC [1]。

これを実行するために、VBAの指定されたコードをどのように編集する必要があるかについて誰かが考えていますか?

それほど重要ではありませんが、Excelシートでその日付を変更したいと思います。 Range( "E7")。Valueを使用して(そしてE7を編集して)行ったときのように、それを行う簡単な方法はありますか?書式設定は、他のすべてのワークブックに含まれていました。

Sub test()


Dim MyPath          As String
Dim MyFile          As String
Dim Wkb             As Workbook
Dim Cnt             As Long

Application.ScreenUpdating = False

'MyPath = "G:\SHARED\Style Research\Portfolios - Macro Test"
MyPath = Range("D6").Value

If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\"

MyFile = Dir(MyPath & "*.xls")

Cnt = 0
Do While Len(MyFile) > 0
    Cnt = Cnt + 1
    Set Wkb = Workbooks.Open(MyPath & MyFile)
    Wkb.Worksheets("Sheet1").Range("A1").EntireColumn.Insert

'this is the part I'm referring to
    Wkb.Worksheets("Sheet1").Range("A1:A250") = "31/12/2014"
    'Range("D7").Value

    'Wkb.Worksheets("Sheet1").Range("A1").EntireColumn.NumberFormat = "DD/MM/YYYY"
    Wkb.Worksheets("Sheet1").Range("A1") = "Date"
    Wkb.Worksheets("Sheet1").Range("B1") = "Identifier"
    Wkb.Worksheets("Sheet1").Range("C1") = "Name"
    Wkb.Worksheets("Sheet1").Range("D1") = "%"

    Wkb.Close savechanges:=True
    MyFile = Dir
Loop

If Cnt > 0 Then
    MsgBox "Completed...", vbExclamation
Else
    MsgBox "No files were found!", vbExclamation
End If

Application.ScreenUpdating = True

End Sub
1
Ewldh20

これは非常に簡単です。次のようなif条件でfor loopを使用してください-

Sub test()
For Each c In Range("A:A")
 If c <> 0 And c.Offset(, 1) <> 0 Then
     c.Value = 1
 End If
Next
End Sub

データに合わせて範囲を変更するか、usedrangeを取得してみてください。私はあなたの第二の部分を完全に理解していません。

0
Raystafarian