ボタンを押すことでテキストボックスが消えるようにしたいのですが、
ボタンは、2つ 「ONとOFF」 1~3のSheetにあるテキストボックスをSheet5に配置した「ONとOFF」のボタンで操作するようにしたいのですがよろしくお願いします。

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

A 回答 (3件)

テキストボックスは図形を使っていましたよね。

コントロールツールボックスのテキストボックスなら簡単に操作できるのですが・・・

まず、各シートのテキストボックスに共通の文字を持った名前をつけて下さい。
Sheet1ではmyText1_1、myText1_2・・・、Sheet2ではmyText2_1、myText2_2・・・の要領です。
下の例では名前の前6文字をVBAで判定に使っています。
やっていることはテキストボックスの座標を操作しているだけです。目で見える範囲や印刷等の範囲の外に出るように増分zoubunを適当に設定して下さい。(図形を見た目だけ消すのはたいへんです)

最初に動かすときは、「ボタンON」のプロパティのvisibleをfalseにしておきます。

「ボタンOFF」を押すと図形が消え、「ボタンOFF」が見えなくなり「ボタンON」が現れます。
「ボタンON」を押すと図形が現れ、「ボタンON」が消え「ボタンOFF」が現れます。

これは標準モジュールに貼り付けます。
Public Sub ON_OFF(FLG As Boolean)
Dim sht As Integer 'シートカウンタ
Dim shp As Shape '図形
Const zoubun = 500 '位置を変える大きさ
Dim fugo As Integer '符号
fugo = 1: If FLG = True Then fugo = -1

Application.ScreenUpdating = False
For sht = 1 To 3
Worksheets("Sheet" & sht).Activate
For Each shp In Worksheets("Sheet" & sht).Shapes
If Left(shp.Name, 6) = "myText" Then
shp.Top = shp.Top + zoubun * fugo
shp.Left = shp.Left + zoubun * fugo
End If
Next
Next
Worksheets("Sheet5").Activate
Application.ScreenUpdating = True
End Sub

シート5に貼り付けます
Private Sub cmdOff_Click()
cmdOff.Visible = False: cmdON.Visible = True: ON_OFF False
End Sub

Private Sub cmdON_Click()
cmdOff.Visible = True: cmdON.Visible = False: ON_OFF True
End Sub
    • good
    • 0
この回答へのお礼

nishi6さん!いつもありがとうございます。

今回は、一発成功!しました。VBAが少しづつ分かってきているような気がします。nishi6さんには、いつもお世話になりっぱなしですみません。本当にありがとうございます。

お礼日時:2001/06/11 21:38

もしも、画面上で見えたり見えなくするというのではなく、本当に消したい場合は以下のようにしみてください。


(多分質問の意図は前述の方のやり方が回答になっていると思いましたが)

--ONの処理--
Sub ボタン1_Click()
 Sheets("Sheet1").Select
 ActiveSheet.OLEObjects.Add(ClassType:="Forms.TextBox.1",        Link:=False,・・・・・その他設定)
 (シート2・シート3も同様に)
End Sub


--OFFの処理--
Sub ボタン2_Click()
 Sheets("Sheet1").Shapes("TextBox1").Delete
 Sheets("Sheet2").Shapes("TextBox1").Delete
 Sheets("Sheet3").Shapes("TextBox1").Delete
End Sub

この回答への補足

batu1さん!ありがとうございます。
早速やってみましたが、
ActiveSheet.OLEObjects.Add(ClassType:="Forms.TextBox.1",Link:=False,・・・・・その他設定)
がエラーになってしまいました。

OFFはうまくいました。

補足日時:2001/06/11 21:29
    • good
    • 0
この回答へのお礼

すみません!お礼のほうに書くべきでした。
とりあえず、うまくいきそうなのでがんばってみます。

お礼日時:2001/06/11 21:35

以下のようにします。



■コマンドボタンONの処理
Private Sub CommandButtonON_Click()
Sheet1.TextBox1.Visible = True
Sheet2.TextBox1.Visible = True
Sheet3.TextBox1.Visible = True
End Sub

