ネットや本でマクロを作成しているいて、あまりマクロの意味も分からず作成しています。
下記のマクロの記述を繰り返しマクロで記述したいので、御指導願います。(H列で終わっていますが、できれば隣のセルが空白になるまで繰り返すようにしたい。)
あと、自分の欲しい内容に修正出来るように、記述の意味などもコメントして頂けたら嬉しいのですが・・・。よろしくお願いします。
Sub 最終履歴を表示する(2)()
Range("C4").NumberFormatLocal = "G/標準"
Range("C4").Value = Application.WorksheetFunction.Max(Range("C6:C10000"))
Range("C4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole
Range("C4").NumberFormatLocal = "yyyy/m/d;@"
Range("D4").NumberFormatLocal = "G/標準"
Range("D4").Value = Application.WorksheetFunction.Max(Range("D6:D10000"))
Range("D4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole
Range("D4").NumberFormatLocal = "yyyy/m/d;@"
Range("E4").NumberFormatLocal = "G/標準"
Range("E4").Value = Application.WorksheetFunction.Max(Range("E6:E10000"))
Range("E4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole
Range("E4").NumberFormatLocal = "yyyy/m/d;@"
Range("F4").NumberFormatLocal = "G/標準"
Range("F4").Value = Application.WorksheetFunction.Max(Range("F6:F10000"))
Range("F4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole
Range("F4").NumberFormatLocal = "yyyy/m/d;@"
Range("G4").NumberFormatLocal = "G/標準"
Range("G4").Value = Application.WorksheetFunction.Max(Range("G6:G10000"))
Range("G4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole
Range("G4").NumberFormatLocal = "yyyy/m/d;@"
Range("H4").NumberFormatLocal = "G/標準"
Range("H4").Value = Application.WorksheetFunction.Max(Range("H6:H10000"))
Range("H4").Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole
Range("H4").NumberFormatLocal = "yyyy/m/d;@"
End Sub
No.1ベストアンサー
- 回答日時:
各データの詳細がわかりませんので、とりあえずご質問の中で記述されたままの処理を繰り返します。
----------
Sub 最終履歴を表示する()
Dim c as Integer '列番号をcという名前の数字変数として定義します。
c = 3 'C列(先頭から3番目の列)から始まるので最初は3
'以下、Do~Loopで、6行目のセル(C6,D6,E6,…)が空白でない限り列の処理を繰り返します。
Do While Cells(6, c).Value <> ""
With Cells(4, c) '4行目のセル(C4,D4,E4,…)に関して以下のように設定します。
.NumberFormatLocal = "G/標準"
.Value = Application.WorksheetFunction.Max(Range(Cells(6, c), Cells(10000, c)))
.Replace What:="0", Replacement:="履歴無し", LookAt:=xlWhole
.NumberFormatLocal = "yyyy/m/d;@"
End With '4行目のセルに関する記述を終了します。
c = c + 1 '次の列を処理するため列番号を1つ加算します。
Loop
End Sub
この質問の為に貴重な時間を割いて頂き、ありがとうございました。
詳しく説明されていたので、ちょっとした修正もすぐにできました。
役に立ちそうな事例と思うので、本当に嬉しいです。
No.3
- 回答日時:
こんばんは。
>連続したデータとはどんなものでしょうか?
空の列・行のない四角形のデータです。つまり、CurrentRegion で囲まれる範囲
ActiveSheet.Range("C6").CurrentRegion.Select で選択できる範囲。
>j = .Range("C6").CurrentRegion.Columns.Count - 1
四角形のデータの左上端をC6とした場合のCurrentRegion の列の数を数えて、
その列数から、-1 を引く。つまり、その左端の列を、0として、その列の右端までの数。
と書いても、簡単には納得できないと思います。
1つの行だけを、それぞれ試してみると良いです。
VBA入門当初だったら、私も理解できなかったと思います。
No.2
- 回答日時:
こんにちは。
前回の延長です。
こちらからは、解説はしません。分からない所があれば聞いてください。
連続したデータに、数式を入れる場合は、ループは必要ありません。
VBAのコーディングは、記録マクロとは違う種類のものです。
'//
Sub Test_LatestDatePickup()
Dim j As Long
With ActiveSheet
j = .Range("C6").CurrentRegion.Columns.Count - 1
With .Range("C4", .Cells(4, 3 + j))
.Formula = "=IF(MAX(R[2]C:R[9996]C)=0,""履歴無し"",MAX(R[2]C:R[9996]C))"
.Value = .Value
.NumberFormatLocal = "yyyy/m/d"
End With
End With
End Sub
回答ありがとうございました。
連続したデータとはどんなものでしょうか?
列単位?行単位?それとも両方?途中で空白があってもOK?
理解力なくてすみません。
Dim j As Long
← どんな意味でしょうか?
j = .Range("C6").CurrentRegion.Columns.Count - 1
←どんな意味でしょうか?
御指導よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel vba で1と10を正確に判断させる方法を教えてください。 TからU列に1と入力があれば 3 2022/12/26 16:54
- Excel(エクセル) マクロで特定日より1日前の日を求めたい 6 2022/05/08 09:23
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VBA エラーコード1004について
-
エクセルでセル12個間隔で合...
-
「段」と「行」の違いがよくわ...
-
エクセルマクロでオートフィル...
-
エクセルマクロの組み方
-
VBA 配列について
-
VBAで結合セルを転記する法を教...
-
エクセルで住所を県と市・郡と...
-
EXCEL VBA 文字列から電話番号...
-
【エクセルVBA】任意の画像フォ...
-
エクセルのソートで、数字より...
-
最終行に合計(最終行が列によ...
-
VBA指定行削除
-
[EXCEL]ボタン押す→時刻が表に...
-
特定の色のついたセルを削除
-
あああ..ああい..ああう とい...
-
Excel UserForm の表示位置
-
Excelで数字を入れたら対応する...
-
エクセルで複数のシートのクリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
エクセルで住所を県と市・郡と...
-
Excelの行数、列数を増やしたい...
-
エクセルで複数列の検索をマク...
-
エクセルマクロの組み方
-
Alt+Shift+↑を一括で行うには、...
-
えABのある列って
-
エクセルのソートで、数字より...
-
エクセル マクロ 範囲指定で...
-
VBAで結合セルを転記する法を教...
-
VBAで別ブックの列を検索し、該...
-
エクセルマクロPrivate Subを複...
-
リストからデータを紐付けしたい
-
列方向、行方向の定義
-
Accessのレポートで繰り返し表...
おすすめ情報