MENU

エクセルVBA(3)ユーザーフォームのグリッド間隔はややこしい

エクセルでユーザーフォームをデザインするとき、グリッドの設定とデザイン画面のドット間隔が微妙に違うので調べてみました。 グリッドの設定はVBEの[ツール]→[オプション]で表示されるダイアログの[全般]タグの[グリッドの設定]で行います。初期値…

【VBAの基礎】Emptyの分かりにくさ

VBAの "Empty" について、なぜ分かりにくいのか、ちょっと考えてみました。 1.Emptyとは VBAのデータ型の1つにVariant型があります。Variant型は宣言するとき中身を指定する必要 がないので、厳しい型宣言を好む人によっては厄介なデータ型です。 Emptyは…

記事一覧

訪問ありがとうございます。ブログの作法を知らないまま不定期に書いていましたが「記事一覧がない」ことに気がつき大慌てで作りました。リンク先からこのページに戻るときは画面左上の[記事一覧へ]をクリックしてください ■ ノーコード APPSheet 日付の表…

【VB】ペントミノ3Dパズルを解く(9)終わりに

この連載をお読みいただきありがとうございました。 3Dは2D版を拡張すれば簡単にできるだろうとタカをくくっていましたが、前述のように鏡映の判断に手間取りなかなか納得のいく状態になりませんでした。ここで紹介した方法以外にいい方法があれば、ぜひ…

【VB】ペントミノ3Dパズルを解く(8)フォームのコード

Form1 のコードを説明します。鏡映の判定を追加した部分が2D版と大きく異なります。 ・クラス宣言 IDEのソリューションエクスプローラで Form1 を右クリックして "コードの表示" で自動表示されるので気にも留めませんが、クラスの名前は "Form1" です。 P…

【VB】ペントミノ3Dパズルを解く(7)フォームのデザイン

フォームは「ペントミノソルバー2D」をそのままコピーし、ラジオボタンを変更します。フォーム全体のプロパティは次のとおりです。 プロパティ 値 Name Form1 Size 390, 580 StartPosition CenterScreen Text ペントミノソルバー3D フォームのサイズはキ…

【VB】ペントミノ3Dパズルを解く(6)DEFクラスを作る

このクラスはプログラムの鑑です。プログラムIDや作成日などのプログラム諸元や共有で使用する定数や関数などをまとめて記述しておくクラスです。クラス名の "DEF" は定義(define)から採っています。 ・クラス宣言 クラスの名前は "DEF" です。 Public C…

【VB】ペントミノ3Dパズルを解く(5)箱クラスを作る

箱クラスは箱内の空いているセルに部品が置けるかどうかを判定したり、現在おいている部品と座標位置を登録して完成判断に使用します。 ・クラス宣言 クラスの名前は "Box" です。 Public Class Box ・プロパティ:LenX, LenY, LenZ 箱の大きさ。初期化時に…

【VB】ペントミノ3Dパズルを解く(4)棚クラスを作る

今回は棚クラスです。棚は全部で12作り、1つの棚に1種類の部品を登録します。登録する部品は回転や裏返しをしたものをあらかじめ用意しておきます。例えば部品"T"の棚には向きの違う12個の部品"T"を登録します。 部品"F"の場合は部品の形状が非対称なので…

【VB】ペントミノ3Dパズルを解く(3)部品クラスを作る

今回は部品クラスを作ります。その前にペントミノを簡単な文字列で表現する方法について説明します(平面版ペントミノ2Dのときにも使いました)。 図の折れ線矢印は起点から上下左右に図形を一筆書きのようにたどります。1マスの移動を アルファベット1…

【VB】ペントミノ3Dパズルを解く(2)座標クラスを作る

前回はクラスの概要の説明でした。今回はさっそくクラスの作成に取り掛かります。Visual Studio で空白のプロジェクトを用意してください。 プロジェクトの名前は "ペントミノソルバー3D" です。 最初は「Coordクラス」、3次元の空間にある点を表す座標ク…

【VB】ペントミノ3Dパズルを解く(1)はじめに

ペントミノパズルの3D版ソルバーです。2D版を作ったあと3D版は簡単に作れると思っていましたが、鏡映の判断に時間がかかってしまいました。 パズルのルールは単純です。ペントミノ2Dの各ピースを立体にしたものを直方体に箱詰めするものです。直方体…

【C#】ペントミノ2Dパズルを解く(9)終わりに

この連載をお読みいただきありがとうございました。 このプログラムはVB版をC#にマイグレーションしたものですが、実は筆者にはC#の経験はほとんどありませんでした。VBの方はかなり詳しいつもりですが、C#など中括弧のある言語は苦手でした。今回のマイグレ…

【C#】ペントミノ2Dパズルを解く(8)フォームのコード

やっと Form1 のコードです。C#のフォームはVB.Netのフォームとほぼ一緒ですが、イベントの記述は若干の違いがあるため「慣れ」が必要です。 ・クラス宣言 IDEのソリューションエクスプローラで Form1 を右クリックして "コードの表示" で自動表示されるので…

【C#】ペントミノ2Dパズルを解く(7)フォームのデザイン

この連載も7回目になりました。いままではプログラムの部品であるクラスををつくってきました。フォームについては新規プロジェクトを作ったあと、そのままになっていると思います。今回はデフォルトで作られた Form1 にコントロールを登録していきます。 …

