dポイントプレゼントキャンペーン実施中!

前に教えてもらったマクロ何ですが、

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim rSrc As Range
Dim rDst As Range
Dim r As Range

' // マスタ範囲定義
Set rSrc = Me.Range("V4:AO28")
' // 転記先範囲定義
Set rDst = Me.Range("AQ5:AT5,AQ6:AT6")

' // Dblクリックされたセルがマスタの範囲か?
If Not Intersect(Target, rSrc) Is Nothing Then
' // 転記先が既に埋まってないか?
If Application.CountA(rDst) = rDst.Cells.Count Then
' // 埋まっている場合
MsgBox "もう書けないっぽい", vbInformation
Else
' // (1)とりあえず転記先範囲の先頭セルを転記先に仮設定
Set r = rDst.Cells(1)
' // (2)その他空きセルを探す(空きセルのうち最初のセル)
' // 見つからない場合は、(1)が採用される
On Error Resume Next
Set r = rDst.SpecialCells(xlCellTypeBlanks).Cells(1)
On Error GoTo 0
' // 転記実行
r.Value = Target.Value
End If
' // Dblクリックで編集モードになるのをキャンセル
Cancel = True
End If
' // 後始末
Set rSrc = Nothing
Set rDst = Nothing
End Sub

この質問をして



複数の範囲を指定したい場合、
マスタ範囲定義 Set rSrc = Me.Range("V4:AO28")の所を
1 B4:AB22
2 B27:AB45
3 B50:AB68
4 B73:AB91
5 B96:AB114
6 B119:AB137
7 B142:AB160
8 B165:AB183
9 B188:AB206
10 B211:AB229
11 B234:AB252
12 B257:AB275
転記先範囲定義Set rDst = Me.Range("AQ5:AT5,AQ6:AT6")の所を
1 AE5:AH5、AE6:AH6
2 AE28:AH28、AE29:AH29
3 AE52:AH52、AE53:AH53
4 AE75:AH75、AE76:AH76
5 AE98:AH98、AE99:AH99
6 AE121:AH121、AE122:AH122
7 AE144:AH144、AE145:AH145
8 AE167:AH167、AE168:AH168
9 AE190:AH190、AE191:AH191
10 AE213:AH213、AE214:AH214
11 AE236:AH236、AE237:AH237
12 AE259:AH259、AE260:AH260
と複数設定(12個)したい場合どう直せばいいでしょうか?

▼このマクロを教えてもらったのですが、

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim rng As Range
Dim vC As Variant, v As Variant
Dim k As Long

vC = Array( _
Array("B4:AB22", "AE5:AH6"), Array("B27:AB45", "AE28:AH29"), _
Array("B50:AB68", "AE52:AH53"), Array("B73:AB91", "AE75:AH76") _
)
k = LBound(vC)

If (Target.Value = "") Then Exit Sub
For Each v In vC
If (Not Intersect(Target, Range(v(k))) Is Nothing) Then Exit For
Next
If (IsArray(v)) Then
On Error Resume Next
With Range(v(k + 1))
.Value = .Value
Set rng = .SpecialCells(xlCellTypeBlanks)(1)
End With
On Error GoTo 0
If (rng Is Nothing) Then
MsgBox "もう書けない", vbInformation
Else
rng.Value = Target.Value
Cancel = True
End If
End If
End Sub

今度は
C列のC5をクリックしたらC5の値が→AE5
D5の値が→ AJ5
R5の値が→AO5
T5の値が→AT5
V5の値が→AY5
Vの値が→BD5
表示するのは4個までAE5:AH5 AJ5:AM5、AO5:AR5、AT5:AW5、AY5:BB5、BD5:BG5と
それぞれ一括転記するマクロを教えてほしいです。

後 C列のC5をクリックしたらC5の値が→AE5(これはAE5:AH5だけ)
D5の値が→ AE6
R5の値が→AE7
T5の値が→AE8
V5の値が→AE9
Vの値が→AE10
と下に表示するマクロを教えてほしいです。
表が12個あり1から12までの表に同じ事が出来るマクロです。
1 B4:AB22
2 B27:AB45
3 B50:AB68
4 B73:AB91
5 B96:AB114
6 B119:AB137
7 B142:AB160
8 B165:AB183
9 B188:AB206
10 B211:AB229
11 B234:AB252
12 B257:AB275

A 回答 (2件)

こんにちは



質問内容をきちんと把握していませんが、ざっと見る限り、セル位置を変えるだけの質問内容のように見受けられます。

>と複数設定(12個)したい場合どう直せばいいでしょうか?
セル位置を変えたものを複数作成して、全部実行させれば良いだけではないでしょうか。
コードは長くなるけれど、内容が同じならちゃんと動作するはずです。


No1様もおっしゃってますが、何かあるごとに『作って!』と言って、ただ待っているだけでは、目的の作業をいつ完成できるかの目途もたたないどころか、できるのかどういかさえわからないというあやふやな状態にいつもあるということを意味することになりますよ。
    • good
    • 0
この回答へのお礼

はい すいません。

お礼日時:2019/04/26 10:43

(´・ω・`)


全部他人任せ?

理解できていないならそのまま使うしかないよ。
作業依頼はここでは禁止されています。

以前答えてくださった人は、サンプルとしてマクロのコードを示し理解を促したのでしょう。
それを理解できないということは答えてくださった人にとても失礼なことをしているわけです。

・・・本題・・・

そのコードの中の何が分かりませんか?
具体的に何が分からなくて修正できないのかを示してください。
まったく分からないというのであれば、
 ・素直に「分かりません。自力では解決できません」と謝罪しながら提出する。
 ・別の方法を考える。
ということになります。

・・・余談・・・

自力で目の前にある問題を処理できるようになることが「疑問の解決」です。
他の人に代わりにやってもらうことは「疑問の先送り」にしかなりません。
ここはQ&Aサイトであるということを忘れないようにしましょう。

ごめんよ。
こんな質問してると、ほんとマジで自分のためにならないから。
「根本的に解決できるようになるか」「諦めるか」を早いうちに決めないと面倒なことになるよ。
    • good
    • 3
この回答へのお礼

はい。

お礼日時:2019/04/26 10:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!