出産前後の痔にはご注意!

セルに入力した文字を「*」で表示したいのですが、どなたか教えていただけませんか?
数字だけのときは、セルの書式設定で表示形式のユーザ定義で「*」表示に設定するとできるのですが、英字が入ると入力どおりの表示になってしまいます。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

1.セル範囲を選択 


2.Ctrl+1 (メニュー[書式]-[セル]) 
3.[表示形式]タブの[分類]を[ユーザー定義]に 
4.[種類]に **;**;**;** と入力 
5.Enter 

でいかがでしょうか?
 これで、セルに文字列や数値が入力された時、セル幅いっぱいに******のように表示されます。

*が一文字だけ、ということでしたら、↓のようにします。

"*";"*";"*";* "*"

最後の「* "*"」は、文字列が入力された場合でも右詰めで表示させるためのものです。これが、たんに「"*"」になっていると、文字列だけ左詰めで表示されます。

参考URL:http://www2.odn.ne.jp/excel/waza/format.html#SEC11
    • good
    • 0
この回答へのお礼

ありがとうございました。
5桁のPW入力に対する*をつけようと思っていましたので、
"*";"*";"*";"*****"で表示できました。
あとはセルを表示しないにして、入力規則で5文字に入力規制して、シート保護して、数式バーの表示も消して目的が達成できました。

お礼日時:2008/05/24 16:11

エクセルのセル(Rangeオブジェクト)には、Passwordプロパティが無いので無理です。


文字列に対する書式設定が無いので表示形式からも無理です。
質問は
隠そうとする面があると思うのですが、どこまでやればよいのでしょう。
セルの見た目
数式バー部
ーー
対象セルは限られていますか。1、2のセルとか。
その値は計算やシートの処理に使いますか。
ーー
小生の私の思いつきだがVBAでやれる範囲では
値を配列に記録(またはテキストファイルに保存。こちらが良い)
そしてセルの値は「**」にする。
配列やファイルのその後の処理は質問者の都合による。
ーー
モデル的にやってみた
Dim d(10)
Private Sub CommandButton1_Click()
For i = 1 To 10
MsgBox d(i)
Next i
End Sub
A1:A10でセルの値が変わると、値を退避させて、セルは「**」で表示
Private Sub Worksheet_Change(ByVal Target As Range)
Set myRng = Application.Intersect(Target, Range("a1:A10"))
If Not myRng Is Nothing Then
Application.EnableEvents = Fale
Static i
i = i + 1
d(i) = Target
Target = "***"
Application.EnableEvents = True
End If
End Sub
    • good
    • 0

> 表示形式のユーザ定義で「*」表示に設定するとできるのですが、


表示形式のユーザ定義で「"*";"*";"*";"*"」でもダメですか?
私の2002ではOKでしたが...
    • good
    • 0

通常のセルの書式設定などでは無理です。



以下のURLを参考にしてみてください。マクロを使えば可能になります。

  http://www.big.or.jp/~seto/vbaref/vbaref16.htm
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。

お礼日時:2008/05/24 16:15

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで下4桁を****表示にしたい

いつもおせわになっています。
エクセルで行全体を選択して一気に下4桁だけを全て****表示にしたいのですが、方法はありますでしょうか?
データが膨大にあるので、一気に変換できればと思います。
よろしくおねがいします。

Aベストアンサー

A1にデータが入っているとして、
B1=LEFT(A1,LEN(A1)-4)&"****"
とすると、変更後の文字が取得できます。

行方向でも列方向でも、「値」で貼り付けする手順で対応できると思います。

QExcel 一部データを隠す(見えないように保護)

Excelファイルの中の見出しの一部を見せないように保護する事は可能でしょうか。

Aベストアンサー

見出しということは、表か何かを作成されているのでしょうか。

特定のセルだけを非表示にしたいということであれば、

1)全てのセルを選択して、右クリック→セルの書式設定の「保護」タブで「ロック」のチェックを外す。

2)隠したいセルを選択して、文字色を白とし、右クリック→セルの書式設定の「保護」タブで「ロック」と「表示しない」にチェックを入れる。(「表示しない」にチェックを入れないと、セル上には表示されなくても数式バーには表示されてしまいます)

3)ツール→保護→シートの保護→(必要であればパスワードを入力して)OK

以上でシート上にも数式バー上にも表示されなくなると思います。

もし見出しを含んで列ごと(または行ごと)というのであれば、文字色を変えなくとも、上記の2)で非表示にしたい列(または行)を選択して「ロック」にチェックを入れた後、右クリック→表示しないとして、3)の手順で保護されると良いと思います。

なお、深読みしすぎかもしれませんが、見出しというのがシートのタブのことでシートを表示させたくないということであれば、隠したいシートをアクティブにしておいて、書式→シート→表示しない でシートを隠した後にツール→保護→シートの保護 とします。
(深読みしすぎだったらご容赦ください)

見出しということは、表か何かを作成されているのでしょうか。

特定のセルだけを非表示にしたいということであれば、

1)全てのセルを選択して、右クリック→セルの書式設定の「保護」タブで「ロック」のチェックを外す。