【C#】ペントミノ2Dパズルを解く(6)DEFクラスを作る

このクラスはプログラムの表紙(鑑)です。プログラムIDや作成日などのプログラム諸元や共有で使用する定数や関数などをまとめて記述しておくクラスです。クラス名の "DEF" は定義(define)から採っています。 ・クラス宣言 クラスの名前は "DEF" です。 …

【C#】ペントミノ2Dパズルを解く(5)ボードクラスを作る

いよいよボードクラスです。マス目の空いている場所に部品が置けるかどうかを判定したり、配置データをこのクラスで管理します。 ・クラス宣言 クラスの名前は "Board" です。 internal class Board ・プロパティ:Cells( , ) ボードのマス目(値は Boolean…

【C#】ペントミノ2Dパズルを解く(4)棚クラスを作る

今回は棚クラスです。クラスの概要はこの連載の「(1)はじめに」を参考にしてください。 ・クラス宣言 クラスの名前は "Shelf" です。 internal class Shelf ・プロパティ:名前 Name 棚の名前です。中に入れる部品の名前をそのまま使います。解の表示で使…

【C#】ペントミノ2Dパズルを解く(3)部品クラスを作る

今回は部品クラスを作ります。その前にペントミノを簡単な文字列で表現する方法について説明します。 図の折れ線矢印は起点から上下左右に図形を一筆書きのようにたどります。1マスの移動を アルファベット1文字("U", "D", "L", "R")で表します。それぞ…

【C#】ペントミノ2Dパズルを解く(2)座標クラスを作る

前回はクラスの概要の説明でした。今回はさっそくクラスの作成に取り掛かります。Visual Studio でC#の新規プロジェクトを用意してください。 プロジェクトの名前は "ペントミノソルバー2D" です。 最初は「Coordクラス」、2次元の平面にある点を表す座標…

【C#】ペントミノ2Dパズルを解く(1)はじめに

「ペントミノ2Dパズルを解く」のVB版をC#にマイグレーションしました。VBとC#はともにWindowsデスクトップアプリの開発言語ですが、残念ながらVBの人気は下がり気味です。個人的には使い慣れたVBにこれからも頑張ってほしいです。 ペントミノをご存じです…

【VB】ペントミノ2Dパズルを解く(9)終わりに

この連載をお読みいただきありがとうございました。 最後にこのプログラムのメーキングをどうぞ。 ・名前は大切 "Shelf" は最初 "Bag" としていました。以後 "Bag" → "Tray" → "Pocket" → "Shelf" と4度も名前を変えて最終的に「棚」で落ち着きました。部品…

【VB】ペントミノ2Dパズルを解く(8)フォームのコード

やっと Form1 のコードです。VB.Net はコントロールやイベントを他の言語に比べて簡単に使えます。呪文のような "FindViewById" とも無縁なところが筆者は気に入っています。 ・クラス宣言 IDEのソリューションエクスプローラで Form1 を右クリックして "コ…

【VB】ペントミノ2Dパズルを解く(7)フォームのデザイン

この連載も7回目になりました。いままではプログラムの部品であるクラスををつくってきました。フォームについては新規プロジェクトを作ったあと、そのままになっていると思います。今回はデフォルトで作られた Form1 にコントロールを登録していきます。 …

【VB】ペントミノ2Dパズルを解く(6)DEFクラスを作る

このクラスはプログラムの表紙(鑑)です。プログラムIDや作成日などのプログラム諸元や共有で使用する定数や関数などをまとめて記述しておくクラスです。クラス名の "DEF" は定義(define)から採っています。 ・クラス宣言 クラスの名前は "DEF" です。 …

【VB】ペントミノ2Dパズルを解く(5)ボードクラスを作る

いよいよボードクラスです。マス目の空いている場所に部品が置けるかどうかを判定したり、配置データをこのクラスで管理します。 ・クラス宣言 クラスの名前は "Board" です。 Public Class Board ・プロパティ:Width, Height ボードの幅と縦。初期化時に設…

【VB】ペントミノ2Dパズルを解く(4)棚クラスを作る

今回は棚クラスです。クラスの概要はこの連載の「(1)はじめに」を参考にしてください。 ・クラス宣言 クラスの名前は "Shelf" です。 Public Class Shelf ・プロパティ:名前 Name 棚の名前です。中に入れる部品の名前をそのまま使います。解の表示で使用…

【VB】ペントミノ2Dパズルを解く(3)部品クラスを作る

今回は部品クラスを作ります。その前にペントミノを簡単な文字列で表現する方法について説明します。 図の折れ線矢印は起点から上下左右に図形を一筆書きのようにたどります。1マスの移動を アルファベット1文字("U", "D", "L", "R")で表します。それぞ…

【VB】ペントミノ2Dパズルを解く(2)座標クラスを作る

前回はクラスの概要の説明でした。今回はさっそくクラスの作成に取り掛かります。Visual Studio で空白のプロジェクトを用意してください。 プロジェクトの名前は "ペントミノソルバー2D" です。 最初は「Coordクラス」、2次元の平面にある点を表す座標ク…

【VB】ペントミノ2Dパズルを解く(1)はじめに

ペントミノをご存じですか?正方形を5個つないだものをペントミノといい、正方形のつなぎ方の違いで全部で12種類あります。ウィキペディアによるとそれぞれのピースにはその形状をイメージしたアルファベット1文字の名前がついています。 これらのすべてを1…