■コマンドボタンOFFの処理
Private Sub CommandButtonOFF_Click()
Sheet1.TextBox1.Visible = False
Sheet2.TextBox1.Visible = False
Sheet3.TextBox1.Visible = False
End Sub
    • good
    • 0
この回答へのお礼

gould09さん!ありがとうございました。
ちょっとエラーが出てしまいましたが、意味は理解でき、何とかできました。
ありがとうございました。

お礼日時:2001/06/11 21:34

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

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

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

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

QWordのテキストボックスの行間をつめたいのです

Wordのテキストボックスの行間をつめたいのです。

他者からもらった印刷物がありますが、
文字の高さが3.3mmで行間が3.6mm程度です。
Wordでやろうとしていますがなかなかできません。
テキストボックスの中に文字を入れればテキストボックスの上との行間が縮まりますが
テクストボックス内の行間が縮まりません。
どうしたらできますか?

Aベストアンサー

こんばんは!
↓の画像でテキストボックス内の行間を12ptでやってみました。
当方使用のWord2003の場合です。

左側のテキストボックスはデフォルト(ページ設定)の1行の行間そのままです。

(1)テキストボックス内の文字を範囲指定 → メニュー → 書式 → 段落
(2)「インデントと行間隔」タブ → 間隔の「行間」の下向き▼を選択 → 「固定値」を選択(自動で12ptになると思います)
このポイント数で好みの行間に設定できます。

※ 行間とは文字の上端~次の行の文字の上端までですので、行ピッチと言った方が判りやすいかもしれません。

すなわち、フォントサイズよりも小さいpt数を設定してしまうと文字が重なってしまいます。

以上、参考になれば良いのですが
的外れならごめんなさいね。m(_ _)m

Q検索用のテキストボックスの中の文字列をボタン操作でクリアしたい

お世話になります。ちょっと前に、こちらでお世話になり、ワークシートに画像のような検索ボックスを表示し、シート内の文字列を検索出来るようになりました。ここまではいいのですが、画像のように2個目のコマンドボタンを作成し、このコマンドボタンのクリック1回でテキストボックスの文字列をクリア出来るようにしたいと思っています。

初心者の感覚からすると作成したコマンドボタンのコードを以下のようにすると、希望の操作が出来るようになると思ったのですが「Sub またはFunction が定義されていません」というエラーメッセージで、マクロが実行されません。

すいませんが、詳しい方、説明の上手な方、コマンドボタンのクリック1回で、テキストボックスの文字列をクリアする方法を教えて下さい。よろしくお願いします。

1)まだVBA初心者です。難しい説明、途中を省略した説明は理解出来ないと思います。
2)動作確認のとれたコードの貼り付けでしたら、一番助かります。
3)メッセージの意味はわかるのですが、Module1の(General)以外は、どれもSubがついてません。どうしてここだけ、こんなエラーメッセージになるのでしょうか?

ーーーーーーーーーーーーー
コードは以下のとおりです
・オブジェクト名=Module1、
・コードウインドウ、(General)、Macro1

Sub Macro1()
UserForm1.Show vbModeless
End Sub

ーーーーーーーーーーーーー
ユーザーフォームのコード

Private Sub CommandButton1_Click()
Dim str As String, c As Range
If TextBox1 <> "" Then
str = TextBox1
Set c = ActiveSheet.Cells.Find(what:=str, LookIn:=xlValues, lookat:=xlWhole)

If Not c Is Nothing Then
c.Select
Else
MsgBox "該当データなし"
End If
Else
MsgBox "入力してください"
End If
End Sub

Private Sub CommandButton2_Click()
ClearContents
End Sub

Private Sub TextBox1_Change()
End Sub

Private Sub UserForm_Click()
End Sub

お世話になります。ちょっと前に、こちらでお世話になり、ワークシートに画像のような検索ボックスを表示し、シート内の文字列を検索出来るようになりました。ここまではいいのですが、画像のように2個目のコマンドボタンを作成し、このコマンドボタンのクリック1回でテキストボックスの文字列をクリア出来るようにしたいと思っています。

初心者の感覚からすると作成したコマンドボタンのコードを以下のようにすると、希望の操作が出来るようになると思ったのですが「Sub またはFunction が定義されていませ...続きを読む

