シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。
テストで作った下記マクロで、「ブロック」の前のセルを「ブロック」の後へ移すところまではできたのですが、
①「出」の条件と
②入れ替える「休」の条件、
③検索する範囲の指定
が解らずできません。
どのように指定したら良いか教えてください。
(実行例)
Range("C5")の「出」は「ブロック」の前にあるのでRange("C9")の「休」と入れ替える。
Sub test()
Dim fnd As Range
Dim key As String
Dim v As Variant
key = "ブロック"
Set fnd = Range("C:C").Find(key, LookAt:=xlWhole)
If fnd Is Nothing Then Exit Sub
v = fnd.Offset(-1).Value
fnd.Offset(-1).Value = fnd.Offset(1).Value
fnd.Offset(1).Value = v
End Sub
No.2ベストアンサー
- 回答日時:
1例です。
1.3行から13行まで、下記を繰り返します。
①ブロック出現なしの状態で出が出現したら、その行を記憶
②ブロックが出現したら、そのことを記憶(ブロック出現有とする)
③ブロック出現有の状態で休が出現したら、その行を記憶(但し1回限り)
2.出の行、休の行が共に記憶されているなら、入れ替えを行う
Public Sub 出休()
Dim ws As Worksheet '対象シート(アクティブシート)
Dim wrow As Long '作業行
Dim wcol As Long '作業列
Dim 出_row As Long '交換用出の行
Dim 休_row As Long '交換用休の行
Dim Block As Boolean 'ブロック出現の有無
Dim temp As String '一時保管
Dim sval As String 'セルの値
Set ws = ActiveSheet
wcol = 3 '作業列を3列に設定
出_row = 0
休_row = 0
Block = False
For wrow = 3 To 13
sval = ws.Cells(wrow, wcol).Value
If sval = "ブロック" Then
Block = True
End If
If sval = "出" And Block = False Then
出_row = wrow
End If
If 休_row = 0 And sval = "休" And Block = True Then
休_row = wrow
End If
Next
If 出_row > 0 And 休_row > 0 Then
temp = ws.Cells(出_row, wcol).Value
ws.Cells(出_row, wcol).Value = ws.Cells(休_row, wcol).Value
ws.Cells(休_row, wcol).Value = temp
End If
End Sub
No.1
- 回答日時:
まず。
>「出」を同一列の「休」と入れ替えたいがふぇきません。
入れ替える条件が不明。以前の質問の続きだから省いているのでしょうけど、自作自演と疑われる可能性があるので避けた方が宜しいかと。
過去質のリンクを貼る等で対応可能では?
プロフィールでは非公開ですし、過去にさかのぼって探すのは大変。
既出の質問の回答者向けに質問しているのなら上記を危惧されそう。
知恵袋でも回答者の指名は辞めたぐらいですし。
・実行例が少なすぎる。
上記と合わせるとどう言う条件でどうしたいのかが不明。
特に「ブロック」と「出」の位置関係が過去の質問と相違するのならば、それらについて詳しく記載するか画像にて解説が必要かなと。
>Range("C5")の~
とするのなら列の表示はアルファベットの方が親切かも?
Sub test2()
Dim fnd1 As Range, fnd2 As Range
Dim key1 As String, key2 As String
Dim v As Variant
key1 = "ブロック"
key2 = "休"
Set fnd1 = Range("C:C").Find(key1, LookAt:=xlWhole)
Set fnd2 = Range("C:C").Find(key2, LookAt:=xlWhole)
If fnd1.Offset(-1) = "出" Then
If fnd1 Is Nothing Then Exit Sub
v = fnd1.Offset(-1).Value
fnd1.Offset(-1).Value = fnd2
fnd2.Value = v
End If
End Sub
①②までできました!
あとは③検索範囲ですが誰も教えていただけないようなのでがんばります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マンション10階から飛び降りた...
-
LINE相手が勝手にブロックされ...
-
インスタの裏垢をブロックされ...
-
「ブロックしてほしい」と頼む...
-
Instagramの同じ端末のブロック...
-
LINEって、スマホ故障したら 勝...
-
5ch のエロ広告を見えないよう...
-
Instagramで私をブロックしてき...
-
いちいちブロックするねーって...
-
都合悪くなるとブロック????
-
自分に原因があり、嫌われ修復...
-
SNSのブロックにブチギレ
-
ブロックしたユーザー名の人が...
-
以前の職場の同期だった女の子...
-
ブロックされて怒り狂う人がい...
-
ブロックして言い逃げしてくる...
-
喧嘩 同性 30上
-
最近質問者からブロックされる...
-
元彼からの嫌がらせ?
-
snsでのブロックされたら
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マンション10階から飛び降りた...
-
インスタの裏垢をブロックされ...
-
LINE相手が勝手にブロックされ...
-
Instagramの同じ端末のブロック...
-
5ch のエロ広告を見えないよう...
-
ブロックしたユーザー名の人が...
-
「ブロックしてほしい」と頼む...
-
インスタブロックしてた子が ブ...
-
教えてgooって、なんで質問した...
-
LINEって、スマホ故障したら 勝...
-
また始まった週明けの異常削除
-
相手のインスタのアカウントを...
-
インスタで裏垢から話しかけた...
-
自分に原因があり、嫌われ修復...
-
あるユーザーをブロックすると...
-
教えて!goo以外も、他の質問サ...
-
インスタで同じ学校の人に本垢...
-
質問に対する悪口や、見下した...
-
自分はこのサイトで通報した記...
-
女性の方に質問です! 物凄く嫌...
おすすめ情報