Gizport
1 回答
0
Share (facebook)
92
view
全般

以前、Excelに関して質問させていただいたものです。ベストアンサー...

以前、Excelに関して質問させていただいたものです。ベストアンサー期限が切れてしまい、コメントできませんでしたがご回答頂いた方ありがとうございました。 ・shee2のD6〜D36日には日付が入力されています。(1〜31)数字のみ固定
・Worksheets("入力データ2").のB7~J7、B12~F12データ(数字)が入力されている。
マクロを実行すると、
Worksheets("入力データ").のM2に本日の日付のみを値のみ貼り付けします。
M2の値を読み、shee2のD6〜D36中から同じ値の列に
Offset(, 2)にWorksheets("入力データ2").のB7を
Offset(, 1)にWorksheets("入力データ2").のC7を
Offset(, 5)にWorksheets("入力データ2").のE12を値のみ貼り付けを行いたいです。


みなさんのを参考に作っては見たもののかなり長い行になってしまいました。(汗)
しかもcpyRnge15~19を飛ばしてマクロを実行します。(エラーメッセージ無し)
スペル間違い等は何度も見ましたがありませんし、cpyRnge18以降はしっかり実行している。(オフセットがずれているが。)
何か実行しない条件はありますか?

また、効率の良いマクロがあればご教授下さい。

Sub ()
'
' Macro1
'

