- ベストアンサー
Excel2000ののマクロでセルを埋めたいのですが
みなさん、こんにちは。 Excel2000ののマクロを使ってでセルを "*" で埋めたいのですが、どのような 構文にすればよろしいでしょうか? "*" で埋めたい列は "Sheet2" の A , B , C ですが、行数は毎回変わります。 何行埋めるか、の変数は "Sheet1" の A1 に入っています。 繰り返し処理になると思うのですが、よくわかりません。 どうぞ、よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
例えばこんなのとか: 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で指定した行数分、下にフィルしてます。
その他の回答 (2)
- maruru01
- ベストアンサー率51% (1179/2272)
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)
こんにちは。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行のコードで記述しましたが、もっと多い場合は、さらに列用のループを使用した方がいいでしょう。 なお、別のシートから実行すると、そのシートに"*"を入れてしまいます。念のため。
お礼
早速の回答ありがとうございました。 試してみます。メッセージボックスが出るところがおしゃれですね。
お礼
ご回答、ありがとうございました。 フィルを使っているのですね。 私はコピー & ペースト で考えたのですが、フィルのほうがスマートですね。