Excel VBA質問箱 IV

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

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


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

【61496】VBE テキスト入力 tuki 09/5/13(水) 17:31 質問[未読]
【61497】Re:VBE テキスト入力 つん 09/5/13(水) 17:40 回答[未読]
【61510】Re:VBE テキスト入力 tuki 09/5/14(木) 9:39 発言[未読]
【61514】Re:VBE テキスト入力 つん 09/5/14(木) 10:05 回答[未読]
【61517】Re:VBE テキスト入力 tuki 09/5/14(木) 11:29 発言[未読]
【61518】Re:VBE テキスト入力 つん 09/5/14(木) 11:39 発言[未読]
【61519】Re:VBE テキスト入力 tuki 09/5/14(木) 11:48 発言[未読]
【61520】Re:VBE テキスト入力 つん 09/5/14(木) 12:12 発言[未読]
【61523】Re:VBE テキスト入力 tuki 09/5/14(木) 13:23 お礼[未読]
【61561】Re:VBE テキスト入力 工藤 等 09/5/18(月) 5:12 回答[未読]

【61496】VBE テキスト入力
質問  tuki  - 09/5/13(水) 17:31 -

引用なし
パスワード
   エクセルVBEの質問です。
現在、下記の様にユーザーホームのTextBox1に記入したものがSheet1のA列に、TextBox2に記入したものがSheet1のB列に順次記入されていくようにしているのですが、
TextBox1かTextBox2いずれかでもなにも入力されなかった場合CommandButton1を押してもSheet1に入力されず "入力されていない箇所があります" 
と警告がでるようにしたいのですがどのようにすればよいでしょうか。
よろしくお願いします。
-----------------------------------------------------------------
Private Sub CommandButton1_Click()
Dim lRow As Long
  TextBox1.SetFocus
  
  With Worksheets("Sheet1")
    lRow = .Range("A" & Rows.Count).End(xlUp).Row
    With .Range("A" & lRow + 1)
    .Value = TextBox1.Value
      If CheckBox1.Value = True Then
        .Interior.ColorIndex = 3
      End If
    End With
  End With

  With Worksheets("Sheet1")
    lRow = .Range("B" & Rows.Count).End(xlUp).Row
    With .Range("B" & lRow + 1)
    .Value = TextBox2.Value
      If CheckBox1.Value = True Then
        .Interior.ColorIndex = 3
      End If
    End With
  End With
End Sub
-----------------------------------------------------------------

【61497】Re:VBE テキスト入力
回答  つん  - 09/5/13(水) 17:40 -

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

最初に

  If TextBox1.Value = "" Or TextBox2.Value = "" Then
    MsgBox "入力されていない箇所があります"
    Exit Sub
  End If

って感じで判定させたらいかがでしょ?

【61510】Re:VBE テキスト入力
発言  tuki  - 09/5/14(木) 9:39 -

引用なし
パスワード
   こんにちは^^
つんさんありがとうございます。
教えて頂いた式でできました。

今後ユーザーフォームにTextBoxを10個、ComboBoxを20個ほど増やそうと考えてるのですがその場合も同じように入力されていない場合はメッセージを出したいのですが教えていただけますでしょうか。



【61514】Re:VBE テキスト入力
回答  つん  - 09/5/14(木) 10:05 -

引用なし
パスワード
   おはようございます^^

>今後ユーザーフォームにTextBoxを10個、ComboBoxを20個ほど増やそうと考えてるのですがその場合も同じように入力されていない場合はメッセージを出したいのですが教えていただけますでしょうか。

こんな感じかなあ

  Dim i As Long
  
  For i = 1 To 10
    If Me.Controls("Textbox" & i).Value = "" Then
      MsgBox "入力されていない箇所があります"
      Exit Sub
    End If
  Next i

一つでも未入力があったらNGということなんで、入力されてないのん見つけたら、そくアウトってことで。

コンボボックスも同じ要領で。

どちらも名前は、連番のついた名前にしてね^^

【61517】Re:VBE テキスト入力
発言  tuki  - 09/5/14(木) 11:29 -

引用なし
パスワード
   つんさんご指導ありがとうございます^^

