• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 最後に編集したデータにジャンプ)

VBAで最後に編集したデータにジャンプする方法

kkkkkmの回答

  • kkkkkm
  • ベストアンサー率65% (1644/2494)
回答No.13

> データのある最後の行の端、「さしすせそ」の下に「た」を入れるとすると > 行が「た」で列は「そ」の次のセルにポインタが合っていて 捕捉に書かれているコードはそこのセルを選択するようになっています。「た」の右を選択状態にしたい場合私がNo10で回答した以下のコードにしてください。 Private Sub Workbook_Open() Dim BRow As Long Dim LColumn As Long With ActiveSheet BRow = .UsedRange.Find("*", , xlFormulas, , xlByRows, xlPrevious).Row LColumn = .Cells(BRow, Columns.Count).End(xlToLeft).Column .Cells(BRow, LColumn + 1).Select End With End Sub 参考までに Workbook_OpenもAuto_Openもそのファイルを自身で開いた場合は、どちらも起動したときに実行されますが、他のファイルからマクロで該当ファイルを開いた場合、Auto_Openは実行されませんがWorkbook_Openは実行されます。ですので、他のファイルから開く可能性がある場合は、Workbook_Openを利用してください。

KAIJI-000
質問者

補足

たびたびの補足有難うございました。こちらも参考にさせていただきます。

