• ベストアンサー

記述

下記コードでRows("gyou:gyou").Select が正しくありません。Rows("4:4").Select の意味にさせるにはどう記述すればよいか。お教え願います。 Sub Macro1() ' Dim gyou As Integer gyou = 4 ' Rows("4:4").Select Rows("gyou:gyou").Select Selection.Insert Shift:=xlDown End Sub

  • taktta
  • お礼率72% (1031/1430)

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

  • ベストアンサー
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

#1です。ご提示のコードは↓のように書くことも出来ます。 Dim gyou As Long gyou = 4 Cells(gyou, 1).EntireRow.Insert

その他の回答 (3)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

次の方法は駄目でしょうか。 gyou = "4:4" Rows(gyou).Select

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

"" で囲むと文字列として扱われます。 Rows(gyou & ":" & gyou).Select とか Rows(gyou).Select

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

変数を""で括ってはいけません。 単なる文字列と看做されます。 Rows(gyou & ":" & gyou).Select

関連するQ&A

  • VBAで行を挿入する

    VBAを始めた初心者です。 Exel2002使用です。 VBAでA列の4行目から10行目に行の挿入をできるようにしようと下記のように書きましたが、Rows("i:i").Selectの部分でデバックがかかってしまいます。間違っている理由がわからないのですがよろしくお願いします。 また、DO While Loopステートメントを使ってA列が空白になるまで(例えばA4セル以下の)行を挿入とする場合の方法も教えていただけましたら幸いです。 Sub 4行目から10行目まで() Dim i As Integer For i = 4 To 10 Cells(i, 1).Value = i Rows("i:i").Select Selection.Insert Shift:=xlDown Next i End Sub Sub 4行目から空白になるまで() Dim i As Integer Range("A4").serect Do While activecell.value = "" Cells(i, 1).Value = i Rows("i:i").Select Selection.Insert Shift:=xlDown activecell.offset(1,0).select Loop End Sub

  • 行を非表示するVBA

    下記は行を非表示するVBAです、 エラーになり非表示できませんどこが間違っているのですか、よろしくお願いします。 Sub Macro7() Dim a As Integer a = 15 Rows("a:a").Select Selection.EntireRow.Hidden = True End Sub

  • Excelのマクロで現在行を指定する方法を

    Excelのマクロで現在行を変えて、現在見ている行にする方法を教えてください。 下記は操作を記録させて作成したものですが、これを例えば、Excelの213行で実行させると 205行に196~203行が再度追加されてしまいます。 これを変えて、現在見ている例えば213行の前に196~203行を入れたいという場合はどうすればいいのでしょうか? つまり、Rows("205:205").Selectの205というのを、現在見ている行に変更できれば良いように思うのですが。よろしくお願いします。 Sub Macro3() ' Keyboard Shortcut: Ctrl+Shift+A   Rows("196:203").Select   Selection.Copy   Rows("205:205").Select   Selection.Insert Shift:=xlDown   ActiveWindow.SmallScroll Down:=9 End Sub

  • VBA超初心者です

    皆さんのお知恵を拝借させてください。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2007/12/1 ユーザー名 : 101 ' Dim pearend As Integer Dim code As Integer Dim codeend As Integer Dim sheet_name As String Dim dayend As Date Sheets("商品名").Select Range("A4").Select Selection.End(xlDown).Select pearend = Selection.Row() For l = 4 To pearend Step 2 For r = 2 To 3 Cells(l, r).Select code = Cells(l, r).Value Select Case code Case 1000 To 1999 sheet_name = "1000" Case 2000 To 2999 sheet_name = "2000" Case 3000 To 3999 ssheet_name = "3000" Case 4000 To 4999 sheet_name = "4000" Case 5000 To 5999 sheet_name = "5000" End Select Sheets(sheet_name).Select Range("B4").Select Selection.End(xlToRight).Select codeend = Selection.Column() Range("A5").Select Selection.End(xlDown).Select dayend = Selection.Row() For i = 2 To codeend If code = Cells(4, i).Value Then Range(Cells(dayend, i), Cells(5, i)).Select Selection.Copy Sheets("商品名").Select Range("K3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If Next Next Next End Sub というマクロをつくってみたのですが、何順目かあたりから For r = 2 To 3 のrがなぜか4になっています。正直知識がないのでさっぱりわかりません。どこに問題があるか詳しい方教えてください。

  • VBAマクロエラー【オーバーフローしました。】

    以下のVBAマクロで突然エラーが出るようになってしまいました。 原因がわからず困っています。 どなたかご教授ください。 該当部分 :S = Range("B2").End(xlDown).Row エラーMrg:実行時エラー'6': オーバーフローしました ----------マクロ文---------- Sub 部担コード読み替え() Dim R_Count As Integer Dim P_Sheet As String Dim S As Integer 'データ取込用のファイルを開く Workbooks(D_Book).Activate Sheets("Data1").Select Columns("C:C").Select Selection.Insert Shift:=xlToRight Range("B2").Select S = Range("B2").End(xlDown).Row Range("C2:C" & S).Formula = "=SUBSTITUTE(SUBSTITUTE(RC[-1],""%"",""1""),""*"",""2"")" Range("C1").Value = "部担コード" Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues Columns("B:B").Select Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft Range("A1").Select Sheets("Data2").Select Columns("C:C").Select Selection.Insert Shift:=xlToRight Range("B2").Select S = Range("B2").End(xlDown).Row Range("C2:C" & S).Formula = "=SUBSTITUTE(SUBSTITUTE(RC[-1],""%"",""1""),""*"",""2"")" Range("C1").Value = "部担コード" Columns("G:G").Select Selection.Insert Shift:=xlToRight Range("G2:G" & S).Formula = "=SUBSTITUTE(SUBSTITUTE(RC[-1],""%"",""1""),""*"",""2"")" Range("G1").Value = "キー" Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues Columns("B:B").Select Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft Columns("E:E").Select Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft Range("A1").Select End Sub

  • マクロ オートフィルタで困っています。

    マクロ オートフィルタで困っています。 1列目と2列目からそれぞれ条件をフィルタで抽出し、抽出された行を削除するマクロを組んだのですが(下記)、Bの条件が表にない場合に2行目から下が全て削除されてしまいます。 元の表は毎週変わるため、抽出する条件があるかないかはその時次第です。 オートフィルタにこだわってはいませんが、その他の抽出方法もいまいち分からず……。 どのようにすればよいのか、教えていただけますでしょうか。 宜しくお願い致します。 <マクロ> Sub Macro() Selection.AutoFilter Field:=1, Criteria1:="A" Selection.AutoFilter Field:=2, Criteria1:="B", Operator:=xlAnd Dim gyou(1) As Long gyou(0) = 2 gyou(1) = Range("A1").CurrentRegion.Rows.Count Rows(gyou(0) & ":" & gyou(1)).Select Selection.Delete Shift:=xlUp End Sub

  • For Each ~ Nextステートメント

    今、1つのブックに200前後のワークシートがあるとします。 For Each ~ Nextステートメントを使って以下のようなプログラムを全てのワークシートに適用したいと考えています。 Sub test() Dim mySht As Worksheet For Each mySht In Worksheets If Range("A2").Value <> "1990/01/31" Then Rows("2:2").Select Selection.Insert Shift:=xlDown Range("A2").Select ActiveCell.FormulaR1C1 = "1990/01/31" End If If Range("A3").Value <> "1990/02/28" Then Rows("3:3").Select Selection.Insert Shift:=xlDown Range("A3").Select ActiveCell.FormulaR1C1 = "1990/02/28" End If ・・・(中略)・・・ Next End Sub しかし、これを実行しても、うまくいきません。 全てのワークシートについて、必ずしもA2のセルが 1990/01/31であるとは限らないことが原因かとは思うんですが、自身ではどうしてもうまくプログラムを書くことが できません。良いお知恵を拝借できればと思います。

  • for next教えて下さい(;_;)

    以下のように1行残して9行消してという操作を連続してやりたいのですがfor nextをどう使えばうまくいくのかわかりません。誰か教えて下さいお願いしますm(_ _)m Sub Macro1() ' ' Macro1 Macro ActiveWindow.SmallScroll Down:=5 Rows("10:18").Select Selection.Delete Shift:=xlUp Rows("11:19").Select Selection.Delete Shift:=xlUp End Sub

  • インプットボックスのキャンセル処理

    インプットボックスのキャンセルを押したときに「型が一致しません」というエラーがでてしまいます。いろいろ調べてみてはいるのですが分かりません。教えて下さい。 Sub 指定した行数を挿入() Dim TopRow As Integer, CntRow As Integer, InstRows As Integer Dim i As Integer, ii As Integer, n As Integer Sheets("Sheet1").Select Rows("7:7").Select TopRow = ActiveCell.Row CntRow = Selection.Rows.Count n = InputBox("行数を入力して下さい。", "指定した行の挿入") If n = "" Then Exit sub End if InstRows = n For i = 1 To CntRow Rows(TopRow + (i - 1) * (InstRows + 1)).Select For ii = 2 To InstRows Selection.EntireRow.Insert Next ii Next i End Sub

  • 行を挿入するマクロがうまくいきません。

    Sheets("りんご").Select Rows("1:1").Select Selection.Copy Sheets("みかん").Select Range("人").Select Selection.Insert Shift:=xlDown Application.CutCopyMode = False End Sub というマクロは、りんごのシートにある1行をコピーして、 みかんのシートの人と名前定義してある特定の行にコピーする マクロです。この次に下のマクロを実行すると Sheets("りんご").Select Rows("2:3").Select Selection.Copy Sheets("みかん").Select Range("人").Select Selection.Insert Shift:=xlDown それまでのものが残ってしまい、行がどんどん増えていってしまいます。 いずれかのマクロを実行すればリセットされて行が増えないように コピーするにはどうすればよいでしょうか・・?

専門家に質問してみよう