
EXCEL2003でVBAを独習中です。どうもselectとactivateの違いをなかなか理解できません。
例えば
sheets("sheet1").select と sheets("sheet1").activateの違いは何かということがわかりません。
まして activesheet.activate などと書かれていると、何でアクティブなシートをアクティブにしなければならないのだ?と思ってしまいます。
VBAに関しては、数回目の初心者ですので、何でも言ってください。
No.4
- 回答日時:
例えば、「書式」-「シート」-「表示しない」で一番左のシートを非表示にしたとします。
Sub Test1()
Worksheets(1).Activate
ActiveSheet.Range("A1").Value = Now
End Sub
Sub Test2()
Worksheets(1).Select
ActiveSheet.Range("A1").Value = Now
End Sub
その場合、Test1は動くけどTest2はエラーになります。
非表示シートは Active に出来るけど Select は出来ないようです。
選択(Select)しなくても Activeにすれば良いので、私はExcelVBAの記述で Select する必要はあまり無いと思っています。
マクロ記録は Select 多用ですが、、
> activesheet.activate などと書かれていると、
Excel97時代に、Activecell.Activate は良く使いました。
Excel97はシートに置いた CommandButton の Click処理ではこの記述を入れないとアクティブセルを見失う?(バグ?)事があったので。
でも activesheet.activate はあまり聞かないですね。
ご回答ありがとうございました。
私には、まだ難しいな。
また、activesheets.activate の件、これから悩まないですみそうです。そんなに古い参考書でもないのにな。
No.1
- 回答日時:
こんばんは。
Activate も Select も、ほぼ同じです。
ただ、Activate というのは、一つを選ぶ行為ですが、Select は、数に関係がなく選ぶことです。
>sheets("sheet1").select と sheets("sheet1").activateの違い
これに関しては、違いがありません。
> activesheet.activate などと書かれていると、
これは、知りません。ありえないわけではないけれど、ナンセンスです。
サンプル:
Sub Test1()
Sheets.Select
Sheet2.Activate
End Sub
'
Sub Test1a()
'選択した数を調べる
Sheets.Select
MsgBox ActiveWindow.SelectedSheets.Count
Sheet2.Activate
MsgBox ActiveWindow.SelectedSheets.Count
End Sub
'
Sub Test2()
'こちらは動かない。Activate は、複数を選択することが出来ません。
Sheets.Activate 'エラー発生
Sheet2.Select
End Sub
'こんなこともありえます。
Sub Test3()
Dim i As Integer
Worksheets(1).Select '初期シートを洗濯
For i = 1 To Worksheets.Count
If i Mod 2 = 1 Then '奇数のシートだけ選ぶ
Worksheets(i).Select False
End If
Next i
End Sub
なお、私だけかもしれませんが、こういうのは、1年経っても、2年経っても納得の行く説明が出来るようにはなりません。現象としては、捕らえることが出来ても、その都度、英語単語のように比較して覚えるようなことは辞めたほうがよいです。ややこしくなるだけです。
他にも、Cells と Range や、Sheet と Worksheet、Window と Workbook など、好みで選べることは出来ないにしても、頻度や使い分けの違いがあります。そして、当然、覚えるほうにも優先順位があります。もちろん、上達するにしたがって使い分けもありますが、入門編から、それを比較していったら、到底先には進めません。今回の場合は、Activate は忘れて、Select だけで、先に進んでください。知ったかぶりであれこれと書いても、自分が納得しないものを他人には通じないように思います。
なお、Activate は、実務上で必須になることがありますが、そういうことが出てくるのは、3年か4年先だと思っていいです。入門レベルでは、そういうのがあるなっていう程度で十分です。
ありがとうございます。
昨夜から、手元にある例文で、select と activate を入れ変えながらいろいろ試しています。
activateを頭の片隅に置き、selectでがんがん行こうと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付が未入力の際はゼロか、空...
-
Excelの「0」だけ非表示、小数...
-
複数シートの同じセル内容を1シ...
-
VBA セル間のリンク修正につい...
-
エクセルで複写のように自動入...
-
(Excel)あるセルに文字を入力...
-
エクセルでデータを蓄積させる...
-
Excelシートの保護時にデータの...
-
エクセルで、勤務表から 日付...
-
エクセルについて
-
複数シートの同一セルを抽出す...
-
VBAで変数に関数式の結果をセッ...
-
エクセル ctrl+End いくら削...
-
シートが異なるセル同士を、相...
-
INDIRECT(空白や()がある文字列...
-
エクセルで串刺し計算ができない。
-
エクセル VLOOKUPから...
-
エクセルで別シートからの最大...
-
エクセルで20万行あるシート...
-
EXCEL リストボックスのRowSouc...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
VBA セル間のリンク修正につい...
-
エクセルで1月0日と表示される!!
-
日付が未入力の際はゼロか、空...
-
Office2021のエクセルで米国株...
-
Excelで複数シートの選択セルを...
-
Excelシートの保護時にデータの...
-
エクセルで条件に一致したセル...
-
エクセルで、加筆修正したセル...
-
Excelでスクロールすると文字が...
-
エクセルで複写のように自動入...
-
ExcelでTODAY関数を更新させな...
-
(Excel)あるセルに文字を入力...
-
複数シートの同じセル内容を1シ...
-
エクセルで指定のセルのみ完全...
-
エクセル ハイパーリンクで画像...
-
エクセルで複数のシートの同じ...
-
エクセルについて
-
EXCELのハイパーリンクのセルを...
-
エクセルで別シートからの最大...
おすすめ情報