エクセルVBAの書き方を教えてください
未読分:4件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#4 2015年2月5日(木)17時24分 From: takkus | 返事 削除 変更 |
今は、プロトタイプですから、こういうものを使って、細かい調整が必要になるかもしれませんし、また、大幅に変えたほうがよいかもしれません。まずはたたき台として、提示します。 個人的には、他にも方法もあるとは思っていますが、簡単なものを選びました。 ・コードの貼り付け方と、使い方: これは、Sheet2のタブを右クリックして、「コードの表示」をクリツクし、VBEの画面を出し、そこに貼り付けます。 使い方は、Sheet2のセルに一つ入金日を入れたら、Sheet1 側に番号を検索し、転機した入金日と検索された番号のセルに色を付けていくという方法です。入金したものと区別をつけるためで、同じ色がついているとマクロでは、コピー&ペーストができないようになっています。 実用度を増すために、エラー処理はいくつか施してあります。不要なら、取り去ってもよいです。 このコードは、キーを入力をした時に発生する信号で、マクロが起動するようになっています。 '//Sheet2 に貼り付ける Private Sub Worksheet_Change(ByVal Target As Range) Dim ws1 As Worksheet Dim ws2 As Worksheet Dim SrchTxt As Variant Dim c As Range Dim i As Long Const FCOLOR As Integer = 14 '濃い緑 フォントに色付け Set ws2 = Me Set ws1 = Worksheets("Sheet1") If Target.Column <> 4 Then Exit Sub If Not IsDate(Target.Value) Then Exit Sub If Target.Offset(, -1).Value = "" Then MsgBox "番号が見当たりません。", vbExclamation: Exit Sub SrchTxt = Target.Offset(, -1).Value ws1.Activate 'シートの切り替わり Set c = ws1.Columns(1).Find(SrchTxt, , xlValues, xlWhole) If Not c Is Nothing Then c.Select 'セルに飛ぶ If c.Font.ColorIndex <> FCOLOR Then c.Offset(, 1).Value = Target.Text c.Resize(, 2).Font.ColorIndex = FCOLOR i = Application.CountIf(ws1.Columns(1), SrchTxt) If i > 1 Then MsgBox SrchTxt & "は" & i & "個あるようです。", vbExclamation Else MsgBox SrchTxt & "は、既に入金済になっています。", vbExclamation End If Else MsgBox SrchTxt & "が見つかりません。", vbExclamation End If Set c = Nothing Set ws1 = Nothing Set ws2 = Nothing End Sub '// なお、まとめて一気にやる方法は、コードが違いますから、その時は、その旨をおっしゃってください |
Message#3 2015年2月5日(木)17時23分 From: yuki | 返事 削除 変更 |
入金日付はD5セルではなく、D列の誤りですね?それ前提で回答します。 Sheet1B列先頭、ここではB2としますが、 =vlookup(A2, Sheet2!C:C, 2,0) と入力し、1600行までズイッと引っ張ります。 あ、スミマセンVBAでしたか。やることは同じです。 Sub Macro1() Dim Lastrow as Long Lastrow=Cells(Rows.Count,1).End(xlUp).Row Range("B2").Resize(Lastrow-1,1).Formula="=vlookup(A2, Sheet2!C:C, 2,0)" Endsub |
Message#2 2015年2月5日(木)17時23分 From: yuki | 返事 削除 変更 |
入金日付はD5セルではなく、D列の誤りですね?それ前提で回答します。 Sheet1B列先頭、ここではB2としますが、 =vlookup(A2, Sheet2!C:C, 2,0) と入力し、1600行までズイッと引っ張ります。 あ、スミマセンVBAでしたか。やることは同じです。 Sub Macro1() Dim Lastrow as Long Lastrow=Cells(Rows.Count,1).End(xlUp).Row Range("B2").Resize(Lastrow-1,1).Formula="=vlookup(A2, Sheet2!C:C, 2,0)" Endsub |
Message#1 2015年2月5日(木)17時16分 From: goto | 返事 削除 変更 |
エクセル2012を利用しています。 エクセルデータの入力で質問です。 例えばエクセルのSheet1に A列 1-1-1 1-1-2 1-1-3 2-1-1 2-1-2 2-1-3 2-1-4 1600行ほどあります Sheet2で日付ごとの入金表があります。 また、入金日付がD5セルにあります。 C列に 2-1-2 1-1-3 2-1-3 等にランダムに入力されている状態です。 Sheet1のB列に入金日を転記する場合エクセルのVBAでどのように記述すればよろしいでしょうか? できれば汎用性のあるコードを教えていただけました幸いです。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降