シングルクォーテーションについて

解決


ガオ~  2025-03-22 19:01:07  No: 151891  IP: [192.*.*.*]

こんにちは。
Delphi 10.1 Belrinで開発しています。
Excelのセル値の先頭にシングルクォーテーションがついている場合、
そのシングルクォーテーションを削除したいのですが可能でしょうか。
ネットにヒントがないか探しているのですが
見つかりませんでした。
ご存知の方いらっしゃりましたらお手数ですが教えていただけませんでしょうか。
よろしくお願いいたします。

編集    削除
igy  2025-03-22 19:53:23  No: 151892  IP: [192.*.*.*]

他の値のときは、セルの値を取得したり、セルに値を格納したりは、出来ていて、
シングルクォーテーション を含むデータのときだけ、うまくいかないということですか?

編集    削除
igy  2025-03-22 21:13:26  No: 151893  IP: [192.*.*.*]

Excel VBA で セルに入力されたシングルクオーテーションを Value の値として取得したい 
https://answers.microsoft.com/ja-jp/msoffice/forum/all/excel-vba-%E3%81%A7/32ba6299-65be-4c9e-9215-ac0e056f3c1d
によると、PrefixCharacterを使うとか・・

編集    削除
Mr.XRAY  2025-03-23 00:13:02  No: 151894  IP: [192.*.*.*]

状況はよく分からないのですが,

(1) Excel のセルから自列を取得
(2) 先頭文字がシングルクォーテーションなら Delete(LText, 1, 1); で削除 

(3) それを Excel のセルに代入
                              
というのはどうでしょう ?
  

編集    削除
igy  2025-03-23 07:48:17  No: 151896  IP: [192.*.*.*]

> PrefixCharacterを使うとか・・ 
PrefixCharacterはReadOnlyみたいでしたね。

検索してみると、VBAでシングルクォーテーションを削除する場合、
ValueにValueを格納する例がありましたが、Delphiで試したら、削除されていないみたいですね。

編集    削除
igy  2025-03-23 08:42:03  No: 151897  IP: [192.*.*.*]

Excelで文字列指定となるシングルコーテーションが自動的に出てしまう問題の解決方法。
https://www.transparently.jp/excel/character_string/
で、「書式のクリア」が紹介されていたので、

PrefixCharacter が「'」だったら、ClearFormatsを呼び出してみたら、
シングルクォーテーション、消えたみたいです。

編集    削除
ガオ~  2025-03-26 08:19:08  No: 151899  IP: [192.*.*.*]

igyさん、Mr.XRAYさんアドバイスありがとうございます。
お返事いただいてから試しています。
igyさんのアドバイスの
> PrefixCharacter が「'」だったら、ClearFormatsを呼び出してみたら、
> シングルクォーテーション、消えたみたいです。
アドバイス通りの現象を再現できました。
コードを変更してシングルクォーテーションを削除できました。

 Mr.XRAYさんから頂いたアドバイスでもコーディングしシングルクォーテーションを削除できました。

お二人とも丁寧なアドバイスを頂きまして感謝いたします。
今後ともよろしくお願いいたします。

編集    削除
Mr.XRAY  2025-03-28 21:27:33  No: 151905  IP: [192.*.*.*]

> (2) 先頭文字がシングルクォーテーションなら Delete(LText, 1, 1); で削除 

シングルクォーテーションってちょっと面倒なんですよね.
参考処理を提示しておきます.

procedure TForm1.Button1Click(Sender: TObject);
var
  LText : string;
begin
  LText := Edit1.Text;
  if LText[1] = '''' then begin
    Delete(LText, 1, 1);
    Edit1.Text := LText;
  end;
end;
  

編集    削除