[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『クリップボードエラーがでます。』(別班の下請け)
以下の質問の続きですが別件としました。
『文脈を考えて適切な位置で分割したい』(別班の下請け)
https://www.excel.studio-kazu.jp/kw/20250127084806.html
こちらで教えていただいたコードをお借りしてVBAを作成しました。
以下のコードでA列のセルが半角で52文字以上の場合は
テキストボックスの文字列の内容を見てカーソルで分割するようにしていますが
処理中にカーソル(ポインター)が「待ち状態」となり
以下の添付画像のような「クリップボードエラー」が出ます。
添付画像
https://imgur.com/e1Mrqg7
このエラー画面が出るとポインターが「待ち状態」なので
「今後表示しない」や「X」をクリックする事は出来ません。
エラーが表示されたまま暫く待つとエラー画面は消え去り
(カーソル(ポインター)は、「待ち状態」が消えて)
次の文字列がテキストボックスに表示されます。
(カーソルは正常な「テキスト選択」と変化する)
エラー表示は毎回出るわけでは無いようで
数回はエラーが出ない場合も有りますが
規則性が無いようでその後このエラー現象が最後まで続きます。
(実際は規則性があるのかもしれませんがよく判りません)
(処理自体は最後まで行われているのでEnd SUBで処理が終了します。)
コードに「クリップボードをクリア」を追加したりしましたが
無関係なのかエラーは無くなりませんでした。
昨日から試行錯誤しましたがエラーが出なくならないので
理由やコードを改善できればお願いします。
For Each aCell In Range("A1", Cells(Rows.Count, "A").End(xlUp)) aCellCount = aCellCount + 1 If aCell.Value <> "" Then cellContent = Trim(aCell) ' LENB関数を使用して文字数バイト数を取得 (半角では何文字?) byteCount = LenB(StrConv(cellContent, vbFromUnicode))
If byteCount <= 52 Then '半角で52文字以下の場合 rwToWrite = rwToWrite + 1
'B列にA列の文字列を転記 aCell.Copy Cells(rwToWrite, "B") Else 'A列の文字列を赤色に変更 aCell.Font.Color = RGB(255, 0, 0)
UserForm1.TextBox1.Value = aCell.Value 'データをテキストボックスに転記 UserForm1.Show vbModal 'ユーザーフォーム表示 End If End If Next aCell
ユーザーフォームにテキストボックスとラベルを配置して
下記コードを記入
Private Sub UserForm_Initialize()
Me.Label1.Caption = CStr(aCellCount) & "/" & CStr(UBound(lines)) Me.Width = 550 Me.Height = 120
With Me.TextBox1 .Width = 500 .Height = 45 .MultiLine = True End With End Sub
Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim LN As Long
LN = TextBox1.SelStart 'クリックした文字位置をメモ
rwToWrite = rwToWrite + 1 Range("B" & rwToWrite).Value = Left(TextBox1.Value, LN) 'クリックした文字まで切り取って転記 TextBox1.Value = Mid(TextBox1.Value, LN + 1, Len(TextBox1.Value)) '残りをテキストボックスに取り込む
If Len(TextBox1.Value) <= 52 Then '残りが52文字以下の場合は、1件落着させて次に備える。 If Len(TextBox1.Value) > 0 Then rwToWrite = rwToWrite + 1 Range("B" & rwToWrite).Value = TextBox1.Value End If
Unload Me End If
Application.CutCopyMode = False 'クリップボードをクリア End Sub
< 使用 Excel:Excel2021、使用 OS:Windows11 >
コピペせず(クリップボードを使用せず)、直接セルのValueプロパティに代入するようにしては。
(tkit) 2025/01/30(木) 09:27:27
当該事象については、 [[20240921053711]]の (xyz) 2024/09/23(月) 20:51:13 記事を参考にしてください。
既に指摘いただいているように、 Copyメソッドを使わずに、セルに値を代入すると避けられると思います。
(xyz) 2025/01/30(木) 09:30:58
エラーが出るのは貼っていただいた記事から以下で原因が分かりました。
https://officesupportjp.github.io/blog/cl0m4xkl2003deovs5ntr794w/
「直接セルのValueプロパティに代入するよに」すればエラーが回避できるようなので
以下を考えてみましたがエラーが発生します。
Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim LN As Long
LN = TextBox1.SelStart ' クリックした文字位置をメモ
rwToWrite = rwToWrite + 1 Cells(rwToWrite, 2).Value = Left(TextBox1.Value, LN) ' クリックした文字まで切り取って転記 (B列に代入) TextBox1.Value = Mid(TextBox1.Value, LN + 1, Len(TextBox1.Value)) ' 残りをテキストボックスに取り込む
If Len(TextBox1.Value) <= 52 Then ' 残りが52文字以下の場合は、1件落着させて次に備える。 If Len(TextBox1.Value) > 0 Then rwToWrite = rwToWrite + 1 Cells(rwToWrite, 2).Value = TextBox1.Value ' 残りの文字列をB列に代入 End If
Unload Me End If End Sub
(別班の下請け) 2025/01/30(木) 11:15:04
>「直接セルのValueプロパティに代入するよに」すればエラーが回避できるようなので > 以下を考えてみましたがエラーが発生します。
どういった番号、コメントのエラーですか?
その際、どこのコードがハイライトされますか?
その際、各変数の値は想定した値ですか?
(tkit) 2025/01/30(木) 11:52:00
修正する箇所は、
'B列にA列の文字列を転記 aCell.Copy Cells(rwToWrite, "B") ここじゃないんですか? (xyz) 2025/01/30(木) 12:08:29
ユーザーフォームに飛んだ後でエラーが出ていると思ったので
それ以前に原因があるとは思わず
関係ない部分訂正しようとしてもエラーが止まらないのがご指摘を受けて理解できました。
コピペを使わない以下のコードに変換したのでエラーが出なくなりました。
'B列にA列の文字列を転記 'コピペせず(クリップボードを使用せず)、直接セルのValueプロパティに代入 Cells(rwToWrite, "B").Value = aCell.Value
’-----------------------------------------
エラーが取れないので参照先の情報に有る以下を行うのも
視野に入れていましたがこれで解決できたと思います。
エラーを表示させなくてもエラーが出るだけで
処理自体はうまく出来ているとの理解は正しいですか?
補足) Excel でエラーメッセージを表示しない方法
<レジストリ>
キー: HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Options
名前: SkipClipboardLockedError
種類: REG_DWORD
値 : 1
(別班の下請け) 2025/01/30(木) 12:33:08
>どういった番号、コメントのエラーですか?
以下の添付図の画像を参照ください
添付画像
https://imgur.com/e1Mrqg7
>その際、どこのコードがハイライトされますか?
エラー画像(添付図)が出た後は、
カーソル(ポインター)は、「待ち状態」でコードがハイライトされる状況ではありません。
>その際、各変数の値は想定した値ですか?
ctrl+breakで強制終了しないと上記の状態なのでチェックできませんでした。
エラーが出るのはすでに教えていただいた以下のURLに尽きると思います。
https://officesupportjp.github.io/blog/cl0m4xkl2003deovs5ntr794w/
(別班の下請け) 2025/01/30(木) 12:40:24
貴方のコード変更のミスで、継続してクリップボードのエラーが発生し、 コードを修正して解決したこと、理解しました。 同じエラーだと忖度できませんでした。
>エラーを表示させなくてもエラーが出るだけで >処理自体はうまく出来ているとの理解は正しいですか?
間違っています。 処理が失敗した(する)からエラーが発生です。 また、エラーをレジストリで非表示にすることは推奨できません。 本件以外の何かしらでエラーが発生する可能性が0ではないからです。 (tkit) 2025/01/30(木) 13:59:53
質問内容に真のエラー箇所が含まれておらず、
別件の内容を知らないと忖度出来なくて当然だと思います。
エラー表示が出ても処理自体は最後まで行われるので
エラー表示の内容では、
「 このブック内にコンテンツを貼り付けすることは出来ます」
と表示されているので
エラーは出るが処理自体=コピペは出来ていると判断しましたが
間違った判断と言う回答ですね。
エラー表示は、英語を日本語にしているので判断に迷う内容と感じます。
>エラーをレジストリで非表示にすることは推奨できません。
レジで非表示にするのはリスクがあるので止めにします。
(別班の下請け) 2025/01/30(木) 14:40:36
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.