Excel VBA質問箱 IV

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

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


8428 / 13644 ツリー ←次へ | 前へ→

【33344】Buttonクリックでシート名を変更する方法を教えて下さい 初心者 06/1/9(月) 16:38 質問[未読]
【33345】Re:Buttonクリックでシート名を変更する方... かみちゃん 06/1/9(月) 16:48 発言[未読]
【33353】Re:Buttonクリックでシート名を変更する方... 初心者 06/1/9(月) 17:18 質問[未読]
【33355】Re:Buttonクリックでシート名を変更する方... かみちゃん 06/1/9(月) 17:21 発言[未読]
【33359】Re:Buttonクリックでシート名を変更する方... お願いします。 06/1/9(月) 17:56 質問[未読]
【33362】Re:Buttonクリックでシート名を変更する方... (゜Д゜)ハァ? 06/1/9(月) 18:00 発言[未読]
【33363】Re:Buttonクリックでシート名を変更する方... かみちゃん 06/1/9(月) 18:06 発言[未読]

【33344】Buttonクリックでシート名を変更する方法...
質問  初心者  - 06/1/9(月) 16:38 -

引用なし
パスワード
   TEST.xlsファイルにSheet名が1〜100まで有るのですが、
UserFormのTextBoxに名前を入力してButton1をClickすると
シート名を若い数字番号順にTextBoxに入力された名前に変更する
方法って出来るのでしょうか?

どなたか助けて下さい。

【33345】Re:Buttonクリックでシート名を変更する...
発言  かみちゃん  - 06/1/9(月) 16:48 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>TEST.xlsファイルにSheet名が1〜100まで有るのですが、
>UserFormのTextBoxに名前を入力してButton1をClickすると
>シート名を若い数字番号順にTextBoxに入力された名前に変更する
>方法って出来るのでしょうか?

若い数字番号順にどのように変更していくのでしょうか?
TextBoxの値の末尾に元々の番号を付与していく方法でいいのであれば、以下のような感じになります。

Private Sub CommandButton1_Click()
 Dim strName As String
 Dim i As Integer
 
 strName = Me.TextBox1.Value
 For i = 1 To 2
  'シート名が存在しない場合もあるので
  On Error Resume Next
  Sheets(Format(i, "@")).Name = strName & i
  On Error GoTo 0
 Next
 MsgBox "シート名を変更しました"
End Sub

もしかして、元々のシート名がSheet1、Sheet2・・・・Sheet100とかいうわけではないですよね?
しかし、シート数が100もあるなんて大変ですね。
そっちのほうがむしろ気になります。

【33353】Re:Buttonクリックでシート名を変更する...
質問  初心者  - 06/1/9(月) 17:18 -

引用なし
パスワード
   教えて頂き本当に助かりました。
やりたい事がちょっと違ったのですが、strName & i を変更して解決しました。

もう一点欲しいのですが、その変更されたSheetのG2,L2,J2に
同じUserFormにあるTextBox2、TextBox3、TextBox4のテキストを
入力したくて下記のプログラムに変更したのですが、
Withの方法が間違っているみたいで動きません・・・

★もう一歩なのでたすけて下さい。★

Private Sub Button_Click()

 Dim strName As String
 Dim i As Integer

 strName = Me.TextBox.Value
 For i = 1 To 100
  'シート名が存在しない場合もあるので
  On Error Resume Next
  Sheets(Format(i, "@")).Name = strName
  On Error GoTo 0
    
  With Workbooks("test.xls").Sheets(Format(strName, "@"))
   
    .Range("G2") = TextBox2.Value
    .Range("L2") = TextBox2.Value
    .Range("J2") = TextBox2.Value
  
  End With
  
 Next
 MsgBox "シート名を変更しました"

End Sub

【33355】Re:Buttonクリックでシート名を変更する...
発言  かみちゃん  - 06/1/9(月) 17:21 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>もう一点欲しいのですが、その変更されたSheetのG2,L2,J2に
>同じUserFormにあるTextBox2、TextBox3、TextBox4のテキストを
>入力したくて下記のプログラムに変更したのですが、
>Withの方法が間違っているみたいで動きません・・・

以下のコードあってますか?
これを見る限り、G2、L2、J2ともに、TextBox2の値が反映されますけど?

>    .Range("G2") = TextBox2.Value
>    .Range("L2") = TextBox2.Value
>    .Range("J2") = TextBox2.Value

【33359】Re:Buttonクリックでシート名を変更する...
質問  お願いします。  - 06/1/9(月) 17:56 -

引用なし
パスワード
   かみちゃん 様へ

すいません間違えました下記コードです。m(_ _)m

申し訳御座いませんが、ご教授願います・・・

Private Sub Button_Click()

 Dim strName As String
 Dim i As Integer

 strName = Me.TextBox.Value
 For i = 1 To 100
  'シート名が存在しない場合もあるので
  On Error Resume Next
  Sheets(Format(i, "@")).Name = strName
  On Error GoTo 0
    
  With Workbooks("test.xls").Sheets(Format(strName, "@"))
   
    .Range("G2") = TextBox2.Value
    .Range("L2") = TextBox3.Value
    .Range("J2") = TextBox4.Value
  
  End With
  
 Next
 MsgBox "シート名を変更しました"

End Sub

必ず『With Workbooks("test.xls").Sheets(Format(strName, "@"))』でエラーが出てしまいます。

【33362】Re:Buttonクリックでシート名を変更する...
発言  (゜Д゜)ハァ?  - 06/1/9(月) 18:00 -

引用なし
パスワード
   投稿者名を1質問でかえろという決まりもないし、
同じ質問者が何度でも質問していいわけなので、
いちいち投稿者名を変える必要はないです。

そんなことしていたら、アドバイスもらえるもんももらえなくる罠。

【33363】Re:Buttonクリックでシート名を変更する...
発言  かみちゃん  - 06/1/9(月) 18:06 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>必ず『With Workbooks("test.xls").Sheets(Format(strName, "@"))』でエラーが出てしまいます。

何をされているのか、よくわからないのですが、
UserFormのあるブックとTest.xlsは別ブックなのですか?

どういうエラーメッセージが出るのですか?
それくらいは書きましょうね。

それとご提示のコード

> For i = 1 To 100
>  'シート名が存在しない場合もあるので
>  On Error Resume Next
>  Sheets(Format(i, "@")).Name = strName
>  On Error GoTo 0

これだと、i が 2になったときに、エラーになるはずです。
なぜなら、i が 1のときにすでに strName の値にシート名を変更して、
i が 2のときに、また strName の値にシート名を変更しようとして、すでにシー
ト名が存在するからエラーになるはずです。

また、このコードも
>With Workbooks("test.xls").Sheets(Format(strName, "@"))

With Workbooks("test.xls").Sheets(strName)
でいいのではないでしょうか?
ただし、当然のことながら、test.xls に strName(数字か文字列か知りません
が)の値の名前になっているシートが存在することです。

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