Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11759 / 13645 ツリー ←次へ | 前へ→

【14145】セルの文字を変換させたいです kc 04/5/21(金) 19:39 質問[未読]
【14146】Re:セルの文字を変換させたいです ichinose 04/5/21(金) 20:05 発言[未読]
【14280】Re:セルの文字を変換させたいです kc 04/5/25(火) 13:57 質問[未読]
【14313】Re:セルの文字を変換させたいです ichinose 04/5/25(火) 20:23 回答[未読]
【14351】ありがとうございました kc 04/5/26(水) 15:14 お礼[未読]

【14145】セルの文字を変換させたいです
質問  kc  - 04/5/21(金) 19:39 -

引用なし
パスワード
   初めての投稿です。
VBAも初心者なのでよろしくお願いします。

もともとのデータはデータベース(DB)にあるのですが
そのDBを参照し
あるセルに文字をいれてるのですが
そのDBのステイタスによってセルの文字を変換させたいのです。

例えばあるセルにKCという文字があります。
DBにKCとそのKCのステイタスを表すデータがあります。
もしDBのKCのステイタスが"BAD"であった場合
そのKCとかかれてるセルを"BAD"に変換したいのです。

現在は下記の用に設定してありセルの色とフォントを変えるだけになってます。
If (strStatus = "BAD") Then
Selection.Font.Bold = True
Selection.Font.ColorIndex = 1
Selection.Interior.ColorIndex = 4

ただしこの文字の変換は一回きりではなくて
何回も変換可能にしたいのですが
(DBのKCのステイタスはBAD,GOOD,DONEなどありますので)
使ってるセルはマクロを走らせる度にKCと表示されてないと
DBのステイタスを参照できないので。

[DB]     BAD  --> GOOD  --> DONE
[xls] KC-->BAD KC--> GOOD KC--> DONE

よろしくお願いします

【14146】Re:セルの文字を変換させたいです
発言  ichinose  - 04/5/21(金) 20:05 -

引用なし
パスワード
   ▼kc さん:
こんばんは。

>初めての投稿です。
>VBAも初心者なのでよろしくお願いします。
>
>もともとのデータはデータベース(DB)にあるのですが
>そのDBを参照し
>あるセルに文字をいれてるのですが
>そのDBのステイタスによってセルの文字を変換させたいのです。
>
>例えばあるセルにKCという文字があります。
>DBにKCとそのKCのステイタスを表すデータがあります。
>もしDBのKCのステイタスが"BAD"であった場合
>そのKCとかかれてるセルを"BAD"に変換したいのです。
>
>現在は下記の用に設定してありセルの色とフォントを変えるだけになってます。
>If (strStatus = "BAD") Then
>Selection.Font.Bold = True
>Selection.Font.ColorIndex = 1
>Selection.Interior.ColorIndex = 4
>
>ただしこの文字の変換は一回きりではなくて
>何回も変換可能にしたいのですが
>(DBのKCのステイタスはBAD,GOOD,DONEなどありますので)
>使ってるセルはマクロを走らせる度にKCと表示されてないと
>DBのステイタスを参照できないので。
>
>[DB]     BAD  --> GOOD  --> DONE
>[xls] KC-->BAD KC--> GOOD KC--> DONE
>
>よろしくお願いします
正直、どうしたいのかがわかりませんが、
「セルの値とDBの値を比較した結果、セルの表示を変えたい」
という意味でしょうか?
例えば、セルA1の値は、"kc"だけど、表示は、"bad"というふうに・・・。
上記のような処理なら書式設定で可能ですが、

>If (strStatus = "BAD") Then
>Selection.Font.Bold = True
>Selection.Font.ColorIndex = 1
>Selection.Interior.ColorIndex = 4
Selection.NumberFormatLocal = ";;;""bad"""

但し、上記の書式設定は、セルの中身が"kc"のような文字列の場合です。
数値の場合は、書式記号が違ってきます。

こんな意味でしょうか?

【14280】Re:セルの文字を変換させたいです
質問  kc  - 04/5/25(火) 13:57 -

引用なし
パスワード
   お返事ありがとうございます。
確かにセルの中身は
Selection.NumberFormatLocal = ";;;""bad"""
でかわりますがこのマクロを何回も走らなければなりませんので
セルの中身をbadからまたkcに戻したいのですが
どうしたらいいでしょうか?
よろしくお願いします
▼ichinose さん:
>▼kc さん:
>こんばんは。
>
>>初めての投稿です。
>>VBAも初心者なのでよろしくお願いします。
>>
>>もともとのデータはデータベース(DB)にあるのですが
>>そのDBを参照し
>>あるセルに文字をいれてるのですが
>>そのDBのステイタスによってセルの文字を変換させたいのです。
>>
>>例えばあるセルにKCという文字があります。
>>DBにKCとそのKCのステイタスを表すデータがあります。
>>もしDBのKCのステイタスが"BAD"であった場合
>>そのKCとかかれてるセルを"BAD"に変換したいのです。
>>
>>現在は下記の用に設定してありセルの色とフォントを変えるだけになってます。
>>If (strStatus = "BAD") Then
>>Selection.Font.Bold = True
>>Selection.Font.ColorIndex = 1
>>Selection.Interior.ColorIndex = 4
>>
>>ただしこの文字の変換は一回きりではなくて
>>何回も変換可能にしたいのですが
>>(DBのKCのステイタスはBAD,GOOD,DONEなどありますので)
>>使ってるセルはマクロを走らせる度にKCと表示されてないと
>>DBのステイタスを参照できないので。
>>
>>[DB]     BAD  --> GOOD  --> DONE
>>[xls] KC-->BAD KC--> GOOD KC--> DONE
>>
>>よろしくお願いします
>正直、どうしたいのかがわかりませんが、
>「セルの値とDBの値を比較した結果、セルの表示を変えたい」
>という意味でしょうか?
>例えば、セルA1の値は、"kc"だけど、表示は、"bad"というふうに・・・。
>上記のような処理なら書式設定で可能ですが、
>
>>If (strStatus = "BAD") Then
>>Selection.Font.Bold = True
>>Selection.Font.ColorIndex = 1
>>Selection.Interior.ColorIndex = 4
>Selection.NumberFormatLocal = ";;;""bad"""
>
>但し、上記の書式設定は、セルの中身が"kc"のような文字列の場合です。
>数値の場合は、書式記号が違ってきます。
>
>こんな意味でしょうか?