2)隠したいセルを選択して、文字色を白とし、右クリック→セルの書式設定の「保護」タブで「ロック」と「表示しない」にチェックを入れる。(「表示しない」にチェックを入れないと、セル上には表示されなくても数式バーには表示されてしまいます)

3)ツール→保護→シートの保護→...続きを読む

Qワードの文章を一部、黒くマスキングする方法を至急教えてください。

ワードの文章を一部、黒くマスキングする方法を至急教えてください。

Aベストアンサー

もし、ほかの人に読まれないようにするためなら、編集機能だけで黒くしても駄目です。同じ編集機能で解除できますから。

1の方の方法で黒くしたあと、次のやり方で文書を保護してください。

(1)ツール
(2)文書の保護
(3)右の作業領域で設定後、下の「はい、保護を開始します」ボタンをクリック
(4)パスワードを入力
(5)OK

QExceでの伏文字

特定のセル又はセルの一部を*等の伏文字で表示する方法を教えて下さい。
なお、Excelは2013です。

Aベストアンサー

#1の回答者です。

>;;;"*****"の場合、空白セルになります。
>"*****";;;"*****"の場合、*****になります。
>なぜこうなるか、よく分かりません。
>解説していただきませんでしょうか。

書式では、

 正数;負数;0;文字列

と区別して扱われます。
私が#1で書いたのは、正数(プラス)と文字列を****(伏せ字)にすることです。正数;;;文字列を伏せ時にするなら、"****";;;"****" となります。

#2さんの場合は、
そのすべての部分をを伏せ時にすることです。

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

よろしくお願いいたします。

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QエクセルVBA InputBoxで入力欄を*****

VBAのInputBoxでパスワードを入力させるようにしているのですが、入力欄に入れた文字は当然ながらそのまま表示されます。
これをいかにもパスワードの入力のように入力数字を****と表示させることはできないものでしょうか?

Aベストアンサー

再びこんにちは。
以下のようにしてみてください


●パスワードを「abc123」とした場合

----------------------------------------------
Private Sub CommandButton1_Click()

  If TextBox1.Text = "abc123" Then
    Unload Me
  Else
    TextBox1.Text = ""
    TextBox1.SetFocus
  End If

End Sub
-----------------------------------------

バスワードが違ったら再入力へ


なお、Unload Me のところは

Unload Userform1
Me.Hide
Userform1.Hide

意味は違いますがどれでも可です。
 

QVBAでブックを非表示で開いて処理して閉じる方法

エクセルVBAで質問なのですが、別のブックを非表示で開いて処理をし、処理が終わったらそのブックを閉じるマクロを作りたいです。

ネットで方法をたくさん調べたのですが、うまくいきません。
ActiveWindow.Visible = Falseを使うと非表示でブックを開くのですが、次の処理をしようとすると非表示のブックのシートがselectで選択できないのかエラーが出てしまいます。

どなたか良い方法をご存じないでしょうか?


↓今作ろうとしているマクロを参考に書いておきます。

ブックA内に書かれているブックBを非表示で開く

処理(ブックBのシート内の表に記入漏れの空白セルがあればブックAに空白セルの番地を表示させる)

ブックBを非表示のまま閉じる


非表示にせずにブックBを開けばうまく処理が完了するのですが、ActiveWindow.Visible = Falseを入れて非表示でブックBを開くと処理が開始しないという状況です。

Aベストアンサー

こんにちは

>非表示のブックのシートがselectで選択できないのかエラーが出てしまいます。
手作業でも非表示のブックでシートやセルを選択しようとしても無理ですよね?

VBAの記述の方法をSelectやActivateなどを用いないように書き直せば、ご希望のことは実現可能だと思います。

例として、以下では"TestBook"というブックを開き、そのシート1内でA1:C20の範囲の空白セルを探して、メッセージボックスにカンマ区切りで結果を表示します。
(殆ど時間がかかりませんので、非表示にしなくても同じだとは思いますが…)

Sub sample()
 Dim wb As Workbook, c As Range
 Dim str As String

 str = ""
 Set wb = Workbooks.Open(ThisWorkbook.Path & "\TestBook.xlsm")
 Windows(wb.Name).Visible = False

 For Each c In wb.Worksheets(1).Range("A1:C20")
  If c = Empty Then
   If str <> "" Then str = str & " , "
   str = str & c.Address
  End If
 Next c
 wb.Close SaveChanges:=False

 MsgBox str
End Sub

※ わざわざ『非表示』に設定しなくても、現在のウィンドウをアクティブにすることで、新しく開いたウィンドウを(裏側に)隠すこともできますね。

こんにちは

>非表示のブックのシートがselectで選択できないのかエラーが出てしまいます。
手作業でも非表示のブックでシートやセルを選択しようとしても無理ですよね?

VBAの記述の方法をSelectやActivateなどを用いないように書き直せば、ご希望のことは実現可能だと思います。

例として、以下では"TestBook"というブックを開き、そのシート1内でA1:C20の範囲の空白セルを探して、メッセージボックスにカンマ区切りで結果を表示します。
(殆ど時間がかかりませんので、非表示にしなくても同じだとは思いま...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報