【ExcelVBA】マクロでセル結合・解除

使うと便利、セル結合。 でも、VBAや関数を駆使するする人にとっては、鬼門のセル結合。 セル結合については、賛否両論で正直悩ましい処理なんです。 でも… 表の見た目を作るのに便利と言う事で、活用する機会が多いかと思います。 ただ、シートの保護を使うとセル結合が使えなくなります。 シートの保護中に使えるようにしたいんですが、 設定項目にも無くて、手動では設定できない。 となればマクロで組めるのかって事なんですが、 できます! ただし!ロックしているセルでも結合ができてしまいます。 この辺りをクリアしないと、セル結合を使うのは危険なわけです。 なので、ロックセルを結合をさせない設定を踏まえながら説明しようと思います。 まず、前回作ったシートの保護機能プロシージャを呼び出します。 VisualBasicを開いて、標準モジュールで組んだので、Module1を開きます。 シート保護機能 Sub シート保護機能() Const cellName As String = "J1" Const protection As String = "保 護 中" Const notProtect As String = "解 除 中" Const yellow As Integer = 27 Const green As Integer = 43 Const pass As String = "…

続きを読む

【ExcelVBA】マクロでシートの保護・解除

前回、ボタンの使い方について記事にしたのですが、 実際、ボタンを使ってどんな処理ができるか作ってみようと思います。 今回は、タイトルにも書いたシートの保護を作ってみたいと思います。 シートの保護って、使った事があるでしょうか? 関数を組んでる方なら使った事があるんじゃないでしょうか。 セルに入力を行うと以前の値が上書きされてしまいます。 この事は、Excelを触った方なら当然知っておられると思います。 関数は、セルに書き込む事でセル上の計算を自動に行ってくれる、 Excelの機能で便利なんですが、問題があります。 関数をセルに書き込むって事は、 上書きされると、関数が消えてしまう事になります。 関数を設定してるシートなんかは、消えてもらうとこまるので、 そのセルにロックを掛ける必要があります。 セルをロックする為には、シートの保護機能を使う事になるんですが… シートの保護は設定が面倒なんですよね~ (T-T) グスッ また、かけ忘れも良く起こります。 なので、ボタン一つで保護・解除ができると、すごく楽になるかと思うんですよね。 その辺を踏まえて、セルのロックからシートの保護までを説明していこうと思います。 使用するExcelは、Excel365になります。 シートの保護 ざっくりした表で申し訳ないんですが、 赤枠に売り上げ計算の関数が組み込まれています。 入力は売上個数入力に行うと自動的に売り上…

続きを読む

【ExcelVBA】マクロって何から始めたらいいの?

