ひできちの楽天ブログ

2026/01/22
XML
カテゴリ: プログラミング
VBAの続きですよ
insert文作っても、データ属性違反なデータがあると
SQL実行エラーになってしまいますので
チェック機能を作ってもらいましたよ

 


Dim ws As Worksheet
Dim lastCol As Long
Dim lastRow As Long
Dim i As Long, j As Long
Dim colName As String
Dim dataType As String
Dim notNull As String
Dim maxLen As Long
Dim cellValue As String
Dim errorMsg As String
Dim hasError As Boolean

Set ws = ActiveSheet

'--- カラム数・行数 ---
lastCol = ws.Cells(3, ws.Columns.Count).End(xlToLeft).Column
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

'--- まず 9 行目のエラー表示セルをクリア ---
For j = 1 To lastCol
ws.Cells(9, j).Value = ""
Next j

hasError = False

'===========================================================
' バリデーション処理
'===========================================================
For j = 1 To lastCol

colName = Trim(ws.Cells(3, j).Value)
dataType = UCase(Trim(ws.Cells(4, j).Value))
notNull = UCase(Trim(ws.Cells(5, j).Value))
maxLen = Val(ws.Cells(6, j).Value)

errorMsg = ""

'--- データ行は 12 行目以降 ---
For i = 12 To lastRow

cellValue = Trim(ws.Cells(i, j).Value)

'===========================
' NOT NULL チェック
'===========================
If notNull = "NOT NULL" Then
If cellValue = "" Then
errorMsg = "notNull違反"
hasError = True
Exit For
End If
End If

'===========================
' サイズ長チェック
'===========================
If maxLen > 0 Then
If Len(cellValue) > maxLen Then
errorMsg = "サイズ長違反"
hasError = True
Exit For
End If
End If

Next i

'--- エラーがあれば 9 行目に出力 ---
If errorMsg <> "" Then
ws.Cells(9, j).Value = errorMsg
End If

Next j

'===========================================================
' エラーがあれば SQL 生成を中止
'===========================================================
If hasError Then
MsgBox "データに違反があります。9行目のエラー内容を確認してください。", vbExclamation
Exit Sub
End If

'===========================================================
' ここから先は SQL 生成処理(既存のロジックを呼び出す)
'===========================================================
Call CreateInsertSQL ' ← 既に作成済みの SQL 生成サブルーチンを呼ぶ

End Sub










お気に入りの記事を「いいね!」で応援しよう

最終更新日  2026/01/22 01:04:38 PM
コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

×

キーワードサーチ

▼キーワード検索

カテゴリ

カテゴリ未分類

(41)

楽天サービス

(45)

ポイント生活

(51)

電子書籍

(30)

yahoo

(3)

クレジットカード

(36)

楽天Edy

(35)

楽天銀行デビットカード

(14)

nanacoカード

(8)

WAON

(2)

ジャパンネット銀行

(4)

ECサイト比較

(17)

majica カード

(5)

Tポイント

(3)

動画配信

(81)

デビットカード

(10)

PASMO

(2)

電気自由化

(2)

音楽配信

(9)

楽天ブックス

(9)

au WALLET

(9)

年末商戦

(4)

ふるさと納税

(2)

Yahooプレミアム会員特典

(7)

楽天ポイント獲得数報告

(5)

ポイント交換

(2)

クレカ入会特典

(6)

楽天市場

(7)

電子マネー

(12)

福袋・初売り

(2)

BABYMETAL

(7)

Yahooショッピング

(30)

Yahooクレジットカード

(6)

税金対策

(2)

楽天銀行プリペイドカード

(3)

楽天ペイ

(5)

ゾンビ

(4)

銀行カード

(2)

ヤフオク!

(1)

ポイント・キャンペーン

(23)

Amazon

(3)

Ponta

(2)

ギタリスト

(3)

プリペイドカード

(1)

クーポン・キャンペーン

(18)

暗号・分割・隠蔽

(2)

ガジェット

(43)

プログラミング

(15)

ネット銀行

(7)

Chrome 機能拡張

(1)

リアル銀行

(1)

数学と算数

(14)

格安SIM

(5)

将棋

(89)

クラウド

(14)

国語

(3)

ニュース

(26)

社会

(2)

電子決済

(2)

割引券

(0)

日記

(1)

TIPS

(4)

ソフトウェア

(18)

商品レビュー

(1)

映画視聴

(7)

洋楽

(2)

マンガ

(0)

お買い物パンダ

(1)

3Gケータイ3Gスマホ

(3)

互換オフィス

(4)

IT用語

(0)

地球温暖化

(53)

植民地時代

(0)

古代史

(1)

楽天ポイントビットコイン

(11)

ITの仕事

(1)

楽天購入品リスト

(0)

ご挨拶

(0)

楽天リワード

(1)

Visual Studio

(4)

wikipedia

(1)

コロナ

(1)

python

(4)

地球温暖化懐疑/否定論者

(14)

youtubeライブカメラ

(1)

自然災害

(4)

SNS

(1)

動物

(1)

楽天ブログ

(4)

藤岡幹大

(1)

グレタ

(2)

HTML

(1)

AIの活用

(0)

令和のコメ騒動

(2)

xEV

(2)

スポーツ

(1)

EV

(2)

VSCode

(0)

エネルギー

(1)

snowflake

(4)

Microsoft Copilot

(2)

VBA

(2)

Excel計算式

(1)

Windows

(1)

お気に入りブログ

【アンケート】「カ… New! 楽天家計簿スタッフさん

DeNA南場智子オーナ… New! ミスミ ジローさん

【楽天ポイントモー… New! 楽天ポイントモールさん

[お知らせ]メンテナ… ROOM編集部さん

【重要】接続しづら… 楽天ブログスタッフさん

【重要】ゴールデン… 楽天写真館スタッフさん

【2026年最新】楽天… Rakuten Staffさん

【4月21日】メンテナ… infoseeknewsさん

4月19日(日) シス… 楽天 ブックスさん

楽天レシピスタッフB… 楽天レシピスタッフさん

コメント新着

弱火の中火@ Re:ファイル名の先頭に指定文字を付加するバッチとな?(01/25) ひできちくん、最近楽天PLAYの記事見てな…

プロフィール

ひできち(hidekichi45)

ひできち(hidekichi45)


© Rakuten Group, Inc.
X
Design a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: