• ベストアンサー

EXCELのVBAでRange("A1:C4")を変数にする方法を教え

EXCELのVBAでRange("A1:C4")を変数にする方法を教えて下さい。 Sub Sample1() Range("A1:C4").Borders.LineStyle = True End Sub 上のマクロの"A1:C4"を変数にして成立させるにはどのように設定すればいいのでしょうか? 以下の方法ではエラーになってしまうので、宜しくお願いします。 Sub Sample1() HENSU = Chr(34) & "A1" & ":" & "C4" & Chr(34) Range(HENSU).Borders.LineStyle = True End Sub

  • o8ji
  • お礼率55% (22/40)

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

  • ベストアンサー
  • goo793ww
  • ベストアンサー率80% (8/10)
回答No.2

こんなので好いですか? 下記をモジュールシートへ貼り付けて試行してみて下さい。 Sub Sample2() Dim HENSU As String '←変数の宣言をします。 HENSU = Chr(34) & "A1" & ":" & "C4" & Chr(34) ' ""A1:C4"" を返します。←NG HENSU = "A1" & ":" & "C4" ' "A1:C4" を返します。←OK HENSU = "A1:C4" ' "A1:C4" を返します。←OK Range(HENSU).Borders.LineStyle = True ' HENSUの範囲に罫線を引きます。 End Sub

o8ji
質問者

補足

ありがとうございました。 わざわざダブルクォーテーションをダブってつけていたんですね。 単純な勘違いでした。 助かりました。

その他の回答 (2)

  • ziziwa1130
  • ベストアンサー率21% (329/1547)
回答No.3

VBでの文字列結合演算子は&じゃなくて+ですよ。 HENSU = Chr(34) & "A1" & ":" & "C4" & Chr(34)→HENSU = Chr(34) + "A1" + ":" + "C4" + Chr(34)

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.1

下記が参考になりそうです。 すぐに役立つエクセルVBAマクロ集 http://www.asahi-net.or.jp/~zn3y-ngi/index.html の 変数名で範囲指定して選択する http://www.asahi-net.or.jp/~zn3y-ngi/YNxv206.html#4

o8ji
質問者

お礼

ありがとうございました。

