• ベストアンサー

Excel2000ののマクロでセルを埋めたいのですが

みなさん、こんにちは。 Excel2000ののマクロを使ってでセルを "*" で埋めたいのですが、どのような 構文にすればよろしいでしょうか? "*" で埋めたい列は "Sheet2" の A , B , C ですが、行数は毎回変わります。 何行埋めるか、の変数は "Sheet1" の A1 に入っています。 繰り返し処理になると思うのですが、よくわかりません。 どうぞ、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

例えばこんなのとか: Sub Macro1() Dim fill_height As Integer fill_height = ActiveWorkbook.Worksheets("Sheet1").Range("A1").Value With ActiveWorkbook.Worksheets("Sheet2") .Columns("A:C").ClearContents .Range("A1").FormulaR1C1 = "*" .Range("A1:C1").FillRight .Range("A1:C" & CStr(fill_height)).FillDown End With End Sub A1からC1まで右にフィル それから、Sheet1のA1で指定した行数分、下にフィルしてます。

ariga
質問者

お礼

ご回答、ありがとうございました。 フィルを使っているのですね。 私はコピー & ペースト で考えたのですが、フィルのほうがスマートですね。

その他の回答 (2)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

No.1です。 No.2の人の回答を見て、Forループ使わなくても出来る方法を思い出しました。 Sub Macro2()   Dim EndRow As Long   If IsNumeric(Worksheets("Sheet1").Range("A1").Value) Then     EndRow = CLng(Worksheets("Sheet1").Range("A1").Value)   Else     MsgBox "Sheet1のA1に数値を入力して下さい。", vbCritical     Exit Sub   End If   Range("A1:C" & EndRow).Select   Selection.Value = "*" End Sub 同じ値なら、選択して一度に入力出来るんでした。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 標準モジュールに以下のプロシージャを記述して、それをSheet2から実行します。 Sub Macro1()   Dim i As Long   Dim EndRow As Long   If IsNumeric(Worksheets("Sheet1").Range("A1").Value) Then     EndRow = CLng(Worksheets("Sheet1").Range("A1").Value)   Else     MsgBox "Sheet1のA1に数値を入力して下さい。", vbCritical     Exit Sub   End If   For i = 1 To EndRow     DoEvents     Cells(i, 1).Value = "*"     Cells(i, 2).Value = "*"     Cells(i, 3).Value = "*"   Next i End Sub 開始行(ForループのStart)は1にしました。 また、列数は3列なので、3行のコードで記述しましたが、もっと多い場合は、さらに列用のループを使用した方がいいでしょう。 なお、別のシートから実行すると、そのシートに"*"を入れてしまいます。念のため。

ariga
質問者

お礼

早速の回答ありがとうございました。 試してみます。メッセージボックスが出るところがおしゃれですね。

関連するQ&A