1

私はプログラミングが初めてで、Excel ファイルのあいさつ文を修正する機能に取り組みたいと考えています。

まず、最初の列の名前にDear "を追加し、この値を次の列に追加して、最初の列に名前が、次の列に "Dear name" が表示されるようにします。桁。

私がこれまで持っていた機能は、次の列に「親愛なる」を入れていますが、それを最初の列のテキストに追加していません。誰かが私のコードを修正するのを手伝ってくれますか?

Sub letterSalutationFixer()

      Dim letterSalutationColumn As Range
      Set letterSalutationColumn = Columns(1)

       For Each Cell In letterSalutationColumn
            Cell.Offset(, 1).Value = "Dear " & Cell.Text    
      Next

    End Sub

PS。すでに利用可能な関数を処理するのにそれほど時間がかからないため、必ずしもプログラムでこれを行う必要はないことを認識していますが、最終的にはこれを拡張して、より複雑な他のデータを修正したいと考えています。簡単なことから始めます。

よろしくお願いします!

4

2 に答える 2

3

空白の理由は、Cell が列全体に相当するためです。しかし、あなたは近くにいます。もしそうなら...

For Each Cell In letterSalutationColumn.Cells

..l 各セルを循環します。

ただし、その書き方では、列全体の各セルを循環するため、Excel がクラッシュするか、少なくとも動作が遅くなる可能性があります。

これは、あなたがやろうとしていることの作り直されたバージョンです。内容のある列 A のセルにのみ作用します。

Sub Salutation()
Dim ws As Excel.Worksheet
Dim LastRow As Long
Dim NameRange As Excel.Range
Dim cell As Excel.Range

Set ws = ActiveSheet
With ws
    LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
    Set NameRange = .Range("A2:A" & LastRow)
    For Each cell In NameRange
        cell.Offset(, 1) = "Dear " & cell.Text
    Next cell
End With
End Sub

また、すべての変数を宣言します。これは、実行する習慣を身につけたいものです。を検索しOption Explicitて、強制する方法を学びます。

また、Withステートメントを使用して参照を完全に修飾するObjectため、参照するだけでなく、にColumn(1)設定されてRange(something)いる.wsActiveSheet

于 2013-06-21T03:01:20.293 に答える
3

別の方法は、のVBA代替です

  1. 列 A の使用済み部分 (つまり、B1 ="Dear " &A1etc)に対して連結を実行する列 B の数式を使用する
  2. 数式は、数式を削除する値としてそれ自体にコピーされます

コード

Sub QuickCon()
Dim rng1 As Range
Set rng1 = Range([a1], Cells(Rows.Count, "A").End(xlUp))
With rng1.Offset(0, 1)
.FormulaR1C1 = "=""Dear "" &RC[-1]"
.Value = .Value
End With
End Sub
于 2013-06-21T03:07:42.823 に答える