0 Then '炭素数が0より大きいこと Cells(6, 1).Value = "H" '先端水素表示 For v = 1 To i Cells(5, v + 1).Value = "H" Cells(6, v + 1).Value = "C" Cells(7, v + 1).Value = "H" Next If CheckBox1.Value = True Then '末尾にHかOHを表示 Cells(6, i + 2).Value = "OH" 'チェックあり Else Cells(6, i + 2).Value = "H" 'チェックなし End If If CheckBox2.Value = True Then '二重結合チェックあり Cells(6, 2).Value = "C=" '二重結合付き炭素に書換 Cells(7, 2).Value = "" '1位の水素を一つ消す Cells(7, 3).Value = "" '2位の水素を一つ消す セルを全消去し、 改めてラベル表示 フールプルーフの実装例 空白の場合は0にする。 炭素数が0でなければ メチレン鎖を描画 ただし、末端の水素は まだ描かない アルコールの時は末端にOH、 そうでないときはHを表示 ※末端の水素も先に描いて、 後からOHに書き換えてもOK 1位に二重結合にチェックが あるときは、1位の炭素(C)を 二重結合付き(C=)に書き換え、 1位と2位の水素を消す"> 0 Then '炭素数が0より大きいこと Cells(6, 1).Value = "H" '先端水素表示 For v = 1 To i Cells(5, v + 1).Value = "H" Cells(6, v + 1).Value = "C" Cells(7, v + 1).Value = "H" Next If CheckBox1.Value = True Then '末尾にHかOHを表示 Cells(6, i + 2).Value = "OH" 'チェックあり Else Cells(6, i + 2).Value = "H" 'チェックなし End If If CheckBox2.Value = True Then '二重結合チェックあり Cells(6, 2).Value = "C=" '二重結合付き炭素に書換 Cells(7, 2).Value = "" '1位の水素を一つ消す Cells(7, 3).Value = "" '2位の水素を一つ消す セルを全消去し、 改めてラベル表示 フールプルーフの実装例 空白の場合は0にする。 炭素数が0でなければ メチレン鎖を描画 ただし、末端の水素は まだ描かない アルコールの時は末端にOH、 そうでないときはHを表示 ※末端の水素も先に描いて、 後からOHに書き換えてもOK 1位に二重結合にチェックが あるときは、1位の炭素(C)を 二重結合付き(C=)に書き換え、 1位と2位の水素を消す">
Download presentation
Presentation is loading. Please wait.
2
テキストボックス、チェックボックス×2、コマンドボタンを配置する。 コマンドボタンに機能を与える
Dim i As Byte, v As Byte 'i:炭素数、v:For~Next用 Cells = "" '画面初期化 Cells(2, 1).Value = "炭素数" 'テキストボックスが空の場合のエラー回避 If TextBox1.Text = "" Then TextBox1.Text = "0" i = TextBox1.Text If i > 0 Then '炭素数が0より大きいこと Cells(6, 1).Value = "H" '先端水素表示 For v = 1 To i Cells(5, v + 1).Value = "H" Cells(6, v + 1).Value = "C" Cells(7, v + 1).Value = "H" Next If CheckBox1.Value = True Then '末尾にHかOHを表示 Cells(6, i + 2).Value = "OH" 'チェックあり Else Cells(6, i + 2).Value = "H" 'チェックなし End If If CheckBox2.Value = True Then '二重結合チェックあり Cells(6, 2).Value = "C=" '二重結合付き炭素に書換 Cells(7, 2).Value = "" '1位の水素を一つ消す Cells(7, 3).Value = "" '2位の水素を一つ消す セルを全消去し、 改めてラベル表示 フールプルーフの実装例 空白の場合は0にする。 炭素数が0でなければ メチレン鎖を描画 ただし、末端の水素は まだ描かない アルコールの時は末端にOH、 そうでないときはHを表示 ※末端の水素も先に描いて、 後からOHに書き換えてもOK 1位に二重結合にチェックが あるときは、1位の炭素(C)を 二重結合付き(C=)に書き換え、 1位と2位の水素を消す
4
参考:第10回授業のアルゴリズム教室
5
テキストボックス×3、 コマンドボタンを配置 アルゴリズム教室 ほぼそのままで、 データ最終行を探す iの値を最終行に設定
'アルゴリズム教室より A列の連続データのチェック Dim i As Integer, a As String For i = 1 To 'Integerの上限が32767 a = Cells(i, 1).Value 'I行A列のセルチェック If a = "" Then Exit For Next i = i '連続データの最終行 If i > 0 Then 'i>0:A列にデータあり、i=0:なし Dim v As Integer, b As Single, c As Single, d As Single c = 0 '合計用の変数cを初期化 For v = 1 To i b = Cells(v, 1).Value c = c + b '合計を計算 d = c / i '合計をデータ個数で割って平均を計算 TextBox1.Text = i '個数表示 TextBox2.Text = c '合計表示 TextBox3.Text = d '平均表示 Else TextBox1.Text = "計算不能" TextBox2.Text = "計算不能" TextBox3.Text = "計算不能" End If アルゴリズム教室 ほぼそのままで、 データ最終行を探す iの値を最終行に設定 A列が空でなければ 1行~i行までFor~Nextでループ i行の数値を変数bに取得して 変数cに加算 平均を計算 各種データを表示 A列が空の場合
6
実行速度を追求した場合 →For文を一つにした テキストボックス×3、 コマンドボタンを配置 アルゴリズム教室 ほぼそのままだが、
'アルゴリズム教室より A列の連続データのチェック Dim i As Integer, a As Variant 'aはチェックと数字取得兼用 Dim c As Single, d As Single '変数cが合計、dが平均 c = 0 '合計用の変数cを初期化 For i = 1 To 'Integerの上限が32767 a = Cells(i, 1).Value 'I行A列のセルチェック If a = "" Then Exit For c = c + a '【追加】合計を計算していく Next i = i '連続データの最終行 If i > 0 Then 'i>0:A列にデータあり、i=0:なし 'ここにあった合計計算のFor~Nextが消えた d = c / i '合計をデータ個数で割って平均を計算 TextBox1.Text = i '個数表示 TextBox2.Text = c '合計表示 TextBox3.Text = d '平均表示 Else TextBox1.Text = "計算不能" TextBox2.Text = "計算不能" TextBox3.Text = "計算不能" End If アルゴリズム教室 ほぼそのままだが、 合計の算出を ここに入れる A列が空でなければ 平均を計算 各種データを表示 A列が空の場合
7
「6」の部分を 変数iの値で 合成 アルゴリズム紹介 最大値や平均の求め方 セルに「関数」を書き込むことにより、
Excelの機能をそのまま利用する。 Cells(6, 1).Value = "=Average(A1:A6)" 連続データの終点を探す、と組み合わせるとさらに便利に! →文字列連結演算子「&」を上手く使うのがコツ! Dim i As Integer, a As String For i = 1 To 'アルゴリズム教室とほぼ同一 a = Cells(i, 1).Value If a = "" Then Exit For 'このときのiの値は空白行を指す Next i = i - 1 'iから1を引くことで最終データ行を指す Cells(1, 2).Value = "データ個数" 'B1セルに出力 Cells(2, 2).Value = i 'iがそのままデータ個数を示す B2セルに出力 Cells(3, 2).Value = "合計" 'B3セルに出力 Cells(4, 2).Value = "=Sum(A1:A" & i & ")" 'A1~Aiセルまでの合計 Cells(5, 2).Value = "平均" 'B5セルに出力 Cells(6, 2).Value = "=Average(A1:A" & i & ")" 'A1~Aiセルまでの最大値 「6」の部分を 変数iの値で 合成
8
「ChartObjects」オブジェクトを使って、グラフの個数のカウントや削除を行う
シート上のグラフの削除 「ChartObjects」オブジェクトを使って、グラフの個数のカウントや削除を行う ActiveSheet.ChartObjects("グラフ 1").Delete 「グラフ1」を削除する If ChartObjects.Count > 0 Then ChartObjects.Delete シート上のグラフを全削除 シート上のグラフの個数が0より多ければ (シート上にグラフがあれば) グラフを全削除
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.