関連するQ&A

  • excel vba 遅延のソースゴード

    excel vba で動作させたものを動作の遅延をさせたいのですが、本コーナーで教えて頂いた下記の コードをどの様に使えばいいのでしょうか。 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub Sample()   Range("A1") = 0   For i = 1 To 10     Sleep 500 '500msec(0.5秒)待機     Range("A1") = i   Next i End Sub ーーーーーーーーーーーーーーーーーー (bf38:bn38)を赤  (bo38:by38)を緑にします。この動作を赤から緑になるまでに少し遅延させたいのです。mt2008さんに教えて頂きましたが解決できませんでした。継続して再質問させていただきたかったのですが、方法がわかりませんでしたので、このような形になりましたお許し下さい。 Range("BF38:Bn38").Select With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 3 End With Range("Bo38:By38").Select With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 4 End With End Sub

  • エクセルのVBAについて教えてください!

    VBAの初心者です。 罫線に関するマクロで、以下のようなマクロを作りました。 このマクロを改造して、外枠全体に関して同じことができるように したくていろいろ試してみたのですが、どうしてもできません。 非常に初歩的な質問で申し訳ありませんが、よろしくお願い致します。 Sub 罫線右() With Selection If .Borders(xlEdgeRight).LineStyle = xlNone Then .Borders(xlEdgeRight).LineStyle = xlContinuous Exit Sub End If If .Borders(xlEdgeRight).LineStyle = xlContinuous And .Borders(xlEdgeRight).Weight = xlThin Then .Borders(xlEdgeRight).Weight = xlHairline Exit Sub Else .Borders(xlEdgeRight).LineStyle = xlNone End If End With End Sub

  • エクセルVBAにおける罫線の色指定について

    エクセルVBAの初心者です。 使用機種はWindows VistaでExcel2007です。 後に示すコードではどうして("B4:H7")までの下罫線と ("C4:H8")までの左罫線が青色にならず、黒色のまま になるのでしょうか?("B4:H7")、("C4:H8")ともに 罫線の色は青色にしたいと思っています。 原因と対処方法をご存知の方ご教示願います。 画像も添付しておりますので、合わせてご参照ください。 Sub 日程表作成() Set WS1 = Worksheets("sheeT1") With WS1 .Range("B3") = "日" .Range("B3").Select End With Selection.AutoFill Destination:=Range("B3:H3") WS1.Range("B3:H3").Select With Selection.Borders(xlLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = 5 End With With Selection.Borders(xlTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = 5 End With With Selection.Borders(xlBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = 5 End With With Selection.Borders(xlRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = 5 End With '下線を二重線に変える Range("B3:H3").Select Selection.Borders(xlBottom).LineStyle = xlDouble WS1.Range("B3:H8").BorderAround Weight:=xlThick, _ ColorIndex:=5, LineStyle:=xlContinuous WS1.Range("B3:H8").RowHeight = 35 '日程表の中に横線を入れる WS1.Range("B4:H7").Select Selection.Borders(xlBottom).LineStyle = xlContinuous WS1.Range("B3:H8").BorderAround Weight:=xlThick, _ ColorIndex:=5, LineStyle:=xlContinuous '日程表の中に縦線を入れる WS1.Range("C4:H8").Select Selection.Borders(xlLeft).LineStyle = xlContinuous WS1.Range("B3:H8").BorderAround Weight:=xlThick, _ ColorIndex:=5, LineStyle:=xlContinuous '曜日のセルを塗りつぶす With WS1 .Range("B3:B8").Interior.ColorIndex = 38 .Range("C3:G8").Interior.ColorIndex = 19 .Range("H3:H8").Interior.ColorIndex = 19 .Range("B4").Activate End With End Sub

  • Excel VBAの罫線描画マクロをOpenOfficeCulcで実行。罫線が描画されない。

    Excel VBAで作成したマクロをOpenOffice.orgのCulcに単純移行して 実行してみたのですが、コードは実行されるのに罫線が描画されない 現象が発生しています。 罫線描画はCulcとExcelで互換が遅れている部分だと聞いていますが、 Culc独自のマクロで作成するしか回避方法はないのでしょうか? マクロは下記のような構成になっています。 REM ***** BASIC ***** Option VBASupport 1 Sub draw_line() With Worksheets("drawline") .Range("B2:E8").Borders(xlEdgeLeft).LineStyle = xlContinuous .Range("B2:E8").Borders(xlEdgeTop).LineStyle = xlContinuous .Range("B2:E8").Borders(xlEdgeBottom).LineStyle = xlContinuous .Range("B2:E8").Borders(xlEdgeRight).LineStyle = xlContinuous .Range("B2:E8").Borders(xlInsideVertical).LineStyle = xlContinuous .Range("B2:E8").Borders(xlInsideHorizontal).LineStyle = xlContinuous End With End Sub

  • EXCEL VBA Rangeについて

    プログラム初心者です。 EXCEL VBAに以下のようなRangeプロパティがあります。 CountNumは変数なのですが、 どのような内容を示しているのか分かりません。 教えていただけますでしょうか。 宜しくお願いします。 Worksheets("A情報").Range("C4:CS" & CountNum + 2)

  • EXCEL 異なるVBA

    教えて下さい、EXECL以下の異なるVBA (A>,B>)が2つあります、同じシートでそれぞれ動くようにさせたいです1つに合わせる事は出来ないでしょうか? 当方初心者の為わかりません教えて下さい。 A> Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Address(0, 0, xlA1, 0) <> "A1" Then Exit Sub With Range("F9:I9,K17:K36").Borders(xlDiagonalUp) If Left$(Target.Value, 1) = "S" Then .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic Else .LineStyle = xlNone End If End With End Sub B> Private Sub Worksheet_Change(ByVal Target As Range) With Sheet2 Select Case Target.Address Case Is = "$D$1" .Range("A1").Insert Shift:=xlDown .Range("A1").Value = Target.Value Case Is = "$D$2" .Range("B1").Insert Shift:=xlDown .Range("B1").Value = Target.Value End Select End With End Sub

  • エクセルVBA 行列の数を指定して罫線を引くマクロ教えてください

    下のようにSheet1に罫線を引く「開始セル(左右端)」「行」「列」が書いてあります。 この条件で罫線をSheet2に引くようにしたいのですが、変数の設定の仕方などが分かっていないようで、できません。教えていただけないでしょうか。マクロの記録をとったところ、下のようになりました。よろしくお願いします。 開始セル Sheet2!A1・・・Sheet1のB1セル 行 8・・・Sheet1のB2セル 列 2・・・Sheet1のB3セル Sub borders() Range("A1:B8").Select Selection.borders(xlDiagonalDown).LineStyle = xlNone Selection.borders(xlDiagonalUp).LineStyle = xlNone With Selection.borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End Sub

  • エクセルVBA 作動させる度に罫線の種類を変える

    エクセル(2007) VBAで、マクロを作動させる度に選択した範囲の 罫線を変更したく、下記のようなマクロを組みましたが1種類の線しか書けません。。。 どのように修正すればよいか教えて頂きたいです。 何卒宜しくお願い致します。 ----------------------------------- Sub 罫線チェンジ() Select Case ActiveCell.Borders.LineStyle Case xlContinuous Selection.Borders.LineStyle = xlHairline Case xlHairline Selection.Borders.LineStyle = xlDot Case xlDot Selection.Borders.LineStyle = xlDouble Case xlDouble Selection.Borders.LineStyle = xlNone Case Else Selection.Borders.LineStyle = xlContinuous End Select End Sub -----------------------------------

  • 列の簡素化

    よろしくお願いします。 A列からG列の指定範囲に罫線を引きたいのですが 下の構文を簡素化できないでしょうか Dim rCnt As Long rCnt = Range("A" & Application.Rows.Count).End(xlUp).Row For t = 2 To 3 Range("A" & rCnt + t).Borders(xlEdgeBottom).LineStyle = xlNone Range("B" & rCnt + t).Borders(xlEdgeBottom).LineStyle = xlNone Range("C" & rCnt + t).Borders(xlEdgeBottom).LineStyle = xlNone Range("D" & rCnt + t).Borders(xlEdgeBottom).LineStyle = xlNone Range("E" & rCnt + t).Borders(xlEdgeBottom).LineStyle = xlNone Range("F" & rCnt + t).Borders(xlEdgeBottom).LineStyle = xlNone Range("G" & rCnt + t).Borders(xlEdgeBottom).LineStyle = xlNone Range("A" & rCnt + t).Borders.LineStyle = True Range("B" & rCnt + t).Borders.LineStyle = True Range("C" & rCnt + t).Borders.LineStyle = True Range("D" & rCnt + t).Borders.LineStyle = True Range("E" & rCnt + t).Borders.LineStyle = True Range("F" & rCnt + t).Borders.LineStyle = True Range("G" & rCnt + t).Borders.LineStyle = True Next t

  • エクセルVBA 動作させる度に異なる種類の線を書く

    エクセル(2007)VBAを使って、マクロを動作させる度に線の種類を変更させたいです。 (1)実線⇒(2)細い実線⇒(3)細線⇒(4)点線⇒(5)線なし   以前質問させて頂き、下記のようにマクロを記載したのですが、(2)⇒(3)へ 動作しません。。。実線と細い実線の定数が同じく「 1 」な事が問題なのかと 思うのですが、何か上手く実行できる方法はありませんでしょうか。。。 何卒宜しくお願い致します。 -------------------------------------------------- Sub 罫線チェンジ() Select Case ActiveCell.Borders.LineStyle Case 1 Selection.Borders.LineStyle = xlContinuous Selection.Borders.Weight = xlHairline Case 1 Selection.Borders.LineStyle = xlThin Case 2 Selection.Borders.LineStyle = xlDash Case -4115 Selection.Borders.LineStyle = xlDot Case -4118 Selection.Borders.LineStyle = xlNone Case Else Selection.Borders.LineStyle = xlContinuous End Select End Sub --------------------------------------------------

専門家に質問してみよう