Aベストアンサー

WindFallerさん、すごいですね。この質問で、そこまで読みましたか~!!
私は、てっきりテキストボックス内の文字列をクリアするだけだと思っていたので、次のような回答をするつもりでした(しちゃいましたけど・・・)。お恥ずかしい限りです。

Private Sub CommandButton2_Click()
TextBox1.Text = ""
End Sub

Qエクセル2002/テキストボックス内の文章の行間?

エクセル2002です。
テキストボックス内に書いた文章の行間を任意に変えることが可能ですか?

普通に書くとくっつきつぎで、一行あけると開きすぎなので、一行の半分くらいの行間にしたいのです。
テキストボックスの書式設定は見てみましたが、方法を見つけられませんでした。

Aベストアンサー

あまり良い方法と言えないかもしれませんが。

テキストボックス内に文字を入力します。
そしてテキストボックスの書式設定を出して、配置のタブを開きます。
文字の配置の縦位置を「均等割付」に設定します。
これでテキストボックスの縦の高さに合わせて、行間が広がります。
ちょうど良い行間にテキストボックスの高さを調節します。

QExcel でシート間の重複データ(Sheet1のA=Sheet2のA かつ Sheet1のB=Sheet2のB)

Excel2000です。

Sheet1のA列・B列・C列・・・にデータが入っています。
Sheet2のA列・B列・C列・・・にデータが入っています。

Sheet1のA列とSheet2のA列は、似たようなデータが入っています。
Sheet1のB列とSheet2のB列も、同様です。
C列以降のデータは、シート間で全然関係ありません。

Sheet1の行データ(A列・B列)が、Sheet2(A列・B列)にも存在しているかどうか、
を知るには、どうすればよいですか。
C列以降の列のデータは、比較する際に使いません。

つまり、
Sheet1のA = Sheet2のA
かつ
Sheet1のB = Sheet2のB
であるような行を知りたいのですが、

どうすればよいのでしょうか。

Aベストアンサー

Sheet1、Sheet2 ともに空いている列に =A1&B1 のような連結データを作り、Matchなどで比較するとか、、、

Sheet1 の E1 =A1&B1
Sheet2 の E1 =A1&B1
Sheet1 の F1 =MATCH(E1,Sheet2!E:E,0)

Qパワポのテキストボックスの行間のデフォルト値の設定

パワポ2000を使っています。
テキストボックスを作ると必ず行間が9.99行となっているので、毎回1行に変更しています。作った時点に1行になるように、変更する方法がわかりません。
つまり、パワポのテキストボックスの行間のデフォルトを、現在の9.99行から1行に変更したらよいのですが、変更する方法がわかりません。

Aベストアンサー

行間を1行にしたテキストボックスを選択し、右クリックで「オートシェープの規定値」選択すると次からのテキストボックスは開業行になりませんか?

QEXCELVBAで同じフォームボタンで表示のON/OFFをする。

EXCELVBA初心者です。
図形描写の”表示”、”非表示”はできたのですが
同じボタンをクリックしてON/OFFする方法を教えてください。
ボタンが2個だといまいちなので、よろしくお願いします。


Sub 図形_del()
ActiveSheet.Shapes("daily7").Visible = False
End Sub

Sub 図形_add()
ActiveSheet.Shapes("daily7").Visible = True
End Sub

Aベストアンサー

はじめまして

#1の回答も#2の回答も、「書き方」が違うだけで、基本的な考え方は全く同じです。
と言っただけでは伝わらないと思いますので、補足します。

まず、
「= (先の構文と後ろの構文を比較して)」
との部分をnabepapaさんは誤解されています。
同じ書式ですが、使われる場面によって意味が異なります。

※1
例えば
i = 2
と単独で使えば「左辺の変数の値を右辺の値にしなさい」という命令です。正式には
Let i = 2
と記述します。(Letは省略できます)

※2
一方で、If ~ Then ~ Elseの構文の中で
If i = 2 Then …
と使ったときにはi=2という「条件」を表します。このときに「Let」をつけるとエラーになります。

