スポンサーサイト
2020年12月21日
2020年12月25日
皆さんこんにちは!今晩は!!ロト君です。今回は私の備忘録も兼ねて、VB2019でよく使うBasicコードを記載したいと思います。
目次
1.フォームの天地中央揃え
初めに、フォームの天地中央揃えです。画面中央にあるとフォームが見易いですよね!
1 2 3 4 5 6 7 8 9 10 11 12 |
'フォームが存在しているディスプレイの作業領域の高さと幅を取得 Dim sc_h As Integer = System.Windows.Forms.Screen.GetWorkingArea(Me).Height Dim sc_w As Integer = System.Windows.Forms.Screen.GetWorkingArea(Me).Width Me.Location = New Point(sc_w / 2 - Me.Width / 2, sc_h / 2 - Me.Height / 2) 'フォームの最大化ボタンの表示、非表示を切り替える Me.MaximizeBox = Not Me.MaximizeBox 'フォームの最小化ボタンの表示、非表示を切り替える Me.MinimizeBox = Not Me.MinimizeBox 'フォームのサイズの固定 Me.FormBorderStyle = FormBorderStyle.FixedSingle |
2.フォームを閉じた際の挙動
フォームを閉じた際の挙動は下記のコード内に書きます。
1 2 3 4 5 |
Private Sub frm_name_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing 'ここにコードを書く End Sub |
3.起動パス
起動時のパス。ルートを格納させます。
1 |
Return System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) |
4.Access関係
4-1.データの読み込み
Accessの読み込み。
1 2 3 4 5 |
'2013以降 Public conections_str As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & GetAppPath() & "\data.mdb" '2003以前 Public conections_str As String = "Provider=Microsoft.JET.OLEDB.4.0; Data Source=" & GetAppPath() & "\data.mdb" |
4-2.データの活用
活用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 'データの整合性 ------------------------------------ If String.IsNullOrEmpty(TextBox1.Text) = True Then MsgBox("『ユーザID』", vbInformation, "ログイン不可") cadena.Close() Exit Sub End If '/データの整合性 ------------------------------------ Try cadena.ConnectionString = conections_str cadena.Open() Dim oda As New OleDbDataAdapter Dim ods As New DataSet Dim consulta As String consulta = "Select * From t_user " consulta &= "Where delflg = 0 " consulta &= "And login_id = '" & TextBox1.Text & "' " consulta &= "And password = '" & TextBox2.Text & "' " oda = New OleDbDataAdapter(consulta, cadena) ods.Tables.Add("t_user") oda.Fill(ods.Tables("t_user")) registro = ods.Tables("t_user").Rows.Count If registro = 0 Then MsgBox("『ユーザコード』『パスワード』が不適切です。", vbInformation, "ログイン不可") cadena.Close() Exit Sub End If cadena.Close() Catch ex As Exception MsgBox("接続ミスです!", vbInformation, "接続ミス") cadena.Close() Exit Sub End Try 'TextBoxを初期化する -------------------------------- TextBox1.Text = "" TextBox2.Text = "" '/TextBoxを初期化する -------------------------------- Me.Hide() frm_main.Show() End Sub |
4-3.Importsの設置
Importsはこれを記述。
1 2 |
Imports System.Data Imports System.Data.OleDb |
4-4.グローバル宣言
グローバルで扱えるようにしときます。
1 2 |
Dim cadena As New OleDbConnection Dim registro As Int32 |
4-5.Updateコマンド
Updateはこんな感じ。先にコマンドを宣言します。
1 |
Dim comando As OleDbCommand |
実際のUpdateはSQLでこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
Private Sub Btn_update_Click(sender As Object, e As EventArgs) Handles Btn_update.Click Try '必須事項確認 ------------------------ If Cmb_key_name.SelectedIndex = -1 Then MsgBox("必須項目に記載がありません。", vbInformation, "更新不可") Exit Sub End If If Txt_name1.Text = Nothing Then MsgBox("必須項目に記載がありません。", vbInformation, "更新不可") Exit Sub End If If Txt_value1.Text = Nothing Then MsgBox("必須項目に記載がありません。", vbInformation, "更新不可") Exit Sub End If '/必須事項確認 ------------------------ connect.ConnectionString = conections_str connect.Open() Dim sql As String sql = "Update m_env Set " sql &= "key_name = '" & Cmb_key_name.SelectedValue & "', " sql &= "name1 = '" & Txt_name1.Text & "', " sql &= "value1 = '" & Txt_value1.Text & "', " sql &= "name2 = '" & Txt_name2.Text & "', " sql &= "value2 = '" & Txt_value2.Text & "', " sql &= "name3 = '" & Txt_name3.Text & "', " sql &= "value3 = '" & Txt_value3.Text & "', " sql &= "sort = " & Nud_sort.Value & ", " sql &= "notice = '" & Txt_notice.Text & "', " sql &= "update_at = #" & Format(Now, "yyyy/MM/dd") & "#, " sql &= "update_user = '" & user_name_str & "' " sql &= "Where id = " & Lbl_id.Text comando = New OleDbCommand(sql, connect) comando.ExecuteNonQuery() System.Media.SystemSounds.Asterisk.Play() connect.Close() Me.Close() Frm_env_master_list.Btn_search.PerformClick() Exit Sub Catch ex As Exception MsgBox("接続エラーです。", vbOKOnly, "接続エラー") connect.Close() Exit Sub End Try End Sub |
※必要ないモノも含んでます・・・・。(解析して下さいww)
4-6.Selectコマンド
Selectコマンドはこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
Private Sub Show_data() Try connect.ConnectionString = conections_str connect.Open() Dim oda As New OleDbDataAdapter Dim ods As New DataSet Dim sql As String sql = "Select " sql &= "id, " sql &= "key_name, " sql &= "name1, " sql &= "value1, " sql &= "name2, " sql &= "value2, " sql &= "name3, " sql &= "value3, " sql &= "sort, " sql &= "notice, " sql &= "delflg " sql &= "From m_env " sql &= "Where delflg = 0 " sql &= "And id = " & Lbl_id.Text & " " sql &= "Order By id Asc" oda = New OleDbDataAdapter(sql, connect) ods.Tables.Add("m_env") oda.Fill(ods.Tables("m_env")) db_counter = ods.Tables("m_env").Rows.Count '初期値の選択 ---------------------------------- Cmb_key_name.SelectedValue = ods.Tables("m_env").Rows(0)("key_name") Txt_name1.Text = ods.Tables("m_env").Rows(0)("name1") Txt_value1.Text = ods.Tables("m_env").Rows(0)("value1") If IsDBNull(ods.Tables("m_env").Rows(0)("name2")) = False Then Txt_name2.Text = ods.Tables("m_env").Rows(0)("name2") End If If IsDBNull(ods.Tables("m_env").Rows(0)("value2")) = False Then Txt_value2.Text = ods.Tables("m_env").Rows(0)("value2") End If If IsDBNull(ods.Tables("m_env").Rows(0)("name3")) = False Then Txt_name3.Text = ods.Tables("m_env").Rows(0)("name3") End If If IsDBNull(ods.Tables("m_env").Rows(0)("value3")) = False Then Txt_value3.Text = ods.Tables("m_env").Rows(0)("value3") End If Nud_sort.Value = ods.Tables("m_env").Rows(0)("sort") If IsDBNull(ods.Tables("m_env").Rows(0)("notice")) = False Then Txt_notice.Text = ods.Tables("m_env").Rows(0)("notice") End If '/初期値の選択 ---------------------------------- connect.Close() Catch ex As Exception MsgBox("接続エラーです。", vbOKOnly, "接続エラー") connect.Close() Exit Sub End Try End Sub |
5.DataGridView
5-1.初期設定
初期設定は、こんな感じです。
1 2 3 4 5 6 7 8 9 10 11 |
'DataGridViewの初期化 DataGridView1.Columns.Clear() 'DataGridViewの高速化用 ----------------------------------------------------------- DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize DataGridView1.AllowUserToAddRows = False DataGridView1.ReadOnly = True '/DataGridViewの高速化用 ----------------------------------------------------------- |
5-2.カラム設定
並び替えなどを制御します。
1 2 3 4 5 6 7 |
DataGridView1.Columns(0).HeaderText = "name1" DataGridView1.Columns(1).HeaderText = "name2" '並び替えができないようにする For Each c As DataGridViewColumn In DataGridView1.Columns c.SortMode = DataGridViewColumnSortMode.NotSortable Next c |
今回は、並び替え禁止モードです。他にも様々なモードがあります。
6.コンボボックス
6-1.コンボボックスの初期化設定
初期化の設定です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Private Sub setting_cmb_data() 'リスト表示のテキスト編集不可設定 cmb_data.DropDownStyle = ComboBoxStyle.DropDownList 'DataTableオブジェクトを用意 Dim data_table As New DataTable() 'DataTableに列を追加 data_table.Columns.Add("ID", GetType(Integer)) data_table.Columns.Add("name", GetType(String)) '行を追加する処理 '配列の用意 For i As Integer = 0 To 3 Step 1 '新しい行を作成 Dim row As DataRow = data_table.NewRow() '各列に値をセット row("ID") = i row("name") = "aa" & i & "b" 'DataTableに行を追加 data_table.Rows.Add(row) Next data_table.AcceptChanges() 'コンボボックスのDataSourceにDataTableを割り当てる cmb_data.DataSource = data_table '表示される値はDataTableのNAME列 cmb_data.DisplayMember = "name" '対応する値はDataTableのID列 cmb_data.ValueMember = "ID" End Sub |
7.Excel
7-1.Excelの参照設定
参照設定は、「プロジェクト」→「参照の追加」→「COM」から出来ます。

