- ベストアンサー
VBAのGotoについて
VBA実行後A1セルにカーソルを移動するため Application.Goto Range("A1") End Sub という方法と Application.Goto Reference:=Range("A1") End Sub という方法があると思うのですがどのような違いがあるのですか? 機能的には全く同じだと思うので処理的な違いですか? またその他にも同様の動作をさせるコマンドはありますか? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- 複数のコマンドボタン(VBAで)を一つにまとめたい。
複数のコマンドボタン(VBAで)を一つにまとめたい。 Private Sub CommandButton1_Click() Application.Goto Reference:=Range("A7"), Scroll:=True End Sub Private Sub CommandButton2_Click() Application.Goto Reference:=Range("A29"), Scroll:=True End Sub Private Sub CommandButton3_Click() Application.Goto Reference:=Range("A51"), Scroll:=True End Sub Private Sub CommandButton4_Click() Application.Goto Reference:=Range("A73"), Scroll:=True End Sub Private Sub CommandButton5_Click() Application.Goto Reference:=Range("A95"), Scroll:=True End Sub Private Sub CommandButton6_Click() Application.Goto Reference:=Range("A117"), Scroll:=True End Sub Private Sub CommandButton7_Click() Application.Goto Reference:=Range("A139"), Scroll:=True End Sub Private Sub CommandButton8_Click() Application.Goto Reference:=Range("A161"), Scroll:=True End Sub Private Sub CommandButton9_Click() Application.Goto Reference:=Range("A183"), Scroll:=True End Sub Private Sub CommandButton10_Click() Application.Goto Reference:=Range("A205"), Scroll:=True End Sub Private Sub CommandButton11_Click() Application.Goto Reference:=Range("A227"), Scroll:=True End Sub 上記のように複数のコマンドボタンを関数化して一つにすることは出来るでしょうか?
- ベストアンサー
- Visual Basic
- エクセルのVBAで
日付を入力したシートでシートを開くと今日の日付のセルがあった場合左上に表示させるモジュールで、 Sub test() Dim R As Range Set R = Range("A:A").Find(Date) If Not R Is Nothing Then Application.Goto reference:=R, scroll:=True End If End Sub のように作成したのですが、うまく働きません。 原因は、日付を表示したセルが、A1に2006/4/1を入力してA2以降のセルはA1+1、A2+1・・・で対応しています。 よって、アクションが働かないのではと推測しているのですが、このことを改善するにはどのようにしたらいいでしょうか? 日付をダイレクトに入力しないのは、2007年にも先頭セルのみの書き換えで対応しようとしたためです。
- ベストアンサー
- オフィス系ソフト
- Excel VBA セル範囲に名前をつける
Excel VBA独学中の初心者です。 セル範囲に名前をつける方法で以下の2つの方法があるようです。 (1) 同じように動作しますが違いは有るのでしょう。 (2) 本質的に考え方または内部動作は違うのでしょうか。 お分かりの方教えていただけますと助かります。 --------------- '方法1 Sub 名前の定義1() Range("sheet1!A2:B3").Name = "名前1" End Sub '方法2 Sub 名前の定義2() Range("A1").Select ActiveWorkbook.Names.Add Name:="名前2", _ RefersTo:="=sheet1!A2:B3" End Sub
- ベストアンサー
- Excel(エクセル)
- Gotoを使わずに済みますか?
VBA超初心者です。ヘルプだけで学習していますが、よくわかりません。印刷する時に、GT4かGU4の値が0の場合はエラーメッセージが出て終了し、いずれも0以外ならばその数値を印刷の開始と終了ページとして取得するプログラムを作ってみましたが、何度やってもうまくいかず、やむなく昔ベーシックで習ったGotoを使ってみました。 しかし、過去ログを見ると、Gotoは使わないほうが良いとの事。 この文でGotoをなくす方法をご教授下さい。お願いします。 Sub 印刷() 開始ページ = Range("GT4").Value 終了ページ = Range("GU4").Value If Range("GT4") = 0 Then GoTo 10 If Range("GU4") = 0 Then GoTo 20 入力結果 = MsgBox((開始ページ) & "ページから" & (終了ページ) & "ページを印刷しますか?", vbYesNo) If 入力結果 = vbYes Then ActiveWindow.SelectedSheets.PrintOut From:=開始ページ, To:=終了ページ, Copies:=1, Collate _ :=True GoTo 30 10: MsgBox ("未入力の項目があ~る!") GoTo 30 20: MsgBox ("入力ミスがあります!") 30: End If End Sub
- ベストアンサー
- Visual Basic
- VBA コピーモード中の左上隅セルを、画面の左上の位置にスクロールした
VBA コピーモード中の左上隅セルを、画面の左上の位置にスクロールしたい! Windows XP Home Edition SP3 Office XP Personal 2002 Excel 2002 「 現在、コピーモード中になってる左上隅セル ( A20 ) 」 の 「 3つ上のセル ( A17 ) 」を Window画面の左上の位置に、スクロールしたいのですが、どおすればよろしいでしょうか? 何卒、ご教示のほどをお願い致します。 Sub スクロール() Range(A20:B30).Copy Application.Goto reference:=ActiveWindow.Range(VisibleRange.Item(1).Address), Scroll:=True End Sub
- ベストアンサー
- オフィス系ソフト
- 〖緊急〗エクセルのVBAについて質問です。
エクセルのVBAを使用して、下記の動作を実行したいのですがうまくいきません。 おしえてください。 sheet1に移動したいシート名の一覧を作成し、一覧を参照してシートを移動したいです。 RangeにカーソルをあてるとA1に入力したシート名前が反映しているようなのですが・・・。 sheet1のセルA1に移動させたいシート名を入力しています。 Sub Worksheet() Worksheets(Range("A1")).Activate End Sub ※❝インデックスが有効範囲にありません❞とエラーがでます。 ※同一のBOOK内での作業です。 よろしくおねがいします。
- 締切済み
- Windows XP
- EXCELVBAについて質問です。
VBAにて、全てのシートを選択しA1セルをアクティブにするコードを作りたいのですが、計算後、表示位置がばらばらになってしまいます。 Sub シートをすべて選択後A1セルへ移動() Worksheets.Select Application.Goto reference:=Range("a1"), scroll:=True Sheets(1).Select Sheets(1).Range("A1").Activate End Sub 上記のコードなのですが、非アクティブシートは移動せず、セルA1へ移動するのはアクティブシートのSheets(1)のみとなります。 ファイルにあるシート全てをA1に移動後ウィンドウもA1に移動するような命令文はあるのでしょうか?
- ベストアンサー
- オフィス系ソフト
- Excelでマクロを使いセルの内容をコピー貼り付け
A1セルに111と入力してあるとします。 この時B1にaaa111aaaと入力するマクロを作りたいです。 A1に222があるとB1はaaa222aaaと入力したいです。 これをマクロで作ったのですが、次のようになり、A1の内容にかかわらず常にaaa111aaaとなってしまいます。 Sub Macro1() Range("A1").Select ActiveCell.FormulaR1C1 = "111" Range("B1").Select ActiveCell.FormulaR1C1 = "aaa111aaa" Range("B2").Select Application.Goto Reference:="Macro2" End Sub これのいらない行を削除し、コピーはA1の内容となるように修正して次のようにしました。 Sub Macro1() ActiveCell.FormulaR1C1 = Range("A1") Range("B1").Select ActiveCell.FormulaR1C1 = "aaa111aaa" Application.Goto Reference:="Macro2" End Sub まだペーストするときにA1の内容とならず直接入力となっています。 これをどう変更すればいいでしょうか?
- ベストアンサー
- オフィス系ソフト
- VBAでエラートラップがうまくいきません。
VBAで次のようなプロシージャを実行してみました。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = " " Then ~コード~ END IF END SUB すると複数のセルが選択されるとエラーがでます。そこで次のようにしてみました。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error GoTo エラー処理 If Target.Value = " " Then On Error GoTo 0 ~コード~ END IF EXIT SUB エラー処理: EXIT SUB END SUB ところがこれでもやっぱりIF文のところでエラーがでます。 当方初心者でなぜエラーがでるのかわかりません。 わかりやすくご教授ください。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- エクセルVBAのテキスト保存の仕方
次のようなマクロがあり、最後の行でできあがった表をクリップしています。 現在そのクリップボードの表をテキストに手動で貼り付けてその都度保存しているのですが これを自動的にテキスト保存できればと思っています。 更にファイル名は左上1セルめ(この場合多分A1000のセル)にある文字列の最初から10文字をファイル名にしたいです。 マクロはよく知らないので記述の仕方を教えてください。 ※このマクロはマクロの記録により自動作成したものです。 よろしくお願いします。 (office2013/Windows7) Sub rep1000行削除集約() Dim i As Long Range("AC1.AI650").Copy Range("A1000").PasteSpecial Paste:=xlPasteValues Range("A1000:A2000").Value = Range("A1000:A2000").Value Range("A1000:A2000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete Application.Goto Reference:="R1000C1" Range("A1000:G1000").Select Range(Selection, Selection.End(xlDown)).Select Application.CutCopyMode = False Selection.Copy End Sub
- ベストアンサー
- Excel(エクセル)
お礼
ありがとうございます。 皆様の説明でかなり理解できました。