• ベストアンサー

エクセルVBEの記述

エクセルVBEの記述で Range("G15").Value=Worksheets("シート名").Range("L7").Valueと記述し、G15のセルに~名という名前の シートのL7のデータを表示するという場合に、これを G115のセルまでL107の値を同様に表示させるようにする (オートフィルということになるんでしょうか?)場合は どのように記述すればいいのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • sakenomo
  • ベストアンサー率52% (35/67)
回答No.2

これでも出来ます。 Range("G15:G115").Value = Worksheets("シート名").Range("L7:L107").Value GとかLのセル範囲の数字をいろいろと変えて、試してみるのも面白いですよ。

fisherman2
質問者

お礼

ありがとうございます。 そのまま、記述すればOKなんですね。 難しく考えてました。 早速試してみます。

その他の回答 (1)

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

for a=15 to 115 Range("G" + a).Value=Worksheets("シート名").Range("L" + (a-8)).Value next a としてあげれば いいでしょう。

fisherman2
質問者

お礼

ありがとうございます。 早速試してみます。

関連するQ&A

  • エクセルVBAの記述で・・・OTL

    エクセルVBAの記述で・・・OTL VBA初心者です。 まず、私が記述した内容を書きます。 Sub 実践練習() Dim tuika As String tuika = Application.InputBox( _ Title:="追加", _ Prompt:="追加する内容を入力して下さい。", _ Left:=650, _ Top:=100, _ Type:=2) If Worksheets("Sheet2").Range("G10").Value <> " FALSE " Then MsgBox "OKです", vbOKOnly + vbDefaultButton2, "追加完了" With Worksheets("Sheet2") .Range("G10").Value = tuika LastRow = Worksheets("Sheet3").Range("A" & Rows.Count).End(xlUp).Row + 1 Worksheets("Sheet3").Range("A" & LastRow).Value = Worksheets("Sheet2").Range("G10").Value End With Else MsgBox "入力が不足しています。", vbOKOnly + vbCritical, "入力ミス" End If End Sub() 完成させたいことは・・・ Sheet1に存在するInputbox(ボタン)を使用し、 Sheet2のG10にFALSE以外が入力されたときは、 MsgBox追加完了のダイアログを表示してSheet2のG10値をSheet3のA列に順番に転送させる。 もしFALSEが入力されてしまったら、 MsgBox入力ミスを表示させて、 Sheet2のG10の値(FALSE)を削除しなさい。 と、記述したいのです。 勿論、上記の記述は完成していません(泣 どなたか、ご教授の程、何卒宜しくお願い致します。 (上記の完成型をお待ちしてます m(_ _)m ) 【環境】 OS:WindowsXP Pro Excel:2003

  • 教えてマクロの記述?

    シート1に記述した内容をシート2に一覧形式で入力するマクロを以下の通り作成しました。 シート1に記述した内容を、別のブックのシートに一覧形式で入力していくマクロに変更するには どのようにマクロの記述をすれば宜しいのでしょうか?マクロの初心者にも分るようにご教授 いただければ助かります。よろしくお願いします。 Sub 入力() Dim LastRow As Long With Worksheets("sheet2") LastRow = Worksheets("sheet2").Range("B" & Rows.Count).End(xlUp).Row + 1 .Range("B" & LastRow).Value = Worksheets("sheet1").Range("B1").Value .Range("C" & LastRow).Value = Worksheets("sheet1").Range("B3").Value .Range("D" & LastRow).Value = Worksheets("sheet1").Range("B5").Value .Range("E" & LastRow).Value = Worksheets("sheet1").Range("B7").Value .Range("F" & LastRow).Value = Worksheets("sheet1").Range("B9").Value .Range("G" & LastRow).Value = Worksheets("sheet1").Range("B11").Value End With End Sub

  • エクセルのマクロを教えてください。

    マクロの初心者です。 特に変数が全く使えず、下記もどのように記載していいのかわからないため教えていただけないでしょうか。 ユーザーフォームのtextbox2に開始番号があります。 textbox3に本数があります。 sheet1のB12セルには開始番号が入ります。 開始番号から本数分+1したものを順番にセルに入っていくようにしたいです。 ただ、入れたいセルが横→左下(開始番号の列)→横→左下(開始番号の列)・・・としたいため、どのように書いていいのかわかりません。 地道に書くのであれば、下記のようになると思うのですが、変数を使って書く場合はどのようになるのか教えていただけないでしょうか。 Worksheets("Sheet1").Range("B12").Value = TextBox2.Value If TextBox3.Value = 2 Then Worksheets("Sheet1").Range("G12").Value = TextBox2.Value * 1 + 1 ElseIf TextBox3.Value = 3 Then Worksheets("Sheet1").Range("G12").Value = TextBox2.Value * 1 + 1 Worksheets("Sheet1").Range("B13").Value = TextBox2.Value * 1 + 2 ElseIf TextBox3.Value = 4 Then Worksheets("Sheet1").Range("G12").Value = TextBox2.Value * 1 + 1 Worksheets("Sheet1").Range("B13").Value = TextBox2.Value * 1 + 2 Worksheets("Sheet1").Range("G13").Value = TextBox2.Value * 1 + 3 ElseIf TextBox3.Value = 5 Then Worksheets("Sheet1").Range("G12").Value = TextBox2.Value * 1 + 1 Worksheets("Sheet1").Range("B13").Value = TextBox2.Value * 1 + 2 Worksheets("Sheet1").Range("G13").Value = TextBox2.Value * 1 + 3 Worksheets("Sheet1").Range("B14").Value = TextBox2.Value * 1 + 4 ・ ・ ・ End If

  • エクセル インデックスを用いた串刺し計算

    例えば sheetが10枚で "A1" の値を合計するマクロで11枚目のsheetの "A3"に表示させるのに 下記のようにすると出来ましたが、これを短く記述する方法を教えてください、よろしくお願いします。 Range("a3").value=Worksheets(1).Range("a1").valur + Worksheets(2).Range("a1").value + Worksheets(3).Range("a1").value + ・・・・・・・Worksheets(10).Range("a1").value

  • EXCEL VBA オートフィルタの値コピー

    ほぼ初心者ですのでよろしくお願いします。 Sheet2にデータがありそのデータをオートフィルタで日付から抽出してSheet3にコピーして、その後Sheet1の表に該当項目をコピーする際についてですが、オートフィルタ後、1日当たり行は10~15行あります、そのうちG列にはデータが通常2つのセルに値があるだけでほかの行は空欄です。(日によってどの行になるかはわかりません)この2つのセルの値をそれぞれSheet1のM10とM11コピーしたいのです、 ちなみにセル番地は下記の方法で取得できましたが、値の取得ができません。 Range("D1").Value = Worksheets("sheet1").Range("A1").End(xlDown).Row Range("D2").Value = Worksheets("sheet1").Range("A65536").End(xlUp).Row Sub データコピー() Range("AB17") = Format(Sheet3.Range("A3").Value, "yy") Range("AE17") = Format(Sheet3.Range("A3").Value, "mm") Range("AH17") = Format(Sheet3.Range("A3").Value, "dd") Range("AK17") = Format(Sheet3.Range("A3").Value, "aaa") Range("D22") = Sheet4.Range("D3").Value Range("D25") = Sheet4.Range("E3").Value Range("H22") = Sheet4.Range("F3").Value Range("D22") = Sheet4.Range("G3").Value Range("L22") = Sheet4.Range("K3").Value Range("Q22") = Sheet4.Range("L3").Value Range("U22") = Sheet4.Range("M3").Value .   .   . End Sub

  • コンボボックスの記述の簡素化

    下記の記述でコンボボックスにデーターを表示するようにしたのですが 大量に記述が必要になります。 もっと簡素化できないでしょうか。 よろしくお願いします。 If Worksheets("Sheet2").Range("C3").Value = Worksheets("Sheet2").Range("C2").Value Then 品名リスト.RowSource = "Sheet2!D3:D18" ElseIf Worksheets("Sheet2").Range("C4").Value = Worksheets("Sheet2").Range("C2").Value Then 品名リスト.RowSource = "Sheet2!E3:E20" ― ― 省略 ― ― ElseIf Worksheets("Sheet2").Range("C20").Value = Worksheets("Sheet2").Range("C2").Value Then 品名リスト.RowSource = "Sheet2!U3:U20" ElseIf Worksheets("Sheet2").Range("C21").Value = Worksheets("Sheet2").Range("C2").Value Then 品名リスト.RowSource = "Sheet2!V3:V20"

  • EXCEL VBA Array要素記述を変更したい

    プログラムの中にセルの値を直接記入しているところがあます。 Select Caseの行の 「Array("101", "102", "103", "104")」のとろです。 プログラムには101, 102, 103, 104ではなくB10~B13を使用したいのですが、うまくできません。 実際には4つだけではなく何十個もあって作業がわずらわしくなるのと、ブックごとに値が異なって 汎用性がないためです。 アドバイスいただけると助かります。 初歩的なことを質問しているかも入れませんが、よろしくお願いいたします。 シート名「表紙」のA列は部品番号(=シート名)でA10:101 A11:102 A12:103 A13:104とします。 これに対応したシートが4つあり、シート名は、「101」「102」「103」「104」とします。 使用者は「表紙」のシートで下記の作業を行います。 B6セルには製造番号(例:AM01-130012)を入力します。 B10~B13セルは「○」「×」を入力規則から選択します ○を選択した隣のC10~C13セルは部品個数で1~9の数値を入力規則から選択します。 ○を選択したのと同じ行のD10~L10、D11~L11、D12~L12、D13~L13セルに、 文字列を入れる場合と入れない場合があります。文字列は左のD列から順に入れます。 下記マクロにて「○」となっているシートのみコピーを作成します。(1) コピーしたシートすべてのB1セルに製造番号を入力します。(2) D列に文字列があれば、コピーした対応するシートの中のH3~P3セルへ貼り付けます。(3) C列の値によって、コピーした対応するシートの中のH3~P3セルの値をクリアします。(4) <表紙のシート>    A     B     C    D     E     F    G    H     I     J     K      L 5 6    AM01-130012 7 8 9  10 101    ×    9 11 102    ○    3 12 103    ○    8  A1-1  A1-2  A1-3  A1-4  A1-5  A1-6  A1-7  A1-8   13 104    ×    9 <プログラム> Sub TestSample() Dim c As Range Dim 製造番号 As String Dim flg As Boolean flg = True With ThisWorkbook 製造番号 = .Worksheets("表紙").Range("B6").Value For Each c In .Worksheets("表紙").Range("B10:B13") If c.Value Like "○*" Then ' ' (1) If flg Then '  初めてなら、○に対応したシートを「新しいブックにコピー」 .Worksheets(c.Offset(, -1).Text).Copy flg = False Else '  それ以外なら、○に対応したシートをアクティブブックの最後にコピー追加 .Worksheets(c.Offset(, -1).Text).Copy After:=Worksheets(Worksheets.Count) End If ' ' (2) ' ' コピーしたすべてのシート(のB2)に製造番号を書き込む Range("B1").Value = 製造番号 ' ' (3) ' ' ○の行のD:L を 対応するシートのH3:P3 へ貼り付け If c.Offset(, 2) <> "" Then '  D列が空でなければ Range("H3").Value = c.Offset(, 2).Value Range("I3").Value = c.Offset(, 3).Value Range("J3").Value = c.Offset(, 4).Value Range("K3").Value = c.Offset(, 5).Value Range("L3").Value = c.Offset(, 6).Value Range("M3").Value = c.Offset(, 7).Value Range("N3").Value = c.Offset(, 8).Value Range("O3").Value = c.Offset(, 9).Value Range("P3").Value = c.Offset(, 10).Value End If End If Next c End With ' ' (4) For Each 各シート In Worksheets With 各シート .Activate Select Case ThisWorkbook.Worksheets("表紙").Cells(Application.Match(各シート.Name, Array("101", "102", "103", "104"), 0) + 9, "C").Value Case "1" '1のときの仕事をする Range("I3:P3").Select Selection.ClearContents Case "2" '2のときの仕事をする Range("J3:P3").Select Selection.ClearContents Case "3" '3のときの仕事をする Range("K3:P3").Select Selection.ClearContents Range("J3").Select Case "4" '4のときの仕事をする Range("L3:P3").Select Selection.ClearContents Case "5" '5のときの仕事をする Range("M3:P3").Select Selection.ClearContents Case "6" '6のときの仕事をする Range("N3:P3").Select Selection.ClearContents Case "7" '7のときの仕事をする Range("O3:P3").Select Selection.ClearContents Case "8" '8のときの仕事をする Range("P3").Select Selection.ClearContents Case "9" 'do nothing Case Else End Select End With Next If flg Then MsgBox "部品番号が選択されていません。" Exit Sub End If

  • Excel VBA 定数にオブジェクトを指定したい

    Excel VBA 定数にオブジェクトを指定したい いつもお世話になりますm(__)m Excel VBAで、定数としてオブジェクトの指定はできないのでしょうか? 例えば、WorkSheets("Sheet1")を定数「Srt1」として設定したいのですが、  Public Const Srt1 As Object = Worksheets("Sheet1") としても「定数のデータ型が不正です」とエラーがでます。 例えば、セルに値をセットする時に Worksheets("Sheet1").Range("A1").Value="あああ" Worksheets("Sheet1").Range("A2").Value="いいい" Worksheets("Sheet1").Range("A3").Value="ううう" と書きますが、これを Srt1.Range("A1").Value="あああ" Srt1.Range("A2").Value="いいい" Srt1.Range("A3").Value="ううう" と書ければプログラムも見やすく、書きやすくなると思いました。 プログラムの最初に Dim Srt1 As Object Set Srt1 = Worksheets("Sheet1") とすれば使えるのですが、複数のシート名をまずは定数として登録したいと思っていますが、オブジェクト(ワークシート名)は定数として登録することは出来ないのでしょうか? お詳しいかた、是非ともご教授お願い致しますm(__)m

  • VBEのコードを載せました。何処が間違っているのですか。教えてくださいよろしくお願いいたします。

    印刷用紙のひな形がA4の紙のなかに3段になっています。 「sheet4月」は顧客名(B行)、担当者名、他に月の売上金等が並んでい ます。顧客名の横の空白のA行に数字の1を入れて、顧客列を選択しま す。それを「sheet合計請求書」に各項目をあてはめて印刷したいので す。 下記のVBEのコードでは「sheet4月」で選択の顧客が「合計請求書」に 内容が移ると3段とも同じ内容、名前になります。 例えば上から1段目「H商事」、2段目「H商事」、3段目「H商事」といっ た具合です。 それを、3段とも違う顧客の内容にしたいのです。 例えば上から1段目、「H商事」、2段目「K機械」、3段目「V貨物」のよ うにしたいのですがわかりません。数字の1をいれて選択する数は約40 社程度です。 ご指導お願いいたします。 Sub 合計請求書印刷() Dim Sheet1 As Worksheet Dim Sheet2 As Worksheet Set Sheet1 = ThisWorkbook.Worksheets("4月") Set Sheet2 = ThisWorkbook.Worksheets("合計請求書") Dim baseRow As Long ' 7行目から、2列目(顧客名)が空になるまでループ baseRow = 7 Do While (Sheet1.Cells(baseRow, 2).Value <> "") '1列目(A列)に1が入っていた時のみ印刷 If (Sheet1.Cells(baseRow, 1).Value = 1) Then ' 1段目 Sheet2.Range("W8").Value = Sheet1.Cells(baseRow, 2).Value Sheet2.Range("B15").Value = Sheet1.Cells(baseRow, 8).Value Sheet2.Range("C15").Value = Sheet1.Cells(baseRow, 10).Value Sheet2.Range("W15").Value = Sheet1.Cells(baseRow, 5).Value ' 2段目 baseRow = baseRow + 1 Sheet2.Range("W25").Value = Sheet1.Cells(baseRow, 2).Value Sheet2.Range("B32").Value = Sheet1.Cells(baseRow, 8).Value Sheet2.Range("C32").Value = Sheet1.Cells(baseRow, 10).Value Sheet2.Range("W32").Value = Sheet1.Cells(baseRow, 5).Value '3段目 baseRow = baseRow + 1 Sheet2.Range("W42").Value = Sheet1.Cells(baseRow, 2).Value Sheet2.Range("B49").Value = Sheet1.Cells(baseRow, 8).Value Sheet2.Range("C49").Value = Sheet1.Cells(baseRow, 10).Value Sheet2.Range("W49").Value = Sheet1.Cells(baseRow, 5).Value ' 印刷プレビュー Sheet2.PrintPreview End If baseRow = baseRow Loop Set Sheet2 = Nothing Set Sheet1 = Nothing End Sub よろしくお願いいたします。

  • コピペマクロを高速化したい(Excel)

    見よう見まねで以下のようなコードを書いてみたのですが、 これだと表示にやや時間がかかるので改善したいです。 ------ Sub コピペ() Dim i As Long i = Range("A1") Range("C12").Value = Worksheets("sheet2").Cells(i, 2).Value Range("D12").Value = Worksheets("sheet2").Cells(i, 3).Value Range("E12").Value = Worksheets("sheet2").Cells(i, 4).Value Range("F12").Value = Worksheets("sheet2").Cells(i, 5).Value Range("G12").Value = Worksheets("sheet2").Cells(i, 7).Value ------ こんな感じでコピペしたい値があと15個くらいあります。 コピー元とコピー先のセル配置には法則性があまりありません。 よろしくお願いします。

専門家に質問してみよう