関連するQ&A

  • VBA 最後に編集したデータにジャンプ2

    前回(http://okwave.jp/qa/q8795572.html)では質問の仕方が不十分で申し訳ありませんでしたので、 再度もっと細かい仕様も含めて質問いたします。 B列には必ずデータがあり、1行目も日付固定で、2行目からずっとデータを入れていきます。 ただし、B列と1行目以外どのセルにどんなデータがあるかは常に不定です。空白もあります。 右端のセルは揃っているとは限りません。 データは文字列です。 ブックではなくある特定のワークシートだけを開いた時に限り、最後にデータを入れた右隣のセルにポインタを合わせるようにしたいです。 A B C D E F ……….以下続く 1 10/1 10/2 10/3 10/4 10/5 ……….以下続く 2 Z 空白 空白 空白 あ ……….以下続く 3 Z あ あ あ 空白 ……….以下続く 4 Z 空白 あ 空白 空白 ……….以下続く 5 Z 空白 空白 あ 空白 ……….以下続く 6 Z あ あ あ あ ……….以下続く . . . 以下続く 以上です。よろしくお願いします。

  • 「フォーカスのあるフィールドに色を付ける」vba

    帳票フォームの全てのコントロールに 条件付き書式で 「フォーカスのあるフィールドに色を付ける」を行いたいのですが コントロールが多すぎる為VBAでループさせたいのですがコードがわかりません。 http://www.tsware.jp/tips/tips_187.htm これをVBAで行いたいです。 VBAでの条件付き書式は Sub Sample() Dim Field As String Dim myFormName As String With Forms(myFormName).Controls(Field) With .FormatConditions .Delete With .Add(acExpression, , "[" & Field & "]=""あ""") .BackColor = 225 End With End With End With End Sub こんな感じで出来る事は知ってますが、 vbaで「フォーカスのあるフィールドに」と言う条件の付け方がわからないので教えてください。

  • エクセルVBAについて

    こんにちわ! 今、エクセルでAシートの入力した項目をBのシートへデーターが入力できるようなシステムを以下のようにくみました。 そこでBシートにデーターが入力されるのですが20行まで入力すると入力できないようにしたいのですが、なかなか上手くいきません。 A1からF20まで書式のロックを外しそれ以外のセルは保護をかけたのですがその状態でVBAを使って20行以上入力できませんという感じのエラー表示をしたいのですが、どうすればいいでしょうか? VBAは初心者ですが宜しくお願いします。 Private Sub CommandButton1_Click() Dim row As Integer row = WorksheetFunction.CountA(Sheets("date").Columns(1)) + 1 Sheets("date").Cells(row, 1).Value = Range("B2").Value row = WorksheetFunction.CountA(Sheets("date").Columns(2)) + 1 Sheets("date").Cells(row, 2).Value = Range("B3").Value row = WorksheetFunction.CountA(Sheets("date").Columns(3)) + 1 Sheets("date").Cells(row, 3).Value = Range("B4").Value row = WorksheetFunction.CountA(Sheets("date").Columns(4)) + 1 Sheets("date").Cells(row, 4).Value = Range("B5").Value row = WorksheetFunction.CountA(Sheets("date").Columns(5)) + 1 Sheets("date").Cells(row, 5).Value = Range("B6").Value row = WorksheetFunction.CountA(Sheets("date").Columns(6)) + 1 Sheets("date").Cells(row, 6).Value = Range("B7").Value Sheets("統制入力").Select Range("B17").Select ActiveWindow.SmallScroll Down:=-9 Range("B3:B7").Select Selection.ClearContents Range("B1").Select End Sub

  • VBA教えてください

    VBA初心者です。 画像を添付します 赤く塗られているセルには C~Eまでセルを結合し なおかつ結合したセルの中に「停止」の文字をいれます。 これを手動で行うのではなく 自動で(VBAで) 赤く塗られているセルだけに反応し その行のセル(C~E)を結合し なおかつその結合されたセルの中に 「停止」の文字を中央添えにされた状態で 自動入力できるようにしたいです 教えてもらったコードでは Private sub worksheet_change(byval target as range) If target. Interior.colorindex=3 then Range(cells(target.row,3),cells(target.row,5)).merge Cells(target.row,3).value="停止" End if End sub でした。 これでは出来ませんでした 改善点か 新しくコードを書いてもらえると めちゃくちゃ助かります。 回答お願いします

  • VBA で2つのプロシージャを一つにまとめたい

    いつもここにはお世話になっており、ありがとうございます。 さて、タイトルにもありました通り、下記2つのプロシージャでコマンドボタンを設定して、実行しておりますが、これを一つのプロシージャ(ボタン)にまとめたく、ご指導お願いいたします。 ○作ろうとしているVBAの概要 1)EXCELのデータベースで、一枚目の「inputシート」に入力し、2枚目の「dataシート」でデータをどんどん格納していきます。 2)データは、「顧客CDボタン」で管理しており、これをキーとしています。 3)「顧客CD」は[inputシート」ではC4セル、「dataシート」ではA列にで管理しています。 3)データは新規にデータを入力したときの登録ボタン(一つ目のプロシージャ)、既存のデータを編集して、上書きするときの、変更登録ボタン(二つ目のプロシージャ)があります。 ○相談したい内容 「登録ボタン」と「変更」ボタンを一つにまとめて、ひとつのボタンとして、新規にデータを登録するときも、変更したデータを登録するときも、同じボタンで行えるようにしたい。 '■1つ目のプロシージャー Private Sub CommandButton1_Click() '登録ボタン Dim row As Integer row = WorksheetFunction.CountA(Sheets("data").Columns(1)) Sheets("data").Cells(row, 2).Value = Range("C5").Value row = WorksheetFunction.CountA(Sheets("data").Columns(1)) Sheets("data").Cells(row, 3).Value = Range("C6").Value row = WorksheetFunction.CountA(Sheets("data").Columns(1)) Sheets("data").Cells(row, 4).Value = Range("C7").Value row = WorksheetFunction.CountA(Sheets("data").Columns(1)) Sheets("data").Cells(row, 5).Value = Range("F5").Value ActiveWorkbook.Save End Sub '■2つ目のプロシージャー Private Sub CommandButton3_Click() '変更ボタン Dim fRange As Range Dim fRow As Long If (Range("C4").Value = "") Then '顧客CDが入力されていない? MsgBox "顧客コードを入力してください。", vbExclamation Exit Sub End If Set fRange = Sheets("data").Columns(1).Find(What:=Range("C4").Value, _ LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) If (fRange Is Nothing) Then '見つからなかった? MsgBox "入力された顧客コードが存在しません。", vbExclamation Exit Sub End If fRow = fRange.row '検索された顧客DCの行位置を求める Sheets("data").Cells(fRow, 2).Value = Range("C5").Value Sheets("data").Cells(fRow, 2).Value = Range("C5").Value Sheets("data").Cells(fRow, 2).Value = Range("C5").Value Sheets("data").Cells(fRow, 3).Value = Range("F5").Value

  • vba エクセル

    2行目から、最終行までEmptyにしたいのにならないです。 1行目はフィールド行なのに、そのままにしたいのですが 2行目から最終行は空白にしたいです。 なので Sub TEST() With Sheets("log") lastRow = .Cells(.Rows.Count, "b").End(xlUp).Row LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column .Range(.Cells(2, LastCol), .Cells(lastRow, LastCol)) = Empty End With End Sub としたのですが、何も起こりません。 lastRowは100、LastColは5なのですが、 このマクロを実行しても何も起こらないです。 なぜでしょうか?

  • VBAの時間入力について

    先日、時間を文字列で、HH:mmのフォーマット入力するPGを教えて頂き、 内容理解をしているのですがわからない部分があります。 ★の部分の条件で、00:00も入力したいです。 ご存知か方がおられましたら教えてください。 よろしくお願い致します。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から 'Intersect:http://officetanaka.net/excel/vba/tips/tips118.htm 'Is Nothing:nullではない 'Selection.Count <> 1:選択数が1以下ではない(<> :等しくない) ' Not IsNumeric(Target):数値ではない If Intersect(Target, Columns(12)) Is Nothing Or Selection.Count <> 1 _ Or Not IsNumeric(Target) Then Exit Sub ' 'Target:セルの値は24:00以下 '2つの数値の除算を行いし,その剰余を返す 'Mod:2つの数値の除算を行いし,その剰余を返す '★ここで00:00時も入力したい。 If Target <= 2400 And Target Mod 100 < 60 Then ' Application.EnableEvents = False ' With Target ' If Len(Target) = 3 Then .Value = 0 & ":" & Right(Target, 2) ElseIf Len(Target) = 3 Then .Value = Left(Target, 1) & ":" & Right(Target, 2) Else .Value = Left(Target, 2) & ":" & Right(Target, 2) End If .NumberFormatLocal = "hh:mm" ' End With ' Application.EnableEvents = True ' Else MsgBox "入力値が不正です。" ' With Target ' .Value = "" .Select End With Exit Sub ' End If End Sub 'この行まで

  • vba セレクション

    excellでVBAで 今ある列の連続した範囲(仮に$D$2:$D$8とか、$B$3:$B$7)とかがセレクトされているとする。 そのセレクトされている状態をマクロで処理し、そこに例えば$D$2:$D$8の場合は、順に2,3,4,5,6,7,8という数字を表示したい。その回答として Sub test1() For Each c In Selection c.Value = c.Row Next End Sub あるいはSub test2() With Selection .Formula = "=ROW()" .Value = .Value End With End Sub でできるのですが、 順に2,3,4,5,6,7,8という数字を表示のところを(2),(3),ーー,(8)と( )を付けて表示するにはどうすればいいか。

  • VBAコピー範囲について教えてください。

    VBAのコピーペーストの下記プログラムで、 Sub コピー() Dim rng As Range Set rng = Worksheets("2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) With Range("b2:J10") rng.Resize(.Rows.Count, .Columns.Count).Value = .Value End With End Sub コピー範囲 のJ10の部分(データ入力行)が、その都度変わるため、J10の部分を、 J列のデータが入力されている最終行としたいのですが、どのようなプログラムに すればよいのでしょうか。 どなたかよろしくお願いいたします。

  • VBA

    下記に、ツールバーにある印刷ボタンを押すとチェックBOXがチェックされていない時印刷できないようにするというVBAですが下のVBAのような感じで 例えばセルA1にFALSEという文字が入っていたら印刷不可で印刷するかしないかを選択。もし、セルA1にTRUEという文字が入っていたら印刷可。 というのをVBA教えて下さい。 よろしくお願いします。 Private Sub Workbook_BeforePrint(Cancel As Boolean)   With Worksheets("sheet1").CheckBoxes("チェック 1")     If .Value <> 1 Then      If MsgBox("印刷しますか?", vbYesNo) <> 6 Then Cancel = True      End If     End With End Sub