ActiveSheet.Shapes("daily7").Visible = Not ActiveSheet.Shapes("daily7").Visible
は※1のケースです。
i = i + 1
と書いたときには、「“新しいi”は“今のi”に1を足したものにしなさい」という命令になります。
左辺のiは「新しいi」で、右辺のiは「今のi」です。従って同じiを使っていても「中身」が違います。

同じように、
ActiveSheet.Shapes("daily7").Visible = Not ActiveSheet.Shapes("daily7").Visible の場合には、
「“新しい”ActiveSheet.Shapes("daily7").Visible」の値を「Not “今の”ActiveSheet.Shapes("daily7").Visible」にしなさいという命令になります。

------------------------
次に、Notですが、
Not xは
x=True ならば False
x=False ならば True
となります。

------------------------
なんか、#1の回答に似てきたと思いません?
tohru999さんは、nabepapaさんの質問に合うようにプログラムを作ってくれましたが、実際には
If ActiveSheet.Shapes("daily7").Visible = True Then
ActiveSheet.Shapes("daily7").Visible = False
Else
ActiveSheet.Shapes("daily7").Visible = True
End If
でも同じ結果になります。

このプログラムを日本語化すると
もし“今の”ActiveSheet.Shapes("daily7").VisibleがTrueだったら“新しい”ActiveSheet.Shapes("daily7").VisibleをFalseにしなさい
そうでなければ、“新しい”ActiveSheet.Shapes("daily7").VisibleをTrueにしなさい
となります。
(注)
「ActiveSheet.Shapes("daily7").Visible」は「True」か「False」のどちらかになります。「True」でなければ「False」、「False」でなければ「True」です。

はじめまして

#1の回答も#2の回答も、「書き方」が違うだけで、基本的な考え方は全く同じです。
と言っただけでは伝わらないと思いますので、補足します。

まず、
「= (先の構文と後ろの構文を比較して)」
との部分をnabepapaさんは誤解されています。
同じ書式ですが、使われる場面によって意味が異なります。

※1
例えば
i = 2
と単独で使えば「左辺の変数の値を右辺の値にしなさい」という命令です。正式には
Let i = 2
と記述します。(Letは省略できます)

※2
一方で、If ~ Then...続きを読む

Qテキストボックス内の行間の変え方

Microsoft Wordでテキストボックス内の行間を変えるにはどうしたらよいですか。
文字サイズを大きくすると、伴って行間も広くなってしまうのですが、行間だけを指定することができるでしょうか。教えて下さい。

Aベストアンサー

テキストボックス内のテキストを選択して右クリック
「段落」を選択してください。
行間の変更ができます。

Q【エクセル】テキストボックスのサイズを他のテキストボックスにもコピーできますか?

こんにちは、みなさん!!

AとういうテキストボックスのサイズをBとういう
テキストボックスのサイズにコピーできますか?

例えば、テキストボックスAの幅が3高さが1だとします。
テキストボックスBのサイズをAと同じにするには、書式
設定から、高さ幅3高さ1と入力して同じサイズのテキスト
ボックスにします。

これを、もう少し簡単にできる方法はありませんか?

ご存知の方いらっしゃいましたらよろしくお願いします。

Aベストアンサー

すでにあるテキストボックスなら、
Shiftを押しながら選択すると、
A、Bのテキストボックスを同時に選択することができます。
複数同時に選択したところで、書式設定すればいいと思います。

QPPTのVBA 全てのテキストボックスの行間を最小

【PPTのVBA 全てのテキストボックスの行間を最小に】

 今晩は、質問させていただきます。どうぞよろしくお願いいたします。
PPT2007でございます。

 手元に大量にあるPPTファイル群のテキストボックスの行間が全て広いため、
全て一括で小さくしてしまいたい次第でございます。
もしこれを手作業でやりますと、テキストボックスをアクティブにする→右クリック
→「段落」→「段落前」を0に。
となり時間がかかりますため、VBAでどうにかしたい次第でございます。

 しかしネットで検索しても出てこず、
また上記操作を自動記録しようといたしましても記入されません。
(PPT2007には自動記録が無いため、excel、wordでトライいたしましたが、無理でございました。。。)

