【ExcelVBA】時間の切り上げ、切り捨て、丸め

ボタンをいろいろと作って、マクロにも少し慣れてきたので、 新しくマクロを組んで行こうと思います。 Excelを触ってると、日付や時間を取得する場面があると思います。 日付や時間は、Date関数やNow関数で簡単に取得する事ができますが、 表示時間を5分単位や10分単位で取得して表示させたい。 こんな事を考えた事は、ないでしょうか。 数値の切り上げ、切り捨ては関数が存在していますが、 時間については、よくわかりません。(^_^;)\('_' ) オイオイ... そこで調べ倒して、自分なりに作ってみたものを 記事にしていこうと思います。 まずは数値の 切り上げ、切り捨て、四捨五入、を調べたのでまとめてみます。 ・WorksheetFunction VBAでもワークシート関数を使う事ができます。 セルに書き込む関数の事です。 ・Round   四捨五入 ・RoundUp  切り上げ ・RoundDown 切り捨て 数値の小数点を処理するのに使います。 Round(数値,桁) 四捨五入をします。 VBA関数のRoundは、偶数丸めになります。 Excelを触る方なら、銀行丸めの方が馴染みがあるかも。 WorksheetFunctionのRoundは、四捨五入を行ってくれます。 コーディングは、 ActiveSheet.WorkSheetFunction.Round(数値,桁) ActiveShe…

続きを読む

【ExcelVBA】ボタンの配置(実践編)

前回、ボタンの配置を考えるって事で、 いろいろと埋め込める事を紹介しました。 今回は実践編と言う事で、 シートの保護とセル結合を作ったbookに組み込んで行こうと思います。 今回の内容としては、 ・ボタンを各所に埋め込む ・シート保護のパスワードを自前で用意する ・シート保護忘れ防止の処理を作る この辺をまとめようと思います。 ・セル結合ボタンをタブに埋め込む もともとセル結合は、ホームタブ内の、配置グループにあるので、 マクロのセル結合もタブに設定した方が使い易いと思います。 前回記事を参考にタブに組み込んでみます。 リボンの▼から、その他のコマンドを選択してExcelのオプションを開きます。 開いたら、左メニューからリボンのユーザー設定を選択します。 コマンドの選択をマクロに切り替えて、セル結合_解除を表示します。 メインタブの項目にセル結合マクロを登録させたいのですが、 新しいタブにすると分かりにくいので、 ホーム内の、配置グループの下に、新しいグループを作成して、名前をマクロに変更します。 マクロ自体は、既存のグループに入れる事ができないので、 新しいタブか新しいグループを作る必要があります。 このグループにセル結合のマクロを追加します。 追加できたら、名前とアイコンを変更します。 追加したセル結合_解除を選択して、 名前をセル結合にして、赤枠のアイコンを設定します。 Exce…

続きを読む

【ExcelVBA】ボタンの配置を考えてみる

ボタンを使ってマクロを組んできましたが、 正直、ボタンを複数作ると操作する範囲が狭まったり、 作業のジャマになったりしますよね。 そんな事で、小技を織り交ぜながらボタン配置を考えてみたいと思います。 ・分割とウィンドウ枠の固定 一般的には、簡単で設定がしやすい方法なんですが、 作業エリアが小さくなるのが難点です。 実際に設定してみたいと思います。 こんな感じでボタンを配置した場合、 セルの下移動や横移動をさせるとボタンも消えて行きます。 操作したいセルが表示範囲より外側にある場合は、 ボタン操作できなくなります。 そこで、ボタンのエリアだけを固定して、常に表示させるようにします。 まず、ホームから表示にタブを切り替えます。 表示内にある分割のボタンを押すとグレーのグリッド線でシートが分割されます。 この分割線は、シートを4分割にするもので、 それぞれの範囲で同じシートを表示してくれるものです。 グリッド線をドラッグする事で表示範囲をエリア毎に設定する事ができます。 グリッドをドラッグしてボタンのある黄色いエリアに合わせて、 グリッドを調整します。 続いて、ウィンドウの固定をします。 分割ができたらウィンドウ枠の固定→ウィンドウ枠の固定を選択します。 これでボタンエリアのみ固定する事ができるので、 シートを下にスクロールしてもボタンを使う事ができるようになります。 簡単に設定できるのですが、作…

続きを読む

【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になります。 シートの保護 ざっくりした表で申し訳ないんですが、 赤枠に売り上げ計算の関数が組み込まれています。 入力は売上個数入力に行うと自動的に売り上…

続きを読む