ワークシートってどうやって選択すればいいの?Worksheets("Sheet1")?Worksheets(1)?Sheet1?|エクセルVAB
ワークシートの特定にはCodeName(コードネーム)を使った方がいいというエントリーを書きました。
CodeNameを使え!なんてエラそうなこと言ってますが、実はぼくはずっとCodeNameの存在を知りませんでした。
ホントにずぅーーーーっと知りませんでした。
そしてCodeNameの存在を知ったときは、あまりの感動に暫く絶句した記憶がございます。はい。
その感動の大部分は「これでワークシート名の変更に左右されずシートを扱える」というもの。
そしてもう一つが、ぼくにとって長年の謎であったことが解決したからです。
ワークシートを特定する3つの方法
とあるブックに3つのワークシートがあったとして、その一番左端のワークシート名が「Sheet1」だったとします。
このとき、「Shee1」シートを選択する方法として、次の2つの方法をよく見かけます。
- Worksheets(“Sheet1”).Select
- Worksheets(1).Select
(ワークシートをSelectすることなんてほとんどないと思いますが、分かりやすいメソッドなので以下Selectを前提に書いています。)
1は単純に「Sheet1」というワークシート名を拠り所に指定する方法です。
2はワークシートの集合体であるワークーシートコレクションの中から、各ワークシートに振られたインデックス番号を使って呼び出す方法です。
これは、ワークシートの複数枚ある場合、自動的に左端のワークシートを1として順にインデックスが割り振られていく、という特性を利用したものです。
ちなみに、2がワークシートコレクションというCollectionオブジェクトなんだという観点に立つと、実は1もCollectionオブジェクトらしい挙動だということが分かってきます。
つまり、Collectionの中から1つ取り出すときにインデックスを使って取り出すほか、Keyを使って取り出す方法があるわけですが、1の方法はまさしく後者に他ならないのです。
このときのKeyは何かというと、ワークシート名(=Sheet1)そのものですよね。
なお、Collectionについてはコチラのエントリーを参考にしてみてください。
話が少し逸れてしまいましたが、長年の謎は上の2つではありません。
もうひとつワークシートを指定する方法で、なぜそれで指定できるのか長きに亘って謎だったのはこれです。
Sheet1.Select
これで前述の例で状態だと「Sheet1」という名前のワークシートが選択できてしまうんですよね。
これで軽く混乱することになります。
「Sheet1」で選択できるなら、「Worksheets(1)」とかする必要ないんじゃないの?
だってその方が打ち込む文字数が少なくて済むし。、、、と。
そう思って「Sheet1」を使い始めると、さらに混乱が襲ってきます。
それは例えば、先に挙げた「Sheet1」という名前のワークシートをひとつ右に移動した場合、「Worksheets(1).Select」では「Sheet1」シートは指定できなくなります。
「Sheet1」シートを選択するためには「Worksheets(2).Select」とする必要があるんですよね。
でも相変わらず「Sheet1.Select」で「Sheet1」(という名前の)ワークシートを選択することができます。
「Sheet1」はOKだけど「Worksheets(1)」はダメで、でもそのシートが左端ならOKで、、、って何が何だか状態必至。
似たようなコードなのに挙動は全く変わってくるので混乱せずにはいられないですよね。
まさにぼくは長年に亘り「Worksheets(1)」と「Sheet1」の立ち位置の違いを理解できず混乱し続けていました。
それがCodeNameの存在を知って、一気に解決することになったのです。
そうです。「Sheet1」はCodeNameそのものだったのです。
VBEで「Sheet1」シートのプロパティを見れは一目瞭然。
「ぼく」シートのCodeName(=オブジェクト名)は「Sheet1」になっていますよね。
Sheet1.Select
はCodeNameを使ってワークシートを選択することに他ならないのですね。
試しに「Sheet1」を違う文字に書き換えてみください。
その状態で
Sheet1.Select
とやると、そんなできるかぼけぇ、ってエクセルに怒られますよね。
エクセルのシートをデータベースのテーブルとして扱うとめちゃくちゃ簡単にデータを加工できる!|エクセルVBA
エクセルで表データを扱うときに、その表をデータベースのテーブルとして扱うとものすっごぉぉっく簡単に扱えるようになります。
データ追加編はこちら! yt4u.hatenablog.com
例えばこういった住所録があったとします。
(住所録はなんちゃって個人情報で生成したダミーデータです。)
このなかの「性別」「年齢」「婚姻」を使って、データを抽出するとします。
例えばこうです。
- 性別=男性
- 年齢=30歳以上50歳未満
- 婚姻=未婚
このすべての条件を満たすデータを抽出して、別シートにその結果を出力する。
これをVBAを使って行う場合、どのような方法が考えられるか?
- エクセルのデータベース関数を使う
- シート上の表データを一行ずつチェックして指定条件に該当するデータを別シートに転記する
- シート上の表データにオートフィルタを掛け、オートフィルタを操作することで指定条件に該当するデータを抽出し、別シートにコピーする
- シート上の表データをデータベースのテーブルと見なして、指定条件を踏まえたSQLを実行しレコードセットを別シートに出力する
このエントリーのタイトルの通り今回のテーマは4です。
なので4のやり方を詳しく見ていくことになるのですが、その他の手段に関するメリット・デメリットに触れておきます。
1は正直ぼくはやったことがありません(汗
如何せんデータベース関数のヘルプを見るとすごく分かりにくい。
関数を使う前にヘルプで挫折しちゃいます。結果使ったことがないんです。
ひとつ言えることは、データベース関数の使い方を覚えるくらいなら、4の方法を覚えてしまった方が何倍も幸せです。
次に、簡単に2、3でどうやるかに触れるならば、
2は単純に「For~Next」で各行の抽出対象列の値をチェックしていくことになるでしょうし、3は抽出対象列でAutofilter Field:=aaa, Criteria1:="bbb"」といったようにフィルタを実行していくことになると思います。
2、3だダメというわけではなく、目的は十分に果たせますので問題ありません。ただ、抽出条件をアレコレ変えたりする際に煩わしさを感じることになると思います。
一方で4の場合そういった煩わしさがありません。
その煩わしさはないのですが事前準備がちょっと必要です。
それはエクセルをデータベースとして扱えるようにするための準備です。
エクセルをデータベースとして扱うための準備
最初に示した住所録を持つエクセルのブックにADO接続をします。
ADOとは何ぞ?はWikipediaあるいはMicrosoftへGo!!(上手く説明できないので他人任せ!)
で、接続するためのコードはコチラ。
Public Function GetXLSConnection(DataSource As String) As Object Dim objCN As Object Dim strCNString As String 'レイトバインディング Set objCN = CreateObject("ADODB.Connection") '接続文字列 strCNString = "Provider=Microsoft.ACE.OLEDB.12.0;" _ & "Data Source=" & DataSource & ";" _ '接続 objCN.Open strCNString '接続を返す Set GetXLSConnection = objCN End Function
これでエクセルのブックにADO接続を行う準備が出来ました。
実際に接続(コネクションを確立)するサンプルは次のようになります。
Public Sub コネクションサンプル() Dim objCN As Object '接続を取得 Set objCN = GetXLSConnection(ThisWorkbook.FullName) End Sub
レコードセットを取得
次に抽出条件を書いたSQLを実行し、その結果であるデータの塊(レコードセット)を受け取る準備をします。
そのコードがコチラ
Private Const adOpenDynamic As Long = 2 Private Const adLockOptimistic As Long = 3 Private mstrErrDescription As String '========================================================== 'GetRecordset '========================================================== Public Function getRecordset( _ ByRef objCN As Object, _ ByVal strSQL As String, _ ByRef objRS As Object _ ) As Boolean getRecordset = False On Error GoTo ERR_PROC Set objRS = CreateObject("ADODB.Recordset") objRS.Open strSQL, objCN, adOpenDynamic, adLockOptimistic getRecordset = True GoTo END_PROC ERR_PROC: MsgBox mstrErrDescription END_PROC: End Function
引数として受け取ったデータベースコネクションの下、SQLを実行し、引数のobjRSにレコードセットを格納しています。
コネクションとレコードセットを破棄することも忘れずに
忘れたからといって自分ひとりで使う分には何ら問題はありませんが、複数人で使うことになった場合に何かしら不具合が生じる可能性があります。
共有ブックを複数人で弄ると不具合が発生するのに似ていますね。
コネクションの破棄とレコードセットの破棄のコードはこうです。
'========================================================== 'コネクション破棄 '========================================================== Public Sub CloseConnection(objCN As Object) '接続された状態であるならば If objCN.State <> adStateClosed Then objCN.Close End If Set objCN = Nothing End Sub '========================================================== 'レコードセット破棄 '========================================================== Public Sub CloseRecordSet(objRS As Object) If objRS.State <> adStateClosed Then objRS.Close End If Set objRS = Nothing End Sub
ここまでで、ブックへの接続とレコードセットを生成する準備、そしてその接続(コネクション)とレコードセットを破棄する準備が整いました。
次に、実際にデータの抽出となります。
データを抽出してみよう!
まずはデータ抽出のコードを示します。 前提として、最初に載せたシート上の表に、セルの名前の定義で「rngXDB_DataBase」と名付けています。 そして抽出したデータを出力するシートのCodeNameを「wsXLSDataBase」、またそのシート上のデータを出力する一番左上のセルを「rngXDB_DataTop」を名付けています。
'========================================================== 'データ取得サンプル '========================================================== Public Sub GetDataSample() Dim objCN As Object Dim objRS As Object Dim strSQL As String Dim lngF As Long 'コネクションを確立 Set objCN = GetXLSConnection(ThisWorkbook.FullName) '抽出条件を作成 strSQL = "SELECT" '抽出フィールド(項目)を指定 strSQL = strSQL & " [名前]" strSQL = strSQL & ", [ふりがな]" strSQL = strSQL & ", [電話番号]" strSQL = strSQL & ", MONTH([誕生日]) AS [誕生月]" strSQL = strSQL & " FROM " & mcDataRangeName 'データテーブルを指定 strSQL = strSQL & " WHERE 1 = 1" '抽出条件 strSQL = strSQL & " AND [性別] = '男'" '性別=男 strSQL = strSQL & " AND [年齢] >= 30" '年齢=30歳以上 strSQL = strSQL & " AND [年齢] < 50" '50歳未満 strSQL = strSQL & " AND [婚姻] = '未婚'" '婚姻=未婚 '抽出実行 If getRecordset(objCN, strSQL, objRS) = False Then GoTo ERR_PROC End If '抽出結果を出力 With wsXLSDataBase With .Range("rngXDB_DataTop") '出力エリアにある既存データを消去 .CurrentRegion.ClearContents 'フィールド(項目)名を出力 For lngF = 0 To objRS.Fields.Count - 1 .Offset(, lngF).Value = objRS.Fields(lngF).Name Next lngF 'データを出力 .Offset(1).CopyFromRecordset objRS End With End With GoTo END_PROC ERR_PROC: MsgBox mstrErrDescription END_PROC: 'レコードセットを閉じる Call CloseRecordSet(objRS) 'コネクションを閉じる Call CloseConnection(objCN) End Sub
上から順を追って見てみると、
- データベースと見立てたエクセルブックへのコネクションを確立する
- データ抽出条件を書く
- データ抽出を実行し、レコードセットをゲット
- 抽出したデータを出力する場所を綺麗にする
- レコードセットのフィールド名をまずは書き出し
- レコード群を一気に出力する
- 最後にレコードセットとコネクションを破棄
という流れになっています。
抽出条件を変える場合は2のところ(SQL文)を書き換えればOK。 抽出条件の値をセルから拾ってくるようにすれば、非常に簡単に好きなようにデータを取ってこれるようになります。
改めてコード全文を示します。
Option Explicit Private Const adOpenDynamic As Long = 2 Private Const adLockOptimistic As Long = 3 Private Const adStateClosed As Long = 0 Private mstrErrDescription As String Private Const mcDataRangeName As String = "rngXDB_DataBase" '========================================================== 'コネクションを返す '========================================================== Public Function GetXLSConnection(DataSource As String) As Object Dim objCN As Object Dim strCNString As String Set objCN = CreateObject("ADODB.Connection") strCNString = "Provider=Microsoft.ACE.OLEDB.12.0;" _ & "Data Source=" & DataSource & ";" _ objCN.Open strCNString Set GetXLSConnection = objCN End Function '========================================================== 'GetRecordset '========================================================== Public Function getRecordset( _ ByRef objCN As Object, _ ByVal strSQL As String, _ ByRef objRS As Object _ ) As Boolean getRecordset = False On Error GoTo ERR_PROC Set objRS = CreateObject("ADODB.Recordset") objRS.Open strSQL, objCN, adOpenDynamic, adLockOptimistic getRecordset = True GoTo END_PROC ERR_PROC: mstrErrDescription = "レコードセット生成エラー" END_PROC: End Function '========================================================== 'コネクション破棄 '========================================================== Public Sub CloseConnection(objCN As Object) If objCN.State <> adStateClosed Then objCN.Close End If Set objCN = Nothing End Sub '========================================================== 'レコードセット破棄 '========================================================== Public Sub CloseRecordSet(objRS As Object) If objRS.State <> adStateClosed Then objRS.Close End If Set objRS = Nothing End Sub '========================================================== 'データ取得サンプル '========================================================== Public Sub GetDataSample() Dim objCN As Object Dim objRS As Object Dim strSQL As String Dim lngF As Long 'コネクションを確立 Set objCN = GetXLSConnection(ThisWorkbook.FullName) '抽出条件を作成 strSQL = "SELECT" '抽出フィールド(項目)を指定 strSQL = strSQL & " [名前]" strSQL = strSQL & ", [ふりがな]" strSQL = strSQL & ", [電話番号]" strSQL = strSQL & ", MONTH([誕生日]) AS [誕生月]" strSQL = strSQL & " FROM " & mcDataRangeName 'データテーブルを指定 strSQL = strSQL & " WHERE 1 = 1" '抽出条件 strSQL = strSQL & " AND [性別] = '男'" '性別=男 strSQL = strSQL & " AND [年齢] >= 30" '年齢=30歳以上 strSQL = strSQL & " AND [年齢] < 50" '50歳未満 strSQL = strSQL & " AND [婚姻] = '未婚'" '婚姻=未婚 '抽出実行 If getRecordset(objCN, strSQL, objRS) = False Then GoTo ERR_PROC End If '抽出結果を出力 With wsXLSDataBase With .Range("rngXDB_DataTop") '出力エリアにある既存データを消去 .CurrentRegion.ClearContents 'フィールド(項目)名を出力 For lngF = 0 To objRS.Fields.Count - 1 .Offset(, lngF).Value = objRS.Fields(lngF).Name Next lngF 'データを出力 .Offset(1).CopyFromRecordset objRS End With End With GoTo END_PROC ERR_PROC: MsgBox mstrErrDescription END_PROC: 'レコードセットを閉じる Call CloseRecordSet(objRS) 'コネクションを閉じる Call CloseConnection(objCN) End Sub
データベース関連のコードはいつでも使えるようにスタンバイ
上記のデータベース関係のコード(コネクション確立、レコードセット取得、およびそれらの破棄)は一度用意しておけばいくらでも使い回しが出来ます。
使いたいときにコードを対象ブックの標準モジュールにコピペするでもいいですし、一連のコードをクラスにひとまとめにして、そのクラスをインポートすればいつでも使えるようにするでもいいと思います(クラス化については別機会に書きます)。
[2019/03/10追記]
エクセルデータベースにSQLを使ってデータを追加します!
[2018/12/19追記]
データベースで使われるレコードセット・オブジェクトを配列の代わりに使っちゃいます!
[2018/02/10追記]
データベース処理用のクラスについてはこちらもご参照ください。
もはや試食の域を超えている!藤堂プランニングのケーキは試食もすごいが美味しさも抜群!!
清澄白河にある藤堂プランニングに行ってきました。
少し前にはテレビなどのメディアで取り上げられていて結構な行列になっていたみたいですね。
正直言うとぼくは藤堂プランニングの存在を全く知りませんでした。
そんな中、ヨメが友達から聞きつけてきてきたわけです。
曰く、ホテルにケーキを卸しているケーキ工場で、美味しいのは当然ながら、店頭でこれでもかというくらい試食させてくれるそうな。
そりゃー行かないわけにはいかないですよね。
で、場所はコチラ。
最寄駅の清澄白河からは徒歩6分ほどの距離。清澄庭園にほど近く、寺院が立ち並ぶエリアの東端に位置します。それもかなりひっそりと。
当日、ぼくは自転車で藤堂プランニングに向かったのですが、通りから少し路地に入ることもあり、かつ全く目立たないところにあるので、軽く迷子になっちゃいました(汗
で、店頭の様子がコチラ。
これまた結構殺風景です。周りに住宅に溶け込んでいて、看板がなければ間違いなく見逃してしまいます。
看板の奥に少し進むと工場への出入り口があります。
ぼくが行ったときは丁度ほかのお客さんがいませんでした。藤堂プランニングでの作法が全く分からない中、いきなり工場出入り口に辿り着き、流石に工場に入っていくわけにもいかず、どこに進めばいいのか分からなくなってしまいました。
軽く右往左往し始めたところで、工場の奥から若い人が登場。
そしていきなりティッシュをシュっと一枚手渡され「何にします?」のひとこと。
ぽっかーんです。
いきなりティッシュ差し出して何を言うんだこの人は状態てす。
ウワサに聞く試食の大盤振る舞いだと気づくのに数秒要しましたよ。
そこからは試食を堪能です。
ヨメと子どもの3人で行ったので、各々3個、都合9個のケーキを試食。
感動巻き起こる系の美味しさ、とまでは行かないかな。
例えるなら、ブュッフェで出てくるケーキとかスーパーとかで売られてるケーキくらいの美味しさです。
藤堂プランニングの醍醐味は、試食でここまで食べていいの!?という驚き、ということに尽きますね。
こういう驚きって不思議ですね。
記憶に鮮明に残っていて、このエントリーを書いてるうちにまた行きたくなってきました(汗
Amazonプライム会員にならない理由がない!
Amazonプライム会員が如何に素晴らしいか?
それは、至るところで叫ばれているのを目にしていたものの、敢えて利用する必要もなさそうだなぁ、って深く考えることもなく月日が経っておりました。
で、これまた深く考えることなく、何となーく利用し始めてみたら、これが非常にめちゃくちゃ良いっ!!
ということで、Amazonプライム会員のメリットについてまとめてみたいと思います。
詳細は後述するとして、Amazonプライム会員のメリットを挙げるならばコレです。
- プライム・ビデオが見放題。しかも見切れないほどのタイトル数がある
- プライム・ミュージックが聞き放題。BGMが欲しい時には持ってこい
- プライム・ナウが超便利。買い物に行く手間暇を省くことが出来て費用対効果高し
- アマゾン謹製のfireタブレットを4,000円引きで入手可能
- タイムセールに非会員に30分先行して参加できる
これでけの恩恵を享受できて年会費3,900円(税込)。月あたり325円ですから、牛丼一食食べるよりも、スタバでドリンク頼むよりも安いっ!
ということで、ちょっと細かく見ていきましょうか!
プライム・ビデオが充実っぷりがすごい!
充実し過ぎて、どのビデオを見るかで悩みます。
メジャーどころの海外ドラマや映画はもちろん見放題。
例えば、こういったタイトルです。
日本のドラマもしっかりカバーしています。
とはいえテレビで放送されて間もないようなドラマは流石に追加料金ナシで見ることは叶いません。
こういったものもレンタル、あるいは購入といった形でいつでも見ることが可能です。
それぞれの料金は、そのタイトルによってまちまちなので都度確認が必要です。
小さい子どもがいる身としては日本のアニメが見れるのが非常にありがたいですね。
自分が小さいときに見ていたアニメがまた見れるってのも感慨深いものがあります。
ただ、動画配信サービスはプライム・ビデオ以外にもNetflix、hulu、U-NEXT、ドコモdTVなどがあって、コンテンツの内容は結構似たり寄ったりなのも事実。
それでも差別化を図るべく各々特徴を持っており、それを簡単にまとめるとこんな感じではないでしょうか。
動画配信サービスの特徴
Netflix
- Netflixでしか見れないドラマがあり、しかもそこらの民放ドラマより面白い
- 月額950円
Hulu
- 海外ドラマが充実
- 月額933円
U-NEXT
- 大人向けコンテンツや雑誌読み放題がある
- 月額1,990円(うち1,000円分は動画購入・レンタル用ポイントとして使える)
dTV
- 安くて国内ドラマが充実
- 月額500円
プライム・ビデオで必要十分
ただ、子ども(未就学児)が居ると、どうしても動画を見るタイミングはなかなかないものです。夜見ようものなから子どもも一緒に見始めてしまうので、子どもの寝る時間に差し障りが出ちゃいますし、あるいは子どもをそっちのけにして動画を見ていようものなら嫁の冷たい目線が突き刺さってきます(汗
だから、すばらしい動画配信サービスがあってても、その良いところを堪能するような使い方はなかなか出来ません。
結局、どの動画配信サービスを使っても大差がない、ということになります。
それであれば、動画配信に留まらず様々なサービスを受けられるAmazonプライム会員が非常におトクなわけです。
子どもがいるという観点だと、プライム・ビデオもアニメなどの子ども向け動画が充実しています。取り揃えるアニメの総本数でいえば他の動画配信サービスの方が多いかもしれません。でも、アニメがいくら多くても全て見ることはまずないですよね。子どもに見せても問題ないと思えるアニメは、どの動画配信サービスでも同程度に取り揃えられているので、プライム・ビデオで十分!
しかも最近、プライム・ビデオはオリジナルコンテンツが充実し始めています。例えば、福家堂本舗やドキュメンタル(これホントオモシロイ!!)など。こうしたコンテンツがより増えていくとますますプライム・ビデオから離れられなくなってしまいますね。
プライム・ミュージックもいい。だけどさらなる発展に期待!
プライム・ミュージックもAmazonプライム会員なら100万曲以上の楽曲や数百のプレイリスト、そしてプライムラジオが聴き放題。これまたAmazonプライム会員冥利に尽きます。
ただ、敢えて言わせてもらうともう少し楽曲が充実してくれると嬉しいかなぁ。
ぼくはAmazonプライム会員になる前からGoogle Play Music を使っているのですが、楽曲の充実度で言えばGoogle Play Music の方が上。
例えば、プライム・ミュージック の「プレイリスト」、Google Play Music では「ステーション」と言われる、あるテーマに基づいた楽曲の集まりの種類の豊富さ、それに含まれる楽曲の数、いずれにおいてもGoolge Play Music に軍配が上がります。
日用品の急な入用にも対応可能!プライム・ナウが超絶便利!!
あっ!アレがない!!
友だちや親しい人を自宅に招いた時に限って、あると思っていたものがなかったりするんですよね。
そんな時もプライム・ナウがあれば、あっという間に届けてくれます。
特別な日に限らずとも普段の生活の中でもプライム・ナウは非常に便利です。特に雨の日や寒い日、暑い日など、ちょっと外に出るのが億劫な時だったり、熱が出て身動きが取れない時にも注文すればすぐに届けてくれるので非常に心強いです。
ちょっと注意が必要なのは、注文は合計2,500円以上から出来るということ、1時間以内に届けてもらうためには890円のオプション料が必要になります。1時間に拘らなければ2時間便が無料で使えます。
HUAWEI P9 の液晶保護フィルムはどれにすればいいの?
HUAWEI honor8 の液晶保護フィルムを探してみましたが100%満足のいくものは見つかりませんでした。そのあたりはコチラのエントリーをご参照ください。
液晶保護フィルムは液晶の湾曲部をカバーしない構造が基本形となっています。一方で、湾曲部のカバーを試みるフィルムは該当部位のフィルム浮きという憂き目にあっています。
これはある意味2.5D液晶の宿命なのかもしれません。
その中で、honor8の兄弟分にして同じ2.5D液晶を持つ HUAWEI P9 の液晶保護フィルム事情がどんなものなのか気になったで確認してみました。
P9の液晶保護フィルムはこの3択になりそう
いろいろと探していった中で、最も最適だとぼくが思ったのはコレです。
硬度9Hのガラスフィルムです。
アマゾンのレビューを見ると、このフィルムの販売元であるGTO CO., LTD.が扱ってる他スマホのフィルムのレビューも混ざっているのでP9用に関するレビューを抽出するのは困難です。
とはいえ、それらレビューを見ると総じて高評価。何よりこの販売元の対応の良さを称えるレビューが目立ちます。
この低価格で販売して尚且つユーザーからの問い合わせに対して真摯に対応するスタンスが評価できます。実際手元に来たフィルムが期待に沿うものでなかったとしても値段も含めて諦めがつくのではないでしょうか。
敢えてケチをつけるならば国産強化ガラスと「国産」を売りにしようとしているところです。
HUAWEIスマホを持つ人は、もはや「国産」に対する拘りなんてないですからね(笑
そもそも「国産」が良いという考え自体が考えものです。
次の候補に挙がるのはこのフィルムです。
こちらも硬度9Hのガラスフィルムです。
商品ページを見ていただけば分かるとおり、最初から2.5D非対応を明言。液晶の湾曲部をカバーしないので液晶の左右に隙間ができることをキッチリと説明しています。
この潔さも含めて2番目の候補としました。
もうひとつ候補を挙げるとすればこのフィルムです。
HUAWEI P9液晶フィルム HUAWEI P9 強化ガラスフィルム ファーウェイ P9 保護フィルム 0.26mm 硬度9H 指紋防止 飛散防止
- ジャンル: TV・オーディオ・カメラ > スマートフォン > スマートフォンアクセサリー > 保護フィルム
- ショップ: スマホサービス
- 価格: 1,080円
こちらも硬度9Hのガラスフィルムです。
商品説明文を見ると「ラウンドエッジ加工」とありますので、2.5D液晶に対応してすべてをカバーしてくれそうな期待を持てますが、レビューを見る限りだとやはり液晶左右に隙間があるようです。やはり2.5D液晶をすべてカバーしてれるフィルムはないものと思った方がいいのかもしれません。
このフィルムに対する評価が分かれていますが非常に低価格なので、たとえ失敗しても諦めがつくものになっています。
P9の液晶保護フィルムも本命不在
honor8の液晶保護フィルムは本命不在だと結論に至ったところから、その兄弟分にあたるP9(P9の方がお兄さんということになりそうです)の液晶保護フィルム事情を調査してみました。
結果、P9の液晶保護フィルムも本命不在と言えそうです。
となると、そもそもスマホの液晶は湾曲させる必要なし!スマホデザイナーよ、液晶はフラットにせよ!!ということになりますね。
スマホの背面はエッジが湾曲していることで持ち易さや手に馴染む感覚はあります。それは認めます。
でも、前面の液晶部のエッジが湾曲するメリットって何なのでしょうか?作り手の技術力の誇示なのでしょうか。何なのかは分かりませんが、おかげで液晶保護フィルムを探す流浪の旅はまだまだ続きそうです。