【14313】Re:セルの文字を変換させたいです
回答  ichinose  - 04/5/25(火) 20:23 -

引用なし
パスワード
   ▼kc さん:
こんばんは。
この投稿をする前にkcさんのご質問内容を再度、読み返してみましたが、
やっぱり、きっちりとは内容を把握できませんでした
(まあ、読解力がないのが自慢なので・・)。
ということを前提として・・・、

>お返事ありがとうございます。
>確かにセルの中身は
>Selection.NumberFormatLocal = ";;;""bad"""
>でかわりますがこのマクロを何回も走らなければなりませんので
>セルの中身をbadからまたkcに戻したいのですが
>どうしたらいいでしょうか?
この投稿を読んで「もしかしたら、勘違いされてるかも」と思いましたので
再度、例題を交えて・・・。

まず、新規ブックのアクティブシートのセルA1に予め
「kc」と入力しておいて下さい。
セルA1のみを対象にしてみましょう。

次に以下のコードを実行してみて下さい。
標準モジュールに
'====================================================
Sub test()
  With Range("a1")
   If .Value = "kc" Then
     .NumberFormatLocal = ";;;""bad"""
     End If
   End With
End Sub

前回の投稿と同様にセルA1は、「bad」と表示されていますよね?
でも、上のコードは書式によってセルの表示だけ「bad」に見えるように設定しているだけなんです。
中身の値は相変わらず「kc」なんです。

その証拠に以下のコードを実行してみて下さい。
同じく標準モジュールに
'================================================
Sub test2()
  MsgBox Range("a1").Value 'セルA1の値
  MsgBox Range("a1").Text 'セルA1の見かけの値
End Sub

いかがですか?
「kc」が表示され、次いで「bad」と表示されましたか?

よって、連続処理(どんな処理なのか??ですが)をする場合、
このValueプロパティを参照すれば「kc」という文字は
見かけ表示が「bad」であっても取得できるんです。


それでも一旦、「kc」という表示に戻したいのであれば、

'========================================================
Sub test3()
  Range("A1").NumberFormatLocal = "G/標準"
End Sub

で「kc」に戻るはずです。

こんな説明でいかがでしょうか?

【14351】ありがとうございました
お礼  kc  - 04/5/26(水) 15:14 -

引用なし
パスワード
   ありがとうございました。
いろいろと勉強になりました。
また何かありましたらお願いします。
本当にありがとうございました


▼ichinose さん:
>▼kc さん:
>こんばんは。
>この投稿をする前にkcさんのご質問内容を再度、読み返してみましたが、
>やっぱり、きっちりとは内容を把握できませんでした
>(まあ、読解力がないのが自慢なので・・)。
>ということを前提として・・・、
>
>>お返事ありがとうございます。
>>確かにセルの中身は
>>Selection.NumberFormatLocal = ";;;""bad"""
>>でかわりますがこのマクロを何回も走らなければなりませんので
>>セルの中身をbadからまたkcに戻したいのですが
>>どうしたらいいでしょうか?
>この投稿を読んで「もしかしたら、勘違いされてるかも」と思いましたので
>再度、例題を交えて・・・。
>
>まず、新規ブックのアクティブシートのセルA1に予め
>「kc」と入力しておいて下さい。
>セルA1のみを対象にしてみましょう。
>
>次に以下のコードを実行してみて下さい。
>標準モジュールに
>'====================================================
>Sub test()
>  With Range("a1")
>   If .Value = "kc" Then
>     .NumberFormatLocal = ";;;""bad"""
>     End If
>   End With
>End Sub
>
>前回の投稿と同様にセルA1は、「bad」と表示されていますよね?
>でも、上のコードは書式によってセルの表示だけ「bad」に見えるように設定しているだけなんです。
>中身の値は相変わらず「kc」なんです。
>
>その証拠に以下のコードを実行してみて下さい。
>同じく標準モジュールに
>'================================================
>Sub test2()
>  MsgBox Range("a1").Value 'セルA1の値
>  MsgBox Range("a1").Text 'セルA1の見かけの値
>End Sub
>
>いかがですか?
>「kc」が表示され、次いで「bad」と表示されましたか?
>
>よって、連続処理(どんな処理なのか??ですが)をする場合、
>このValueプロパティを参照すれば「kc」という文字は
>見かけ表示が「bad」であっても取得できるんです。
>
>
>それでも一旦、「kc」という表示に戻したいのであれば、
>
>'========================================================
>Sub test3()
>  Range("A1").NumberFormatLocal = "G/標準"
>End Sub
>
>で「kc」に戻るはずです。
>
>こんな説明でいかがでしょうか?

11759 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free