質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

1193閲覧

vbaの計算フォームと同じ動きをするものをwebページ上に作りたい。

ogatetsu

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/03/24 04:40

前提・実現したいこと

ここに質問の内容を詳しく書いてください。

vbaで作成した以下のようなツールをブラウザ上(WEBページ上)で動作させたいです。 [イメージ](http://pawapro-simu.com/)

発生している問題・エラーメッセージ

二段階リストの作成はこの記事を参考に作ってみたのですが、データベースの検索や、条件を満たしたときに文字の表示を切り替える方法などが分からず手づまりになってしまいました。 [二段階](https://allabout.co.jp/gm/gc/23955/) vbaも独学でおぼえたのですが、見本をまねて覚えていったのでサンプルを見つけられずに苦戦している状況です。

該当のソースコード

VBA

1 2Private Sub UserForm_Initialize() 3Dim i As Long 4 5 'リストの設定 6 For i = 1 To 20 Step 5 7 Controls("combobox" & i).List = Array("A", "B", "C") 8 Next i 9 10 For i = 3 To 20 Step 5 11 Controls("combobox" & i).List = Array("総合", "単独") 12 Next i 13 14 For i = 4 To 20 Step 5 15 Controls("combobox" & i).List = Array(0, 1, 2, 3, 4, 5) 16 Next i 17 18 For i = 5 To 20 Step 5 19 Controls("combobox" & i).List = Array(0, 1, 2, 3, 4, 5) 20 Next i 21 22End Sub 23 24'検索1のTYPEに応じて名前のリストを変更。 25'TYPEがAもしくはCの時は単独に設定し変更を禁止する。 26Private Sub combobox1_Change() 27Dim n As Long 28Dim List As Variant 29Dim num As Long 30Dim CB1 As Object, CB2 As Object, CB3 As Object, CB4 As Object, CB5 As Object 31 32num = 1 33Set CB1 = Controls("ComboBox" & num) 34Set CB2 = Controls("ComboBox" & num + 1) 35Set CB3 = Controls("ComboBox" & num + 2) 36Set CB4 = Controls("ComboBox" & num + 3) 37Set CB5 = Controls("ComboBox" & num + 4) 38 39CB2.Value = "" 40CB3.Value = "" 41CB4.Value = "" 42CB5.Value = "" 43 44 With Worksheets("ALLLIST") 45 Select Case CB1.Value 46 47 Case "A" 48 n = .Cells(Rows.Count, "A").End(xlUp).Row 49 List = .Range(.Cells(2, "A"), .Cells(n, "A")).Value 50 CB2.List = List 51 CB3.Value = "単独" 52 CB3.Enabled = False 53 54 55 Case "B" 56 n = .Cells(Rows.Count, "B").End(xlUp).Row 57 List = .Range(.Cells(2, "B"), .Cells(n, "B")).Value 58 CB2.List = List 59 CB3.Enabled = True 60 61 Case "C" 62 n = .Cells(Rows.Count, "C").End(xlUp).Row 63 List = .Range(.Cells(2, "C"), .Cells(n, "C")).Value 64 CB2.List = List 65 CB3.Value = "単独" 66 CB3.Enabled = False 67 68 End Select 69 70 71 End With 72 73End Sub 74 75Private Sub ComboBox3_Change() 76Dim buf As Variant 77Dim num As Long 78Dim CB3 As Object, CB5 As Object 79 80num = 1 81Set CB3 = Controls("combobox" & num + 2) 82Set CB5 = Controls("combobox" & num + 4) 83 84'総合、単独で単独が選ばれているときは 85'下位補正のコンボボックスを表示しない。 86buf = CB3.List 87 88 Select Case CB3.Value 89 90 Case buf(1, 0) 91 CB5.Value = "" 92 CB5.Visible = False 93 94 Case Else 95 CB5.Visible = True 96 97 End Select 98End Sub 99 100Private Sub CommandButton1_Click() 101Dim i As Long, j As Long, k As Long 102Dim n As Long 103Dim num As Long 104Dim CB1 As Object, CB2 As Object, CB3 As Object, CB4 As Object, CB5 As Object 105Dim LB1 As Object 106Dim WS As Worksheet 107'行の検索範囲 108Dim Rbuf As Variant 109'列の検索範囲 110Dim Cbuf As Variant 111 112num = 1 113Set CB1 = Controls("combobox" & num) 114Set CB2 = Controls("combobox" & num + 1) 115Set CB3 = Controls("combobox" & num + 2) 116Set CB4 = Controls("combobox" & num + 3) 117Set CB5 = Controls("combobox" & num + 4) 118Set LB1 = Controls("label" & num) 119 120 Select Case CB3.Value 121 122 Case "単独" 123 124 For i = num To num + 3 125 126 If Controls("combobox" & i).Value = "" Then 127 Exit Sub 128 End If 129 130 Next i 131 132 Set WS = Worksheets("LIST") 133 134 With WS 135 n = .Cells(Rows.Count, "A").End(xlUp).Row 136 Cbuf = .Range(.Cells(1, "A"), .Cells(n, "A")) 137 n = .Cells(1, Columns.Count).End(xlToLeft).Column 138 Rbuf = .Range(.Cells(1, "A"), .Cells(1, n)) 139 140 '名前と補正で検索する。 141 For j = 2 To UBound(Cbuf) 142 143 If Cbuf(j, 1) = CB2.Value Then 144 145 For k = 2 To n 146 147 '該当するものを評価ラベルに入力する。 148 '上位補正の数値で検索する。 149 If Val(Rbuf(1, k)) = Val(CB4.Value) Then 150 LB1.Caption = .Cells(j, k).Value 151 End If 152 153 Next k 154 155 End If 156 157 Next j 158 159 End With 160 161 Case "総合" 162 163 For i = num To num + 4 164 165 If Controls("combobox" & i).Value = "" Then 166 Exit Sub 167 End If 168 169 Next i 170 'LIST & 上位補正の数値のシートを指定 171 Set WS = Worksheets("LIST" & CB4) 172 173 With WS 174 n = .Cells(Rows.Count, "A").End(xlUp).Row 175 Cbuf = .Range(.Cells(1, "A"), .Cells(n, "A")) 176 n = .Cells(1, Columns.Count).End(xlToLeft).Column 177 Rbuf = .Range(.Cells(1, "A"), .Cells(1, n)) 178 179 '名前と補正で検索する。 180 For j = 2 To UBound(Cbuf) 181 182 If Cbuf(j, 1) = CB2.Value Then 183 184 For k = 2 To n 185 186 '該当するものを評価ラベルに入力する。 187 '下位補正の数値で検索する。 188 If Val(Rbuf(1, k)) = Val(CB5.Value) Then 189 LB1.Caption = .Cells(j, k).Value 190 End If 191 192 Next k 193 194 End If 195 196 Next j 197 198 End With 199 200 End Select 201 202End Sub 203 204Private Sub CommandButton5_Click() 205Dim i As Long 206Dim n As Long 207Dim cnt As Long 208Dim rng As Range 209Dim buf As Variant 210Dim WS As Worksheet 211Set WS = Worksheets("RANK") 212cnt = 1 213 With WS 214 215 .Cells.Clear 216 217 'RANK関数を使うためシートに評価を転記する。 218 For i = 1 To 8 Step 2 219 220 If Controls("label" & i).Caption = "" Then 221 .Cells(cnt, "A").Value = 0 222 Else 223 .Cells(cnt, "A").Value = Controls("label" & i).Caption 224 End If 225 226 cnt = cnt + 1 227 Next i 228 229 n = .Cells(Rows.Count, "A").End(xlUp).Row 230 Set rng = .Range(.Cells(1, "A"), .Cells(n, "A")) 231 cnt = 2 232 233 'RANK関数の結果を順位ラベルに入力する。 234 For Each buf In rng 235 Controls("label" & cnt).Caption = Application.WorksheetFunction.Rank(buf.Value, rng) 236 cnt = cnt + 2 237 Next buf 238 239 End With 240 241End Sub 242 243Private Sub CommandButton6_Click() 244Dim i As Long 245 246 '評価ランクと順位の値をリセットする。 247 For i = 1 To 8 248 Controls("label" & i).Caption = "" 249 Next i 250 251End Sub 252

繰り返しになるコードは割愛しています。
左上から右側に向けて
combobox1~5
Label12
commandbutton1
の繰り返しです
検索2
combobox6
11
label3~4
commundbutton2

実際の画面

イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sinya0320

2021/03/24 07:48

タグにJavaが指定されていますが、JavaScriptの話でしょうか? ※JavaとJavaScriptは別物なので、正しく指定して下さい。 現行のVBAはどうでも良いので どのようなコードを書いていて、どこで躓いているのかが無いと、ただの丸投げになりますよ。
dodox86

2021/03/25 00:53

多少なりとも質問者さんの意図を汲むと、「VBAで書いたスクリプトをそのまま、あるいは最小限の手間でWEB用に転用できる方法は無いか?」と言う質問でしょうか。 だとすると「そのような方法は無い」で終わりです。ASP.NETだとしてもVB.NETで書ける力は必要になりますし、HTMLはじめ、WEBサーバー、DBサーバー周りの知識も必要です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問