'日付をコピー→値のみ貼り付けする
Worksheets("入力データ").Range("L2").Select
Selection.Copy
Range("M2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


Dim tgtDate As String '日付文字
Dim cpyRnge1 As Range 'コピー範囲1
Dim cpyRnge2 As Range 'コピー範囲2
Dim cpyRnge3 As Range 'コピー範囲3
Dim cpyRnge4 As Range 'コピー範囲4
Dim cpyRnge5 As Range 'コピー範囲5
Dim cpyRnge6 As Range 'コピー範囲6
Dim cpyRnge7 As Range 'コピー範囲7
Dim cpyRnge8 As Range 'コピー範囲8
Dim cpyRnge9 As Range 'コピー範囲9
Dim cpyRnge10 As Range 'コピー範囲10
Dim cpyRnge11 As Range 'コピー範囲11
Dim cpyRnge12 As Range 'コピー範囲12
Dim cpyRnge13 As Range 'コピー範囲13
Dim cpyRnge14 As Range 'コピー範囲14
Dim cpyRnge15 As Range 'コピー範囲15
Dim cpyRnge16 As Range 'コピー範囲16
Dim cpyRnge17 As Range 'コピー範囲17
Dim cpyRnge18 As Range 'コピー範囲18
Dim cpyRnge19 As Range 'コピー範囲19
Dim cpyRnge20 As Range 'コピー範囲20
Dim cpyRnge21 As Range 'コピー範囲21
Dim pstCell1 As Range '貼付基準セル1


tgtDate = Worksheets("入力データ").Range("M2").Value
Set cpyRnge1 = Worksheets("入力データ2").Range("B18")
Set cpyRnge2 = Worksheets("入力データ2").Range("C18")
Set cpyRnge3 = Worksheets("入力データ2").Range("D18")
Set cpyRnge4 = Worksheets("入力データ2").Range("E18")
Set cpyRnge5 = Worksheets("入力データ2").Range("B7")
Set cpyRnge6 = Worksheets("入力データ2").Range("H18")
Set cpyRnge7 = Worksheets("入力データ2").Range("F18")
Set cpyRnge8 = Worksheets("入力データ2").Range("C7")
Set cpyRnge9 = Worksheets("入力データ2").Range("D8")
Set cpyRnge10 = Worksheets("入力データ2").Range("G18")
Set cpyRnge11 = Worksheets("入力データ2").Range("E8")
Set cpyRnge12 = Worksheets("入力データ2").Range("F8")
Set cpyRnge13 = Worksheets("入力データ2").Range("G8")
Set cpyRnge14 = Worksheets("入力データ2").Range("H8")
Set cpyRnge15 = Worksheets("入力データ2").Range("I7")
Set cpyRnge16 = Worksheets("入力データ2").Range("J7")
Set cpyRnge17 = Worksheets("入力データ2").Range("B12")
Set cpyRnge18 = Worksheets("入力データ2").Range("C12")
Set cpyRnge19 = Worksheets("入力データ2").Range("D12")
Set cpyRnge20 = Worksheets("入力データ2").Range("E12")
Set cpyRnge21 = Worksheets("入力データ2").Range("F12")
'日付検索(完全一致セル)↓
Set pstCell1 = Worksheets("sheet2").Range("D6:D36").Find(What:=tgtDate, LookAt:=xlWhole)


If Not pstCell1 Is Nothing Then
'コピー範囲をコピー↓
cpyRnge1.Copy
'貼付基準セルを再設定(日付列の隣)↓
Set pstCell1 = pstCell1.Offset(, 2)
'貼付基準セルを選択↓
Worksheets("sheet2").Select: pstCell1.Select
'値のみ貼付↓
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'コピーモード(点線囲み)解除
Application.CutCopyMode = False


'コピー範囲をコピー↓
cpyRnge2.Copy
'貼付基準セルを再設定(日付列の隣)↓
Set pstCell1 = pstCell1.Offset(, 1)
'貼付基準セルを選択↓
Worksheets("sheet2").Select: pstCell1.Select
'値のみ貼付↓
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'コピーモード(点線囲み)解除
Application.CutCopyMode = False

・・・以下cpyRnge21まで続く。

Else

MsgBox "指定の日付が存在しません。", vbExclamation + vbOKOnly, "エラー"


End If

End Sub
Yahoo!知恵袋 4210日前
コメントする
お気に入り
1
質問者が選んだベストソリューション
ここまでProgramが進むとなかなか状況の把握が難しいですが
Set pstCell1 = Worksheets("sheet2").Range("D6:D36").Find(What:=tgtDate, LookAt:=xlWhole)
のところのtgtDateが怪しいのではないでしょうか。この行にBreakPoint(F9)を設定して、cpyRnge15~19の場合にpstCell1にどんな値がセットされているか確認されると良いと思います。(ウオッチウインドウでpstCell1.Addressを確認しましょう)

余談ですが、このProgramの場合、
配列変数(Dim cpyRnge() as Range)や、
Range("B12")の代わりにCells(12,2)
を使うともう少しすっきりしたProgramになると思いますよ^^

頑張って!
Yahoo!知恵袋 4196日前
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
その他の解決方法を知っていますか?
回答する
全般
47
Views
質問者が納得まぁ少なくても星撮れるくらいにならないと、 現地で応用出来ませんので、国内にいるうちに まともに星撮れるようになってください。 そうしないと、設定うんぬんは「現場の状況」でまったくかわります。 よって、答えられないw S95自分も持ってますが、さすがにマイナス25℃付近での動作は 確認してません。 マイナス8℃ほどなら星撮る時に動作してましたけどw まぁ記念写真程度の「撮影時間」であれば、 バッテリーもさほど気にしなくてもいいでしょう。 予備は必要ですけど。 短時間で撮影するんですから、短時間で「ピン...
3730日前view47
全般
72
Views
質問者が納得APNの設定が間違ってるだけかと思います。 ちゃんと設定してますか?
3736日前view72
全般
72
Views
質問者が納得メモリーは相性問題がつきまといます。ので、メモリーメーカー及びマザーボードメーカーの対応リストで確認する事が重要です。 また、0x0000000A及び0x0000007Fのエラーメッセージを検索しエラー原因をつかむことも大事です。
3849日前view72
全般
80
Views
質問者が納得sumifs 関数でどうですか!! http://www.becoolusers.com/excel/sumifs.html
3831日前view80
全般
57
Views
質問者が納得複数月をカウントすることができます。 次のようにすればよいでしょう。 仮に3ヶ月までの集計をするとしたらA1セル、B1セル、C1セルに対象とする月をそれぞれ入力します。 A4セルには次の式を入力してF4セルまでドラッグコピーします。 =IF($A1="",0,COUNTIF(INDIRECT($A1&"!$C$2:$C$1000"),A3))+IF($B1="",0,COUNTIF(INDIRECT($B1&"!$C$2...
3833日前view57

取扱説明書・マニュアル

1986view
http://www.nttdocomo.co.jp/.../F-12C_J_OP_All.pdf
147 ページ5.99 MB
もっと見る

関連製品のQ&A