7-2.Excelの新規作成とキャッシュのクリアまで
Excelを作成するには下記の様に設定します。
オブジェクトの開放も必要なので、末端に設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Button1.Enabled = False '設定内容 Dim folder_name As String = "\report" Dim report_name As String = "\Excel_Test_" & Format(Now, "yyyyMMddHHmmss") Dim extension_name As String = ".xlsx" Dim sheet_name As String = "sheet1" 'EXCEL変数 Dim xlApplication As New Microsoft.Office.Interop.Excel.Application Dim xlbooks As Microsoft.Office.Interop.Excel.Workbooks = xlApplication.Workbooks Dim xlBook As Microsoft.Office.Interop.Excel.Workbook = xlbooks.Add() Dim xlSheets As Microsoft.Office.Interop.Excel.Sheets = xlBook.Worksheets Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet = xlSheets(1) Dim xlCells As Microsoft.Office.Interop.Excel.Range = xlSheet.Cells Dim xlRange As Microsoft.Office.Interop.Excel.Range = Nothing '実行内容 Try 'excelを見えるように表示する xlApplication.Visible = False 'Cellsの使い方 xlCells.Item(1, 10) = 100 'Rangeの使い方 xlRange = xlSheet.Range("A1:A10") xlRange.Value = 999 If System.IO.Directory.Exists(DB_root & folder_name) = True Then Console.WriteLine("ディレクトリが存在します") Else Console.WriteLine("ディレクトリが存在しません") 'ディレクトリを作成 System.IO.Directory.CreateDirectory(DB_root & folder_name) End If '保存アラートの無効化 xlApplication.DisplayAlerts = False 'Excelの保存・上書き保存 xlBook.SaveAs(DB_root & folder_name & report_name & extension_name) Console.WriteLine("処理完了") Catch ex As Exception Throw Finally 'Excel終了処理 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlCells) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets) xlBook.Close() System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlbooks) xlApplication.Quit() System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication) End Try '選択の復帰 Button1.Enabled = True Save_path = DB_root & folder_name & report_name & extension_name End Sub |
BD_rootはModuleで設定した定数などをString型で設定します。
7-3.Importsの設定
ExcelのImportsの設定は下記の通りです。
1 2 |
'Microsoft Office Excel Imports Microsoft.Office.Interop |
8.まとめ
まだまだ、多くのコードがありますが今回はここまで。

バージョン管理はGitHubが一番楽ですね!!!
クローンも簡単にコマンド叩けば出来るので、非常に便利に使っています。PCの買い替えの際に大活躍です!!!
また、活用出来そうなコードがありましたら記載したいと思います!では!(*’ω’*)ノシ≡3ミ★
※Setup.exeなどについては下記のサイトが詳しく記載されています。