ご指導頂いたとうりにテキストボックスは出来ました。
勉強不足のためコンボボックスのほうを追加するとうまくいかず、コンパイルエラーが出てします。

【61518】Re:VBE テキスト入力
発言  つん  - 09/5/14(木) 11:39 -

引用なし
パスワード
   >ご指導頂いたとうりにテキストボックスは出来ました。
>勉強不足のためコンボボックスのほうを追加するとうまくいかず、コンパイルエラーが出てします。

え〜?
どういうコード書かはりました?

Me.Controls("TextBox" & i).Value = ""

の「TextBox」を「ComboBox」にしたらええだけと思うんですが・・

「コンパイルエラー」って、どういうメッセージでした?
「変数が定義されてません」とかだったら、
ComboBox を「””」で囲ってないとか????

【61519】Re:VBE テキスト入力
発言  tuki  - 09/5/14(木) 11:48 -

引用なし
パスワード
   >え〜?
>どういうコード書かはりました?
>
>Me.Controls("TextBox" & i).Value = ""
>
>の「TextBox」を「ComboBox」にしたらええだけと思うんですが・・
>
>「コンパイルエラー」って、どういうメッセージでした?
>「変数が定義されてません」とかだったら、
>ComboBox を「””」で囲ってないとか????


お手数おかけします><
下記のように書いてみたのですが、「プロシージャが大きすぎます」というコンパイルエラーでした。><
-------------------------------------------------------
Dim i As Long
 
  For i = 1 To 10
    If Me.Controls("Textbox" & i).Value = "" Then
      MsgBox "入力されていない箇所があります"
      Exit Sub
    End If
  Next i
  For i = 1 To 10
    If Me.Controls("ComboBox" & i).Value = "" Then
      MsgBox "入力されていない箇所があります"
      Exit Sub
    End If
  Next i

-------------------------------------------------------

【61520】Re:VBE テキスト入力
発言  つん  - 09/5/14(木) 12:12 -

引用なし
パスワード
   >お手数おかけします><
>下記のように書いてみたのですが、「プロシージャが大きすぎます」というコンパイルエラーでした。><

あ〜 それだったら、そこが問題なんじゃなくて、
エラーメッセージそのまんま、プロシージャのサイズ(行数)が大きすぎるんじゃないでしょうか?
何千行も書いてるとか???

対処は、サブルーチンで分けるとかかなあ・・・

ちなみに「プロシージャが大きすぎます」で検索かけると、結構たくさん出てきますよ^^
tukiさんの状況にあった解決策が見つかるかも^^

【61523】Re:VBE テキスト入力
お礼  tuki  - 09/5/14(木) 13:23 -

引用なし
パスワード
   >ちなみに「プロシージャが大きすぎます」で検索かけると、結構たくさん出てきますよ^^

試しにいくつか行を消してみたところ成功しましたので、つんさんの仰ったとおり成功しましたので式自体は合っていたみたいです^^

検索でサブルーチンでの分け方を学んでみたいとおもいます。
つんさんどうもありがとうございました。

【61561】Re:VBE テキスト入力
回答  工藤 等 E-MAIL  - 09/5/18(月) 5:12 -

引用なし
パスワード
   ▼tuki さん:
>エクセルVBEのマクロ入力下記でいかがでしょうか?
>


>-----------------------------------------------------------------
Private Sub CommandButton1_Click()
Dim lRow As Long
  TextBox1.SetFocus
  With Worksheets("Sheet1")
    lRow = .Range("A" & Rows.Count).End(xlUp).Row
      If TextBox1.Value = "" Or TextBox2.Value = "" Then
        MsgBox "入力されていない箇所があります"
        Exit Sub
      End If
    .Range("A" & lRow + 1).Value = TextBox1.Value
    .Range("B" & lRow + 1).Value = TextBox2.Value
      If TextBox1.Value = True Then
        .Range("A" & lRow + 1).Interior.ColorIndex = 3
      End If
      If TextBox2.Value = True Then
        .Range("B" & lRow + 1).Interior.ColorIndex = 3
      End If
  End With
  TextBox1.Text = ""
  TextBox2.Text = ""
End Sub

>-----------------------------------------------------------------

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