
昨日教えて頂いたコードですが、私以外の人が使用することを考えると、日付けがあった方が分かりやすいと思いましたので、次の様に出来ないかと思います。私にはまだ、そこまでの実力はないので分かりません。宜しくお願い致します。
バラシシートと短冊シートがありますが、バラシシートのA列に日付けが入っています、バラシシートのS列データーが空欄の時に1ロットが終了で短冊シートのボックスを1つ飛ばして次ロットに行きますが、その時にバラシシートA列の日付けを短冊シートの始まるボックスの右下に(図の赤字の日付け505,506,507)といったようにしたいのですが、宜しくお願い致します。なお、図のバラシシートと短冊シートのデーターの中身はちがいます、こんな感じにとなっていますので、一致はしていません。
https://gyazo.com/1b1a6838142f5701e58680a1eaa043fe
Option Explicit
Dim sh1 As Worksheet 'バラシシート
Dim sh2 As Worksheet '短冊シート
Public Sub 短冊シート設定5()
Dim maxrow1 As Long
Dim maxrow2 As Long
Dim max_box As Long
Dim i As Long
Dim wrow As Long
Dim boxNo As Long
Dim seqNo As Long
Dim box_row As Long
Dim box_col As Long
Dim pv As String
Dim y As Long
Set sh1 = Worksheets("バラシ")
Set sh2 = Worksheets("短冊")
maxrow1 = sh1.Cells(Rows.Count, "S").End(xlUp).Row 'S列の最大行取得
If maxrow1 < 2 Then Exit Sub
maxrow2 = sh2.Cells(Rows.Count, "A").End(xlUp).Row 'A列の最大行取得
If (maxrow2 + 1) Mod 7 <> 0 Then
MsgBox ("マス番号の行が不正")
Exit Sub
End If
max_box = ((maxrow2 + 1) \ 7) * 3
'短冊シートのマスをクリア
For i = 1 To max_box
Call clear_box(i)
Next
'バラシシートを処理
boxNo = 1
seqNo = 0
pv = ""
For wrow = 2 To maxrow1
If sh1.Cells(wrow, "S").Value = "" Then
If seqNo > 0 Then
boxNo = boxNo + 2
seqNo = 0
pv = ""
End If
Else
seqNo = seqNo + 1
If (seqNo Mod 4) <> 1 And pv <> sh1.Cells(wrow, "S").Value Then
y = (seqNo - 1) \ 4
seqNo = (y + 1) * 4 + 1
End If
If seqNo > 24 Then
boxNo = boxNo + 1
seqNo = 1
End If
'マス番号とマス内番号に対応する位置を取得
Call get_pos_in_box(boxNo, seqNo, box_row, box_col)
'該当位置へS列データを設定
sh2.Cells(box_row, box_col).Value = sh1.Cells(wrow, "S").Value
sh2.Cells(box_row, box_col).Interior.Color = sh1.Cells(wrow, "S").Interior.Color
pv = sh1.Cells(wrow, "S").Value
End If
Next
MsgBox ("完了")
End Sub
'指定マスクリア
Private Sub clear_box(ByVal box_no As Long)
Dim box_row As Long
Dim box_col As Long
Dim i As Long
For i = 1 To 24
Call get_pos_in_box(box_no, i, box_row, box_col)
sh2.Cells(box_row, box_col).ClearContents
sh2.Cells(box_row, box_col).Interior.Pattern = xlNone
Next
End Sub
'指定マス内の指定位置取得
Private Sub get_pos_in_box(ByVal box_no As Long, ByVal seq_no As Long, ByRef box_row As Long, ByRef box_col As Long)
Dim x1 As Long
Dim x2 As Long
Dim y1 As Long
Dim y2 As Long
y1 = (box_no - 1) \ 3
y2 = 5 - ((seq_no - 1) \ 4)
box_row = y1 * 7 + 1 + y2
x1 = (box_no - 1) Mod 3
x2 = 3 - ((seq_no - 1) Mod 4)
box_col = x1 * 5 + 2 + x2
End Sub
tatsu....様、昨日はありがとうございました。段数変更して試しました。うまく動作出来ました。
No.2ベストアンサー
- 回答日時:
No.1
- 回答日時:
tatsumaru77です。
補足要求です。1.枠内のデータは右下から左上に順に処理するということで間違いないでしょうか。
2.バラシシートのA列の日付は、0506になっていますが、
短冊シートの日付は506になっています。(先頭の0がとれています)
506で間違いないですか。それとも、0506が正しいのでしょうか。
3.短冊シートの日付は、赤色の文字になっていますが、
マクロで設定する際も、赤色の文字にしたいということでしょうか。
それとも、説明上、赤色の文字にしただけで、マクロで設定するのは、黒字で良いのでしょうか。
いつもお世話になっております。
1.右下から左上であってます。
2.出来れば0506がいいのですが
3.赤字のが分かりやすいので赤字がいいのですが
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】全シートのセルの...
-
別のシートから値を取得するとき
-
ブック名、シート名を他のモジ...
-
エクセル・マクロ シートの非...
-
マイコンRX62N イーサネット通...
-
EXCEL プログラム マクロ VBA...
-
ユーザーフォームに入力したデ...
-
VBA 存在しないシートを選...
-
エクセルVBA Ifでシート名が合...
-
エクセルのシート名変更で重複...
-
実行時エラー1004「Select メソ...
-
Constステートメントの使い方
-
XL:BeforeDoubleClickが動かない
-
エクセルVBAでのシート名変更の...
-
【VBA】全ての複数シートから指...
-
【ご質問】Excel2003のVBA作成...
-
ExcelVBA シート名を複数セルか...
-
ドット絵への変換について
-
VBAで、シート間の転記するコー...
-
指定したシートを営業日分複製...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
別のシートから値を取得するとき
-
VBAで指定シート以外の選択
-
実行時エラー'1004': WorkSheet...
-
実行時エラー1004「Select メソ...
-
シートが保護されている状態で...
-
IFステートの中にWithステート...
-
VBA 検索して一致したセル...
-
ブック名、シート名を他のモジ...
-
Worksheet_Changeの内容を標準...
-
XL:BeforeDoubleClickが動かない
-
VBA 存在しないシートを選...
-
Excel VBA リンク先をシート...
-
userFormに貼り付けたLabelを変...
-
ExcelVBA シート名を複数セルか...
-
【Excel VBA】Worksheets().Act...
おすすめ情報