• ベストアンサー

vba 指定した日付範囲でセルの色を塗る

fumufumu_2006の回答

回答No.3

ANo.2に間違いがありました。 誤:このC1を、C2:AG1(AGは最大31日なので)にコピーします。 正:このC1を、D1:AG1(AGは最大31日なので)にコピーします。 誤:で、1日以外は日だけなのでC2:AG1を選択して 正:で、1日以外は日だけなのでD1:AG1を選択して

nicostars
質問者

お礼

返事が遅くなって申し訳ないです。 参考になりました。ありがとうございます。

関連するQ&A

  • VBA 選択された離れたセルの値の取得について

    EXCELのVBAでどうしても前に進めず困っております。 目的としているコードは、離れたセル(複数)をあらかじめCtrlキーで選択状態にしておき、選択されたセルの値のみをVBAが別のセルに並べていくというものです。 以下が私の作ったコードなのですが、思ったとおりの動作をしてくれません。 VBA初心者なもので、おかしな記述がたくさんあると思うのですが、どなたかアドバイスお願いします。 Public Sub xx() Dim SelectArea As String Dim TargetCell As Range Dim a As Integer Dim Row As Integer Dim Column As Integer Dim CNT1 As Integer a = 0 Row = 0 Column = 0 For CNT1 = 1 To 10 Row = Row + 1 SelectArea = Selection.Address Set TargetCell = Range("B3").Cells(Row - 1, Column) If Intersect(Range(SelectArea), TargetCell) Is Nothing Then Else Range("A30").Cells(a, 0) = Range("B3").Cells(Row - 1, Column).Value a = a + 1 End If Next End Sub

  • 【VBA】範囲選択し降順で並び替え

    A列の最初の行から、F列の最終行迄を範囲選択し、C列降順で並べ替えをしたいです。最終行は、C列の最終行を指定します。 下記、「Rangeから始まる行」でエラーとなる為、ご教示宜しくお願いします。 Sub 使用頻度で並べ替え() Dim FastRow As Integer Dim LastRow As Integer FastRow = Cells(1, 1).End(xlDown).Row LastRow = Range("C" & Rows.Count).End(xlUp).Row Range("A & FastRow:F" & LastRow).Sort Columns("C"), xlDescending, Header:=xlNo End Sub

  • CountBlankの範囲指定について

    VBA勉強中の者です 変数にて指定した範囲の空白セルをカウントする為に、以下のコードを作成しました。 Sub test() Dim rng As Range Set rng = Range(Cells(1, 1), Cells(1, 10)) Dim CntBnk As Long '-------↓以下が認識されないコード-------------- CntBnk = WorksheetFunction.CountBlank(ActiveSheet.Range(rng)) '--------------------------------------------------- MsgBox (CntBnk) End Sub CountBlankの範囲指定の方法が間違っていると思われます。 簡単に CntBrk = rng.CountBlank と入力するなどしてみましたが、やはりダメでした。 自分なりに調べつつ改善してみたものの解決に至らず、どなたかご助力お願い致します。

  • VBA resizeの使い方

    以下のコードで外部から取得したセル範囲rangeAをresizeを使って 変更しようとしていますが,できません. どこが間違っているのでしょうか. よろしくご教示ください. Sub No1autofill(A As String, b As Integer) Dim rangeA As Range, rangeC As Range Dim rowA As Integer, columnA As Integer, rowsC As Integer Set rangeA = Range(A) rowA = rangeA.Row columnA = rangeA.Column rowsC = b - rowA Set rangeC = rangeA.Resize(rowsC + 1, columnA)

  • Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はあり

    Excelのセルの色指定をVBAから配列を用いて効率的に行う方法はありませんか? 例えば、セルに値を代入場合であれば、 Sub test() Dim arr(2, 2) As Integer Dim rg As Range Set rg = Worksheets(1).Range("A1:B2") arr(0, 0) = 1 arr(0, 1) = 0 arr(1, 0) = 0 arr(1, 1) = 1 rg.Value = arr  '<- これと同じように End Sub というように、セルへの値代入を配列を用いて、プロパティ呼出し1回で済ませることが出来ますよね。。 で、セルの色の場合も、同じように、 Sub test2() Dim arr(2, 2) As Long Dim rg As Range Set rg = Worksheets(1).Range("A1:B2") arr(0, 0) = RGB(0, 0, 0) arr(0, 1) = RGB(0, 255, 0) arr(1, 0) = RGB(0, 0, 255) arr(1, 1) = RGB(255, 0, 0) rg.Interior.Color = arr ' <- これをやりたい End Sub など、と書きたいのですが、最後の rg.Interior.Color = arr の所でエラー(型が一致しません)が出ます。 (全セレクトエリアが同カラーで指定だと、 rg.Interior.Color =RGB(0,0,0) などと出来るのですが。。。) オブジェクトの下のプロパティのプロパティを配列で 指定するうまい方法はありませんか? セル毎にループで回すと、Excelサイドが重いので、 時間を要してしますので困っています。 分かる方、是非よろしくお願い致します。

  • エクセルのセル高調整で指定したセルから下を調整

    エクセルのセル高調整で指定したセルから下を調整したいのですが。エクセルVBAで下記の方法でやるとすべてのセルがFITします。やりたいことは、3行目以降のセル全体をFITさせたいのです。 どこを追記したら良いか教えて下さい。 Sub セル高調整() 'Sheets("すべて")のセルの高さの調整 Dim lrow As Integer Dim km As Long Application.ScreenUpdating = False '画面の更新を停止 ActiveSheet.Select Range("b3").CurrentRegion.Select Selection.Rows.AutoFit lrow = Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row + 1 For km = 1 To lrow Rows(km).RowHeight = Rows(km).RowHeight + 10 Range("a3").Select Next km End Sub

  • エクセルVBAのFindの不具合

    入力シートの4~2000行にデータをフォームを使って入力し、そのフォームを閉じる際に集計シートで集計する家計簿を作ってます。集計シートでは、食費・交際費などのコードがB5:B22に入っており、それぞれの合計をC5:C22に表示させたいのです。SUMIFを使えば楽なのですが、勉強のために極力VBAで処理させます。 フォームを閉じた際のソース(抜粋)は以下の通りです。 -------------------------------- Private Sub CommandButton2_Click() Dim i As Integer Dim コード As Integer Dim 金額 As Long Dim 集計行 As Integer Dim コード範囲 As Range Unload Me Set コード範囲 = Worksheets("集計").Range("b5, b22") For i = 4 To 2000 コード = Cells(i, 3).Value 金額 = Cells(i, 5).Value 集計行 = コード範囲.Find(コード).Row Next i End Sub -------------------------------- For~Nextの中はもっと処理を追加しなければならないのですが、とりあえず現段階で、   実行時エラー91(オブジェクト変数またはWithブロックが設定されていません) が   集計行 = コード範囲.Find(コード).Row の行で発生します。行番号だけを取得しようとしているので、Findの行だけを整数型変数に代入したいのですが・・・ 間違っている点をお教え下さい。 ご面倒でなければ、 Application.WorksheetFunctionに置き換える方法も教えていただければ幸いです。 よろしくお願いします。

  • VBA)範囲指定した全セルに関数を入れたいのですが。。。

    当方、始めてのマクロ作成に奮闘中の身です。 ご教授いただきたく、質問させていただきます。 ◎質問 範囲指定した全セルに関数を入力したいのですが、アクティブセルのみにしか関数が入らず困っています。    Dim abc As Integer       abc = Sheets("シート名").Range("A1").CurrentRegion.Rows.Count    Range(Cells(2, 12), Cells(abc, 12)).Select    ActiveCell.FormulaR1C1 = "=COUNTIF(R1C1:RC[-11],RC[-11])" 一番下の部分の関数を入力したいのですが、アクティブセルのみの入力になってしまい、下から2番目の指定範囲には反映されません。 下から2番目の指定範囲セル全てに適用するにはどうしたら良いでしょうか。 よろしくお願いいたします。

  • セルが何行なのかをVBAで取得したい

    セルが何行なのかをVBAで取得したいのですが どういうコードにすればいいですか? 例えば、A1セルに a b c と入ってる場合、3行ですが それをVBAで取得するにはどうすればいいですか? Sub test() Dim r As Range Set r = Cells(1, 1) If r.Value Like "*" & Chr(10) & "*" Then MsgBox "改行があります" End If End Sub というコードで改行が有ることは取得できたのですが 何行かまでは取得する方法がわかりません。

  • エクセルVBAについてお尋ねいたします。以前、列の検索範囲から指定列中

    エクセルVBAについてお尋ねいたします。以前、列の検索範囲から指定列中の空欄セルが存在した際にその空欄を含む行の削除を実行するマクロを組んだのですが、削除する行の範囲も指定するマクロに組み替えたく望んでおります。 <参照> Private Sub CommandButton1_Click() Dim minRow As Integer Dim maxRow As Integer Dim checkColIndex As Integer ' 初期値1(開始行の値) minRow = 1 ' 初期値2(終了行の値) maxRow = 10 ' 検索列の値(1=A列、2=B列、3=C列...) checkColIndex = 1 Application.ScreenUpdating = False ' 空欄が存在する行の削除処理 For i = maxRow To minRow Step by - 1 ' 指定セルが空欄の場合、その行を削除 If (Len(ActiveSheet.Cells(i, checkColIndex).Value) = 0) Then ActiveSheet.Rows(i).Delete End If Next Application.ScreenUpdating = True End Sub 上記のコマンドを例にすると、 1行目から10行目までのA列に存在する空欄を検索し、空欄が存在したら範囲中の最下(10行目)よりセルを含む行ごと削除・・・ となりますが、この中に <例> ’削除を行う範囲(1=A列、2=B列、3=C列...) ' 開始列値 *** ' 終了列値 *** '範囲内の行を削除 *** など、検索範囲が変わった際にも対応が可能で削除範囲が指定出来るコマンドに変更したく望みます。 宜しくお願い致します。