4

ちなみにエクセル2010を使っています。

私は職場での仕事のために VBA を独学しようとしています (彼らはインターンに VBA を教えています...)。

幅が 3 列の枠付きテーブルを作成しようとしています。テーブル内の行数は、ユーザーの入力量に基づいている必要があります。Count私のコードでは、それはユーザーが指定した値です。

私の問題は、必要な範囲を選択する方法がわからないことです。範囲を選択する方法を知っている唯一の方法は、次を使用することです。

ActiveCell.Range("Top left cell:Bottom right cell").Select

からA1までだった場合C8、どうすればそれを機能させることができますか? 次のように機能することを願っています:

ActiveCell.Range("A1:C(count)").Select

これは私がこれまでに持っているものです:

Option Explicit
Dim Count As Long
Dim CFLArray() As Variant
Sub TableCreation1()
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Time (days)"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "CFL (measured)"
    ActiveCell.Offset(0, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "De (estimated)"
    ActiveCell.Offset(0, -2).Range("A1:C1").Select
    Selection.Font.Bold = True
    ActiveCell.Columns("A:A").EntireColumn.EntireColumn.AutoFit
    ActiveCell.Offset(0,1).Columns("A:A").EntireColumn.EntireColumn.AutoFit
    ActiveCell.Offset(0,2).Columns("A:A").EntireColumn.EntireColumn.AutoFit
    ActiveCell.Select
End Sub

Sub FindRange()
    Range("A2").Select
    Count = InputBox("How many pairs of data do you have? ")
End Sub

1日かそこら前に仕事で持っていた本を使ってVBAを独学しましたが、そこにはこれらの線に沿ったものは何も見つかりませんでした. 私のインターネット検索も失敗しました。最悪の部分は、それが信じられないほど単純になることを私が知っていることです.

4

2 に答える 2

4

それはとても簡単です!あなたはほんの少しずれていました。

変化する:ActiveCell.Range("A1:C(count)").Select

に:ActiveCell.Range("A1:C" & count).Select

countただし、コードに変数が表示されません。

常に同じ列であることがわかっている場合は、次のようにすることができます。

Range("A1:C" & ActiveSheet.Range("C1048576").End(xlUp).Row).Select

(1048576は Excel 2010 の最大行です。これはデータにとって完璧ではないかもしれませんが、うまくいけば、正しい方向に進むことができます...)

また、VBA についての補足として、Selectほとんどの場合、使用する必要はありません。たとえば、次のようになります。

Range("A1").Select

ActiveCell.FormulaR1C1 = "Time (days)"

次のように簡単に書き直すことができます。

Range("A1").FormulaR1C1 = "Time (days)"

そして、テキストだけを使用している場合:

Range("A1").value = "Time (days)"

ActiveCell.Range("A1:C" & count).Selectまた、 usingは と同じではないことも指摘したいと思いActiveSheet.Range("A1:C" & count).Selectます。現在選択されているセルに応じて、これらは異なる範囲を選択します。A1:C8ではなくを本当に意味する場合は、 (または省略された) バージョンA1:C8 (relative to the current cell)を使用することをお勧めします。ActiveSheet

于 2012-07-06T14:00:50.547 に答える
3

それは次のようになります。

ActiveCell.Range("A1:C" & Count).Select

&文字列連結演算子です。


補足 - 最初の手順 (TableCreation1) は、より簡潔に書き直すことができます。

Sub TableCreation1()

  Range("A1") = "Time (days)"
  Range("B1") = "CFL (measured)"
  Range("C1") = "De (estimated)"
  Range("A1:C1").Font.Bold = True
  Columns("A:C").EntireColumn.EntireColumn.AutoFit

End Sub
于 2012-07-06T13:57:34.427 に答える