一個のテキストボックスの操作方法さえ分かれば後は、
For each スライド
  For each テキストボックス
  :
  :
  Next
Next
みたいな感じで出来ると思うのでございますが。。

 もしお詳しい方がいらっしゃいましたら,お教えいただけないでしょうか。
どうぞよろしくお願いいたします。

【PPTのVBA 全てのテキストボックスの行間を最小に】

 今晩は、質問させていただきます。どうぞよろしくお願いいたします。
PPT2007でございます。

 手元に大量にあるPPTファイル群のテキストボックスの行間が全て広いため、
全て一括で小さくしてしまいたい次第でございます。
もしこれを手作業でやりますと、テキストボックスをアクティブにする→右クリック
→「段落」→「段落前」を0に。
となり時間がかかりますため、VBAでどうにかしたい次第でございます。

 しかしネットで検索しても出てこず、
また...続きを読む

Aベストアンサー

MKT_さん
こんにちは。

下記のコードでできると思います。
※PPT2003での対応ですが…

Sub 行間変更()
 Dim I  As Long
 Dim J  As Long
 For I = 1 To ActivePresentation.Slides.Count
  With ActivePresentation.Slides(I)
   For J = 1 To .Shapes.Count
    If .Shapes(J).HasTextFrame = msoTrue Then
     .Shapes(J).TextFrame.TextRange.ParagraphFormat.SpaceBefore = 0
    End If
   Next J
  End With
 Next I
End Sub

Qセル内のテキスト配置(縦位置)をボタン一つで設定したいです。(エクセル2000)

いつもお世話になります。
エクセルのテキスト配置で左揃えや中央揃えはデフォルトでも
一発で設定できるボタンがありますが、
縦位置を即、設定できるボタンは存在するのでしょうか?

もしくは「テキストをセル中央に配置」みたいなボタンはあるのでしょうか?
右クリックして書式設定→配置・・・は少々手間がかかりまして。。。

環境:Win2000・Excel2000SR-1

Aベストアンサー

2000にはなかったですか…。
前にも書いたように2000を持っていないので、具体的なことは言えませんが、もしかするとボタンが存在しないのかもしれませんね。
他に方法が無いわけではないですが、そのためにはマクロを使ったりユーザー設定をしなければならないので、ちょっとめんどくさいです。
一応方法を記載しておきますね。

上のメニューから『ツール』→『マクロ』→『新しいマクロの記録』を選択。
表示されたウィンドウでOKボタンを押す。
小さいマクロ用のツールバーが表示されるので、ボタンに登録したい作業を一通り行う。登録したい作業が終わったらマクロ用のツールバーにある停止ボタンを押す。(四角いマークです)
これでマクロが一つ作成できました。

次にマクロを登録するためのボタンを作成するために『表示』→『ツールバー』→『ユーザー設定』をクリック。
表示されたウィンドウからコマンドを選び分類を『マクロ』にしてコマンドから『ユーザー設定ボタン』をツールバーにドラック&ドロップします。
上の作業でできたボタンをクリックすると、マクロの登録というウィンドウが開きますので、先ほど登録したマクロを選んでOKボタンを押します。
すると今度からそのボタンを押すだけでしたい作業が行えます。

一気に説明してしまいましたが、わからない用語はヘルプを参考にしてみてください。
ただ、細かいところの設定は用語の意味がわからないとつらいかもしれません。

私がアドバイスできることといえばこれくらいでしょうか。お役に立てなくてすみません(^^;)

2000にはなかったですか…。
前にも書いたように2000を持っていないので、具体的なことは言えませんが、もしかするとボタンが存在しないのかもしれませんね。
他に方法が無いわけではないですが、そのためにはマクロを使ったりユーザー設定をしなければならないので、ちょっとめんどくさいです。
一応方法を記載しておきますね。

上のメニューから『ツール』→『マクロ』→『新しいマクロの記録』を選択。
表示されたウィンドウでOKボタンを押す。
小さいマクロ用のツールバーが表示されるので、ボタンに登録...続きを読む


人気Q&Aランキング

おすすめ情報