• ベストアンサー

マクロ言語の意味

エクセルのマクロの書き込みに、If Target.Row=6 Thenとあります。行や列に関係したことでしょうか? 教えてもらった転記のマクロなのですが、縦に項目を入力して行くと別のシートの座標を探して入力するものです。項目を横に入力して行くマクロに書き換えると多くの書き込みが出来て便利です。現在、四苦八苦しています。分かる方助けて下さいお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Row とは 行番号のことです。 列番号は Column です。 If Target.Row = 6 Then ということは、Target はどこかのセルを参照しているのではないか、と。 ならば Target が指し示すセルの場所を変更している箇所があると思いますので、縦に移動させているところを横に移動させるように変更すればよいかと。

noname#20141
質問者

お礼

中々思うようにならず、休み休みで時間がかかり遅くなってしまいました。とても役に立ちました、ありがとう御座いました。

noname#20141
質問者

補足

以下が全コードですが、横に移動するには、Target.Offsetの指定や他にも変更点がありそうで、出来れば書き換えてもらえませんか、お願いします。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row = 6 Then r = WorksheetFunction.Match(Target.Offset(-4, 0), Worksheets("Sheet1").Range("a1:A100"), 0) c = Target.Offset(-2, 0) Worksheets("Sheet1").Cells(r, c + 2) = Target.Offset(-1, 0) MsgBox "記帳済" Target = "記帳済" End If End Sub

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マクロ、カーソルの相対移動

    下記マクロはカーソルの相対移動で教えいいただいたものです。 セルに値を入力しないで、Enterを押下した時もこのように動作させるためにはどのように記述したらいいでしょうか。教えてください。よろしくお願いいたします。 Private Sub Worksheet_Change(ByVal Target As Range) if Target.Column = 2 Then Cells(Target.Row,5).Select if Target.Column = 5 Then Cells(Target.Row,7).Select if Target.Column = 7 Then Cells(Target.Row + 1, 2).Select End Sub

  • [VBAマクロ] Private Sub

    以下のコードは、ある任意のテーブルの最終行に何か入力すると自動的に新しい行を追加します。(例えば、TotalVal をセルR5に名前定義して、4行目に何か入力するとマクロが走って5行目に新規の行が挿入されます。) 新規の行を入力するだけでなく、直前行の計算式とフォーマット形式もコピーして行の挿入をするにはどうしたらよいか、どなたかご教示していただけませんでしょうか。よろしくお願います。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = [TotalVal].Row - 1 Then Application.EnableEvents = False [TotalVal].EntireRow.Insert Application.EnableEvents = True End If End Sub

  • マクロでの条件判断について

    A行に何かデータを入力した場合、同じ列のとなりの行のセルに入力時間を残したいと思い、 例 A1:あ B1:2006/5/9/16:00 A2:い B2:2006/5/10/18:00 以下のマクロを教えて頂いたのですが、 Private Sub Worksheet_Change(ByVal Target As Range) '///A列のセル以外ならマクロ終了/// If Target.Column <> 1 Then Exit Sub '///1行目のセルならマクロ終了/// If Target.Row = 1 Then Exit Sub '///内容がブランクならB列のセルをブランクにする。/// If Target.Value = "" Then Target.Offset(0, 1).Value = "" Else Target.Offset(0, 1).Value = Format(Date + Time, "yyyy/mm/dd hh:mm:ss") End If End Sub A列以外にもC列に入力した値の入力時間をD列にE列に入力した値の入力時間をF列にと、全部で6箇所値を入力したとなりのセルに入力時間が出るようにしたかったのですが、 '///A列のセル以外ならマクロ終了/// If Target.Column <> 1 Then Exit Sub の部分を '///A,C列のセル以外ならマクロ終了/// If Target.Column <> 1 Or Target.Column <> 3 Then Exit Sub のように変更してまずはA列とC列に値を入れて挑戦したのですが、時間が表示されなくこまっておりました。 解決方法をご存知のかたがいらっしゃいましたら、ぜひよろしくお願いいたします。

  • マクロについて教えてください。

    マクロ初心者なのですが、下記にあるマクロコードは、ダブルクリックをすると指定した場所の数量が一つずつ減っていき、「0」になるときに「Yes」「No」と表示がでるのですが、これをダブルクリックではなく、一回押せば数量が一つ減り、「0」になるときは「Yes」「No」の表示がでずに、消えて下のものがつめるようにしたいのです。 そして、間違えた場合に一つ前に戻れる、「戻る」というボタンをつけたいのですが、分かる方がいましたらお力をかしていただけないでしょうか。宜しくお願いいたします。 'シートモジュールへ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Cells(Target.Row, 3).Value = 1 Then If MsgBox("xxx", vbYesNo) = vbYes Then Target.EntireRow.Delete Else Cells(Target.Row, 3).Value = Cells(Target.Row, 3).Value - 1 End If Cancel = True End Sub

  • エクセル マクロを利用して繰り返して入力する方法

    マクロでA1B1C1D1E1F1セルに入力しF1入力後A2B2C2D2E2F2と 下方向へ繰り返し800行くらいまで入力し、それとB列はスキップしたいのですが下記の方法で別々のシートでは うまくいくのですが同じシ-ト内ではエラ-になってしまいます 次の行への移動 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 7 Then Cells(Target.Row + 1, 1).Select End If End Sub B列のスキップ Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("G1") <> "" Then If Target.Column = 2 Then Target.Offset(0, 1).Select End If End If End Sub どなたかご存じの方教えて下さい

  • 2つのものが一致時に転記するマクロ

    いつもお世話になります。 ここのサイトで 2つのブックでIDが一致したら 横にある文字を転記するというマクロがあるのですが 同じIDが続いても転記先のエクセルに全て転記したいと質問させて頂き そのマクロを使わせて頂いたのですが IDと時間を一致したものを転記させなければいけなくなりました A列の時間とB列のIDを一致したときに 大元に転記させるのは、変数で2つの項目を設定して 確認させればいいのかと思っていましたが上手くいきません 更に、データ量が多いので マクロを動かすたびに応答なしになるので コードをfindから別なコードを変えたほうがよろしいのでしょうか? 下記にマクロのコードと構成と画像を記述させて頂きます お手数ですがご教授して頂けないでしょうか? 恐縮ですがよろしくお願いいたします。 Sub 転記改造()   Dim w0 As Worksheet, w1 As Worksheet   Dim h As Range, Target As Range Dim i As Range, Target1 As Range   Dim FirstAddress As String   Set w0 = Workbooks("IDデータ.xls").Worksheets(1)   Set w1 = Workbooks("ID管理票.xls").Worksheets(1)   For Each h In w0.Range("A2:A" & w0.Range("A65536").End(xlUp).Row) For Each i In w0.Range("B2:B" & w0.Range("A65536").End(xlUp).Row)     If h.Offset(, 1).Value = "確認" Then       Set Target = w1.Range("D11:D60000").Find(what:=h.Value, LookIn:=xlValues, lookat:=xlWhole)       If Not Target Is Nothing Then         FirstAddress = Target.Address         Do           If Target.Offset(, -1).Value = "" Then             Target.Offset(, -1) = "確認"             Exit Do           Else             Set Target = w1.Range("D11:D60000").FindNext(Target)           End If         Loop While FirstAddress <> Target.Address       End If     End If   Next   next End Sub

  • マクロによる日時の表示

    こちらのページでお世話になり 以下のようなプログラムを使って 特定の行に入力があった場合となりのセルに入力時間が表示されるようにしたのですが、 通常は例としてA1に入力があった場合B1に入力時間が表示されるといった具合だったのですが、わけあってA1~A3を結合しなければならなくなってしまい、入力時間をB1~B3(同じく結合したセル)に表示したいのです。 同じマクロのままやってみたところ一応入力時間は表示されるのですが、A1~A3に入力したデータを消したときにエラーが出てデバックしますか?といった内容の表示が出てしまいます。 どこを変更するとエラーが出なくなるのでしょうか? ご存知のかたがいらっしゃいましたらどうぞご教授願います。よろしくお願いします。 Private Sub Worksheet_Change(ByVal Target As Range) ' 1行目のセルならマクロ終了 If Target.Row = 1 Then Exit Sub ' A列かC列かE列なら If Target.Column = 2 Or Target.Column = 4 Or Target.Column = 6 Or Target.Column = 8 Or Target.Column = 10 Or Target.Column = 12 Or Target.Column = 15 Then '  内容がブランクなら隣のセルをブランクにする If Target.Value = "" Then Target.Offset(0, 1).Value = "" Else Target.Offset(0, 1).Value = Format(Date + Time, "yyyy/mm/dd hh:mm:ss") End If End If End Sub

  • このマクロの意味を教えて下さい。

     条件付き書式の色付けで「指定した文字を含む」という条件を 4つ以上つくるということで、下のマクロを探してきたんですが、少しでも意味を 知りたいです。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 1 Then Exit Sub If Selection.Count > 1 Then Exit Sub x = Target.Value c = 0 If x Like "*あ*" Then c = 6 If x Like "*い*" Then c = 4 If x Like "*う*" Then c = 34 If x Like "*え*" Then c = 3 Target.Interior.ColorIndex = c End Sub これを実行したんですが、なぜ結合したセルの場合だけ、文字を 削除した際に色が残るのですか? それを指示している部分と改善策を教えて下さい。

  • エクセルマクロで複数列のセルを選択した時でも正しく動作するようにしたい

    エクセルマクロで複数列のセルを選択した時でも正しく動作するようにしたい。 今、3列目に入力された値によって15列から17列の値を自動入力するように次の マクロを作りました。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 3 Then Exit Sub For Each r1 In Selection If r1.Cells(1, 1) <> "部品表" Then Cells(r1.Row, 15) = "-" Cells(r1.Row, 16) = "-" Cells(r1.Row, 17) = "-" End If Next End Sub 3列目のみのセルをペーストすると正しく動作しますが、1列目から3列目のセルにペーストすると何も動きません。 正しく動くようにするには、どう修正すればいいでしょうか?

  • エクセルVBAについて

    エクセルVBAについて 下にある、1行目に入力された数値の、選択したセルの数値を、B5セルに表示させるマクロなのですが、1行目が結合していると、うまくB5セルに表示できません。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Target.Count > 1 Then Exit Sub    '●複数セル選択は無視  If Target.Row <> 1 Then Exit Sub    '●1行目以外の選択は無視  If Target.Column > 6 Then Exit Sub   '●F列目以降の選択は無視  If Target.Value = "" Then Exit Sub   '●選択セルが未入力なら無視    Range("B5").Value = Target.Value End Sub このマクロで、結合しているセルをB5に表示させることはできますでしょうか? 1行目で選択するセルは、すべて2つのセルが結合しています。 よろしくお願いいたします。

このQ&Aのポイント
  • 使用しているMovie Studio 2022において、DVDに書き込んだ動画が再生されない状況になっています。マニュアルを見ても解決策がわからず困っています。どなたか教えてください。
  • DVDに動画を書き込んだ後、DVDプレーヤーで再生しようとしたところ、動画が入っていない状況です。マニュアルを見ても基本的な操作が理解できません。どうすれば動画を再生できるのでしょうか。
  • マニュアルを見ても操作方法が理解できず、Movie Studio 2022で書き込んだDVDが再生されません。DVDプレーヤーで再生できるようにする方法を教えてください。
回答を見る