Excel VBA質問箱 IV

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

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


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

【34126】ユーザーフォーム入力後の値を認証できない りょう 06/1/27(金) 8:41 質問[未読]
【34127】Re:ユーザーフォーム入力後の値を認証でき... Blue 06/1/27(金) 9:01 回答[未読]
【34128】Re:ユーザーフォーム入力後の値を認証でき... りょう 06/1/27(金) 9:10 質問[未読]
【34130】Re:ユーザーフォーム入力後の値を認証でき... inoue 06/1/27(金) 9:27 発言[未読]
【34133】Re:ユーザーフォーム入力後の値を認証でき... Blue 06/1/27(金) 9:46 回答[未読]
【34129】Re:ユーザーフォーム入力後の値を認証でき... Statis 06/1/27(金) 9:19 回答[未読]
【34131】Re:ユーザーフォーム入力後の値を認証でき... りょう 06/1/27(金) 9:30 質問[未読]
【34135】Re:ユーザーフォーム入力後の値を認証でき... Statis 06/1/27(金) 10:16 回答[未読]
【34169】Re:ユーザーフォーム入力後の値を認証でき... りょう 06/1/27(金) 16:24 お礼[未読]

【34126】ユーザーフォーム入力後の値を認証できな...
質問  りょう  - 06/1/27(金) 8:41 -

引用なし
パスワード
   こんにちは。お世話になっております。。
同じファイル名があるとMsgを出してからフォームでRange("H1")を修正させ再度検索後にセーブをさせたいのですが、フォームで変更した値を認証してくれなくてずっとMsgがで続けます。ループではなくIf文でもやってみたんですが、だめみたいで(>_<)どこが違うのか教えてください。よろしくお願いします。


Sub 送信()
FileNM = "N:\test\" & Worksheets("Sheet1").Range("H1").Value & ".xls"
  Do While Dir(FileNM) <> ""
    MsgBox "同じ名前があります", vbInformation
    Userform1.Show
  Loop
    Workbooks("Book1.xls").SaveCopyAs Filename:=FileNM
End sub  

’ユーザーフォーム
Private Sub OKボタン3_Click()

  Worksheets("Sheet1").Activate
  
  If Me.TextBox1.Value = "" Then
     MsgBox "発行No.が空白です"
     Exit Sub
  Else
     Worksheets("Sheet1").Range("H1").Value = Me.TextBox1.Text
      With Range("H1").Font
        .Size = 14
        .Bold = True
      End With
  End If
  Unload Me
End Sub

【34127】Re:ユーザーフォーム入力後の値を認証で...
回答  Blue  - 06/1/27(金) 9:01 -

引用なし
パスワード
   >  Do While Dir(FileNM) <> ""
>    MsgBox "同じ名前があります", vbInformation
>    Userform1.Show
>  Loop
このなかで FileNM の値は変わりますか?
変わらないから無限ループするわけですが。

【34128】Re:ユーザーフォーム入力後の値を認証で...
質問  りょう  - 06/1/27(金) 9:10 -

引用なし
パスワード
   早速の返答ありがとうございます。
フォームでRange("H1")の値を変更しているので、値は変わってると思っていたのですが、それでは変わったことにならないのですか?

>>  Do While Dir(FileNM) <> ""
>>    MsgBox "同じ名前があります", vbInformation
>>    Userform1.Show
>>  Loop
>このなかで FileNM の値は変わりますか?
>変わらないから無限ループするわけですが。

【34129】Re:ユーザーフォーム入力後の値を認証で...
回答  Statis  - 06/1/27(金) 9:19 -

引用なし
パスワード
   こんにちは

これで如何でしょうか?

Sub 送信()

FileNM = "N:\test\" & Worksheets("Sheet1").Range("H1").Value & ".xls"
If Len(Dir(FileNM)) > 1 Then
  MsgBox "同じ名前があります", vbInformation
  Userform1.Show
End If
Workbooks("Book1.xls").SaveCopyAs Filename:=FileNM

End Sub

'ユーザーフォーム
Private Sub OKボタン3_Click()

   
  If Me.TextBox1.Value = "" Then
     MsgBox "発行No.が空白です"
     Exit Sub
  Else
     With Worksheets("Sheet1").Range("H1")
       .Value = Me.TextBox1.Text
       .Font.Size = 14
       .Font.Bold = True
     End With
  End If
  Unload Me
End Sub

【34130】Re:ユーザーフォーム入力後の値を認証で...
発言  inoue E-MAILWEB  - 06/1/27(金) 9:27 -

引用なし
パスワード
   >フォームでRange("H1")の値を変更しているので、
>値は変わってると思っていたのですが、
>それでは変わったことにならないのですか?
変わった値をどうやって変数「FileNM」に転記させていますか?
ループ内にはその記述はありませんが。

もし、フォーム内で転記させていたとしても、
Publicで宣言がないと同じ変数とは見なされません。
このような間違いをしないためにも
各モジュールの先頭に、
Option Explicit
を書いて、変数の宣言を強制することをお勧めします。

【34131】Re:ユーザーフォーム入力後の値を認証で...
質問  りょう  - 06/1/27(金) 9:30 -

引用なし
パスワード
   お返事ありがとうございます。
認証はできるようになりました。でもエラーもでないのに、Range("H1")に変更した名前のファイルが保存されないまま終了してしまいます。これはフォームに問題があるのでしょうか?

【34133】Re:ユーザーフォーム入力後の値を認証で...
回答  Blue  - 06/1/27(金) 9:46 -

引用なし
パスワード
   ▼りょう さん:
>早速の返答ありがとうございます。
>フォームでRange("H1")の値を変更しているので、値は変わってると思っていたのですが、それでは変わったことにならないのですか?
>
私の言いたいことは、Do〜Loop文で FileNM を更新していない ので
Dir関数の結果はずっと同じになるということですよ。

Sub 送信()
FileNM = "N:\test\" & Worksheets("Sheet1").Range("H1").Value & ".xls"
  Do While Dir(FileNM) <> ""
    MsgBox "同じ名前があります", vbInformation
    Userform1.Show
' ここで更新しなければダメ!
FileNM = "N:\test\" & Worksheets("Sheet1").Range("H1").Value & ".xls"
  Loop
    Workbooks("Book1.xls").SaveCopyAs Filename:=FileNM
End sub  

【34135】Re:ユーザーフォーム入力後の値を認証で...
回答  Statis  - 06/1/27(金) 10:16 -

引用なし
パスワード
   こんにちは

下記に変更して下さい。

Sub 送信()
Dim FileNM As String

FileNM = "N:\test\" & Worksheets("Sheet1").Range("H1").Value & ".xls"

If Len(Dir(FileNM)) > 1 Then
  MsgBox "同じ名前があります", vbInformation
  UserForm1.Show
  FileNM = "N:\test\" & Worksheets("Sheet1").Range("H1").Value & ".xls"
End If

Workbooks("Book1.xls").SaveCopyAs Filename:=FileNM

End Sub

【34169】Re:ユーザーフォーム入力後の値を認証で...
お礼  りょう  - 06/1/27(金) 16:24 -

引用なし
パスワード
   できましたあ(^-^)/
ありがとうございました。。

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