Unityでゲーム作りの勉強をしているケロと言います。 普段は、Unityで作れた物を記事にしています。 機会があって、VBAを触っていたので、 少しの間、VBA初心者ながら作れたものを記事にしていこうと思っています。 ただ、VBA初心者と言う事でコーディングがヘタクソです。 正直、その辺りは生温かく見守って頂けるとうれしいでっす。m(_ _)m 前置きは、これくらいにして本題に入って行こうと思います。 プログラムには無縁、表計算だけExcelを使ってる でもマクロも覚えたい。 正直、何から始めればいいか分かんないですよね。 ケロも昔、覚えたいって思っていましたが、 何から始めればいいの?となりました。 とりあえず本を買って勉強しようと考えたんですが、 本を開くと、いきなりプロシージャがどうとか、オブジェクトがどうとか… 見るだけで、無理!ってなって勉強しなかった事を覚えています。 あれから幾年経ったことやら… 今やゲーム作りを勉強してるとは… 逸れてしまいました(;^_^A  話を戻して、 確かに概念や文法って大事なんですが、 何も知らないのにイキなりそんな事言われても分かるかよ!ってなります。 なので作りたい物を作る事から始めると、覚えるのも早いと思います。 今回は、簡単に作れて、実用性のあるボタン作りを説明します。 ちなみにコード(プログラム)の部分は、マクロの記録を使います。 ボタンで何…

続きを読む

ExcelVBAをカジってみた

最近Unityを全然触れていません。 なぜかと言うとタイトルにも書いたんですが、 ExcelVBAのマクロにハマっています。 ハマってるのは、面白いってのもあるんですが、 難しい、IDEが使いにく、エラーがよくわからない。 いろいろとハマっております。(T-T) グスッ なぜ今頃VBAとなるんですが、 嫁さんが職場で、Excelテストを受けろと言われたそうで、 80点くらい取れないと講習を受けさせられる、との事でした。 初歩的な使い方から関数までのテストだそうで、 ケロは、関数が使えるので、カテキョする事になりました。( ̄ー ̄)ゞ フフッ 久々に関数をイジってると、 VBAを覚えたいな~ 以前、そんな事を思ってながら放置していたので、 折角の機会なんでVBAをイジってみる事にしました。 やり始めて、最初に戸惑ったのがIDEの違いでした。 C#だと変数入力やコマンド入力の際、コード補完されて一覧が出るのですが、 VBAは、特定のコードは補完されるのですが、基本手入力です。 変数なんか結構面倒で間違えるとエラーが掛かります。 変数一つでも文法が違うので、覚える事が山盛りでっす。(ノ_<。)うっうっうっ そんなこんなで、1週間半ほどVBAにのめり込んでいたので、 Unityはお休みしておりました。 折角、少し触れるようになったので、 次回からは、作った物を記事にしていこうと思っています。 Unityの記事を読みに来て…

続きを読む

【Unity】Rayで接触するオブジェクトを判断させる

よじ登りの処理が作れたのですが、 バグと言うか思った動作をしてくれない部分があって、 悩んでいる今日この頃なんですが… 何がおかいしかと言うと、 壁に接触した状態から登って行くと、うまくよじ登るようになったんですが、 壁に向かってジャンプして、壁に張り付く前に上端に届くと、 上手く登ってくれない状態なんです。 ( ノД`)シクシク… また、タイミングによっては、壁の上によじ登っても、 走り出さずに同じモーションを繰り返すなんて事も起こっています。 この辺りを解消しないと動きとしては問題になります。 まず、登り切った所でモーションを繰り返す原因を考えてみたのですが、 青い線がRayです。 足元のオブジェクトが、白が壁でWallレイヤー、茶色が床でFloorレイヤーとしています。 スクリプトでは、 ActionTest public LayerMask floorLayer; private bool bodyUnder; //体下Ray void Update() { SetLinecast(); //床の接触判定 if (bodyUnder) { FloorAction(); } else VerticalMotion(…

続きを読む

モニターをデュアル化してみた

今回は、Unityとは関係ない話なんで興味のない方は、 読み飛ばして下さい。 以前、ノートPCが壊れた話を書いたと思いますが、 それ以来、デスクトップで作業を行っていました。 このデスクトップは、注文品で本体のみ購入したものでして、 モニターを買うと高くつくって事で、部屋にあった液晶テレビを兼用で使っています。 意外とモニターとして使えています。 話は変わって、少し暗くなる話で申し訳ないんですが、 施設に入れていた母が、去年亡くなりました。 当然、荷物を引き上げないといけないのですが、 衣類や備品など、廃棄できる物は施設でやってくれるんですが、 家電なんかだと、こちらで処分する必要があります。 ま、家電といってもテレビだけだったので大した事なかったんですが… ただ、アクオス24インチと小さい上に、家では主要な部屋にテレビがあるので、 正直、持って帰っても使い道がないんですよね。(- .-)ヾ ポリポリ 元気に映るんで、捨てるのも…  って事で、 半年ほどPC部屋で埃を被っていました。 (;^o^) \(ToT )ツカワナイホウガモッタイナイ ケロの状況は、ここまでにして、 皆さんに伺いたいのですが、デュアルモニター使ってますでしょうか? デュアル化して分かったのですが、ホントに便利です。 まだの方は、ぜひデュアル化をおすすめします。 ケロの作業状態なんですが、 ・Unity ・VisualStud…

続きを読む

【Unity】壁をよじ登らせる

前回、壁の上端まで登った所で止める処理を作りました。 ここからは、少し手間のかかるよじ登りのモーションを作ってみます。 正直、出来がよくないので少し恥ずかしいのですが、 ま、今まで作った処理も出来がよくないので、 構わず記事にしようと思います。 (;^o^) \(ToT )あんたほんとにそれでいいの よじ登りなんですが、 壁の上端で停止 → 手を壁の縁に掛ける → Animationで登る動き と、こんな流れで簡単に作れそうです。 早速、Animationを作っていきます。 サンプルレートを10に設定して、0:1毎にモーションを作ります。 サンプルレートを10にしておくと0:1=0.1秒で計算しやすいからでっす。 アンドロイド君の白背景がColliderの範囲になります。 まず、壁の上に手を掛けないと登れないので、 Collider範囲の右側より外に手を出しておきます。 壁に張り付いている時は、手が掛けやすいのですが、 飛びついた場合は、壁とアンドロイドの距離が開くので、 手が届かない事が起こります。 なので、手を掛ける部分を0.2秒ほどキープしておいて、 壁に掛かるようにします。 これでモーションができたので、スクリプトを作ります。 ActionTest using System.Collections; using System.Collections.Generic; using UnityEngine; …

続きを読む

【Unity】壁の上端で飛び上がりを止める

あけましておめでとうございます。 本年度もよろしくお願いします。 10月くらいから処理が上手く作れなくなって、 悩みに悩んで、年を越してしまいました。 長らく休んでいると、記事の書き方を忘れてしまって、 うまく説明ができるか分かりませんが、2022年も始まったので、 心機一転、頑張って行こうと思います。 ただ、ヤル気がどこまで続くかは、分かりませんが… (°-°;)ヾ(-_- ;) シモシモ・・ 去年までの振り返りなんですが、 壁登りの処理を曲りなりにも作る事が出来ました。 ただ、壁の上端に差し掛かった所で、大きくジャンプしてしまうってのが、 気に入らないと言うか納得いかない部分でして… 上端に差し掛かった所で壁をよじ登れないかと試行錯誤していたのですが、 正直、上手く処理が作れませんでした。 何パターンか試したのですが、全然上手く行かなくて、 o(><)(;><)o ジタバタ となって、投げ出していたのが本音なんです。 (..*) オハズカシイ・・ 四苦八苦しながら、一応の処理が作れたので、 順次、記事にまとめていこうと思います。 まず壁登りなんですが、AddForceでジャンプさせています。 壁の上端近くでJumpするとAddForceなので、 壁が終わっているのに大きく飛び上がる事になります。 壁の上が広い足場なら飛び上がっても問題ないのですが、 狭い足場なら飛越えてしまい…

続きを読む

【Unity】壁の移動処理で悩む(モーション導入)

前回更新から少し時間が経ってしまったんですが、 ようやくアンドロイド君にモーション付きの壁登りが 実装できたので、記事にしてみようと思います。 なかなか思うモーションが作れなくて、 あれでもないこれでもないとAnimationと格闘しておりました。 正直、時間をかけた割には、出来栄えは酷いです。(T-T) グスッ まず、アンドロイド君を壁登りさせる為に上方向の移動処理を考えてみます。 【Unity】壁の移動処理で悩む この記事で書いた内容を応用しながら作って行こうと思います。 壁に張り付いた状態を確認する為にLinecastを設定します。 ActionTest private bool frontRay; //前方Ray //Rayの設定 private void SetLinecast() { //LineCast用座標設定 Vector2 frontP1 = transform.position + (transform.right * 1.1f); Vector2 frontP2 = transform.position + (transform.right * 1.1f) - (transform.up * 2.15f); //前方センサー frontRay = Physics2…

続きを読む

【Unity】Linecastをもう少し勉強してみた

以前、壁登りの処理を作ったのですが、 モーション付きで実装するのが難しくて、うまく処理できない。 こんな感じで停滞している毎日なんですが、 少し、おや?って事があったので、調べる事にしました。 コースとしては、高台があって壁登りで上に上がります。 上に上がったら走り出すようにしたいので、 高台はFloorレイヤー(茶色)で作成して、 登り用のWallレイヤーの壁(黒色)を左側にくっ付けて、 登り切った所でFloorレイヤーを読み取って、走り出す設定にしました。 ところが、上に着地しても走りだしのモーションが呼び出されない! なんで??となりました。 足元に張っているLinecastは、Floorレイヤーに反応するように設定しているのに… と言う事で、モデルを作って検証してみる事に。 緑のブロックをプレイヤーとして、右方向に動かします。 床面はWallとFloorの二つのレイヤーで作って様子を見ます。 using System.Collections; using System.Collections.Generic; using UnityEngine; public class LineCastTest : MonoBehaviour { private float rightOffset = 0.75f; private float downOffse = 0.76f; private Ra…

続きを読む