0

以下のコードを使用してスプレッドシートを自動化しています。これが実行されたら、別のマクロを使用して電子メールを自動的に送信しています。ここで達成したいのは、現在のようにユーザー入力をさらに減らすことです。入力ボックスから要求されたときに範囲を選択する必要がありますが、VBA 内で事前に決定された範囲を選択することでこれを自動化したいと考えています。 .

更新する必要があるのは application.inputbox 領域だと思いますが、他の投稿を調べても、手動入力を無効にするものを見つけることができませんでした。

Sub JoinCells()

Set xJoinRange = Application.InputBox(prompt:="Highlight source cells to merge",    Type:=8)
xSource = 0
xSource = xJoinRange.Rows.Count
xType = "rows"
If xSource = 1 Then
    xSource = xJoinRange.Columns.Count
    xType = "columns"
End If
Set xDestination = Application.InputBox(prompt:="Highlight destination cell", Type:=8)    If xType = "rows" Then
    temp = xJoinRange.Rows(1).Value
    For i = 2 To xSource
        temp = temp & " " & xJoinRange.Rows(i).Value
    Next i
Else
    temp = xJoinRange.Columns(1).Value
    For i = 2 To xSource
        temp = temp & " " & xJoinRange.Columns(i).Value
    Next i
End If

xDestination.Value = temp

End Sub
4

1 に答える 1

1

Rangeを探していると思います。

任意の範囲を簡単に設定できます。

Dim xJoinRange as Range, xDestination as Range
xJoinRange = Range("D3:E45")
xDestination = Range("G3:H45")

これで、現在/アクティブなワークシートのこの範囲に常に作用します。

Worksheets()特定のワークシートで範囲を指定する場合は、次のようにする必要があります。

Dim xJoinRange as Range, xDestination as Range
xJoinRange = Worksheets("myWorksheetName").Range("D3:E45")
xDestination = Worksheets("myWorksheetName").Range("G3:H45")
于 2013-02-14T15:40:35.583 に答える