• ベストアンサー

ExcelVBAでUserFormのカウント

kkkkkmの回答

  • kkkkkm
  • ベストアンサー率65% (1638/2486)
回答No.3

> .Deleteでエラーになってしまいました。 開いているフォームのコントロールを削除できるのはControls.Addで動的に作成したコントロールだけだと思います。

emaxemax
質問者

お礼

ありがとうございます。ユーザーフォームは呼び出していません。閉じたままなのですが。

関連するQ&A

  • セルに対してFor Each~In~Nextを使う

    セルに対してFor Each~In~Nextを使う事は出来ない? シートやブックに対してループする時は Sub aaa() Dim w As Worksheet For Each w In Worksheets MsgBox w.Name Next End Sub 等を使いますが、 A1に「あ」 A2に「い」 A3に「う」 が入っている場合、 Sub bbb() Dim i As Long For i = 1 To Range("a65536").End(xlUp).Row MsgBox Cells(i, 1) Next End Sub で、全ての値を取得できますが、 For~to~nextではなく セルに対してFor Each~In~Nextを使う方法があれば教えてください。 上記のように Dim w As Worksheetは宣言できますが Dim c As Workcellとはできませんでした。 なぜわざわざFor~to~nextでできる事をFor Each~In~Nextでやりたいかと言うと、 シートやブックはFor~to~nextでできるのに、セルはFor~to~nextができない理由を知りたいからです。 ご回答よろしくお願いします。

  • VBAのUserFormのイベント

    VBAの公式問題集の練習をしているのですが、分からないことがあるので質問致します。 UserFormのイベントを使ってコードにマクロを作成したのですが、ユーザーフォームの実行を押しても、コンパイルエラーが表示されてしまいます。 具体的なマクロの式ですが、 Option Explicit Private Sub UserForm_Initialize() Dim i As Long TextBox1.Text = "UserFormの初期化" For i = 1 To 5 Listbox1.AddItem "Sample" & i Next i Listbox1.ListIndex = 2 End Sub です。 エラーには、コンパイルエラー: TextBox1が表示され、変数が定義されていませんと出ます。 どのようにしたらいいのでしょうか。 どなたかお分かりになるかたがいらっしゃいましたら教えて下さい。 お願いします。

  • AddItem をクリアしたい

    UserForm1.ListBox1.AddItem をクリアしたいです。 エクセルのユーザーフォームに全てのシート名を追加してるのですが Sub a() Dim s As Worksheet For Each s In Worksheets UserForm1.ListBox1.AddItem s.Name Next End Sub を実行する度に追加されてしまいます。 Sub a() Dim s As Worksheet UserForm1.ListBox1.AddItem Null For Each s In Worksheets UserForm1.ListBox1.AddItem s.Name Next End Sub のように、最初にリセットしてから追加したいのですが どうもNULLだとエラーになるようです どうすればリセットできますか?

  • エクセル2003のVBAで列を指定

    エクセルで特定の列の2~10行目に対して、ある作業をする場合、列を指定する方法は以下のどれがいいでしょうか?あるいはもっといい方法があれば教えてください。 実際には列は約40列(固定)、行は1~2万行(変動)程度で、作業はもっと複雑です。 Sub test01() Dim col Dim i As Long, n As Long For Each col In Array(1, 3, 7, 8, 11) '列番号で指定 For i = 2 To 10 n = n + 1 Cells(i, col).Value = n Next i Next col End Sub Sub test02() Dim col Dim i As Long, n As Long For Each col In Array("A", "C", "G", "H", "K") '列の記号で指定 For i = 2 To 10 n = n + 1 Cells(i, col).Value = n Next i Next col End Sub Sub test03() Dim col Dim i As Long, n As Long For Each col In Range("A2,C2,G2,H2,K2") 'セルで指定 For i = 2 To 10 n = n + 1 col.Offset(i - 2).Value = n Next i Next col End Sub

  • なぜiは変数の値が保持されるのに、wは保持されない

    なぜiは変数の値が保持されるのに、wは保持されないのでしょうか? Sub test() Dim w As Worksheet Dim i As Long i = 1 For Each w In Worksheets i = i + 1 Next MsgBox i MsgBox w.Name End Sub -------------------------------------- を行うと、 MsgBox i は表示されるのに、 MsgBox w.Name は、 「オブジェクト変数または With ブロック変数が設定されていません。」になります。 wはオブジェクト変数だから、 For Each ステートメントを抜けると値が破棄されてしまうのでしょうか? でもvbaのヘルプの 「For Each...Next ステートメントの使い方」 を見ても 「ステートメントを抜けるとオブジェクト変数なら値が破棄されます」 と記載されていません。

  • 動的配列の後始末?

    以下のサブルーチンで、lines()と動的配列を定義して、Splitでデータを入れたのですが、このサブルーチンが終了すると、lines()はデータも含めて解放されるのでしょうか? 極端な話、1億回このサブルーチンを呼ぶと、メモリーリークするのでしょうか? それと、VB6やVB.NETでは、For文・For Each文のどちらを使う方が良いのでしょうか? Sub test() Dim lines() As String lines = Split(Data, vbCrLf, -1, vbBinaryCompare) Dim i As Integer For i = LBound(lines) To UBound(lines) MsgBox ("for=[" & lines(i) & "]") Next i Dim s As Variant For Each s In lines MsgBox ("for each=[" & s & "]") Next End Sub

  • ExcelVBAの知恵をお貸しください。

    一つのシートで、複数のセル範囲を選択している場合に、セル範囲を選択しているのか?列、行を選択しているのかを判別する方法として次のようなのを考えました。 それとなく動いているのですが、なんとなくスマートでなく、場当たり的な感じがしますが、どのようにすればいいのか判りません!! どなたか、アドバイス頂けないでしょうか?宜しくお願いいたします。 Sub test()  Dim myRang As Range  Dim myArry As Variant  For Each myRang In Selection.Areas myArry = Split(Replace(myRang.Address, ":", ""), "$") If UBound(myArry) <> 2 Then   MsgBox "セル範囲を選択しています。" & myRang.Address Else If IsNumeric(myArry(1)) Then MsgBox "行を選択しています。" & myRang.Address Else MsgBox "列を選択しています。" & myRang.Address End If End If  Next End Sub

  • フォーム1が開いているのならMsgBoxを表示

    Sub マクロ() If フォーム1が開いているのなら Then MsgBox "フォーム1は開いています" End If End Sub アクセスで上記の事をやりたいのですが、コードを教えていただけますか? Sub test() Dim myForm As Form For Each myForm In Forms Debug.Print myForm.Name Next End Sub で、フォームをループできるのですが、いちいちループさせずに、フォーム1だけをつかんで、 起動している(開いている)ならメッセージボックスを表示させたいです。

  • VBAで文字列のカウントがうまくいかない・・・です

    Dim cnt As Long Dim i As Long Dim lastRow As Long For i = 1 to 20 step 2 lastRow = Cells(65536, i).End(xlUP).Row cnt = WorksheetFunction.CountIf(ActiveSheet.Range(Cells(10, i),Cells(lastRow, i), "お世話になっております")cnt = cnt + cnt Next Excelのセルを1列ずつ飛ばして列に「お世話になっております」が含まれたら件数をカウントしています。 そのカウント数が何故かリセットされてしまいます。 カウント数を足していきたいのですが・・・考え方自体が違うのでしょうか?

  • VBA_UserFormの初期値

    毎度お世話になっております。 UserFormを開いた時に、UserForm内にあるTextBoxに初期値として 文字を入れたいのですが、表示されません。 原因が判りません。判りましたらご教授お願いします。 プロジェクトの状況 ワークシート3枚(内コード有1枚 シート名:表紙) フォーム2つ(フォーム名:UF1・UF2) 表紙にあるAボタンを押したらUF1が開くBでUF2が開くようなマクロです。 シート"表紙"コード Private Sub CommandButtonA_Click() UF1.show End Sub UF1(コード) Private Sub UF1_Initialize() TextBox.Value="文字" End Sub "文字"をUF1フォーム内に最初から出したいと考えてます。 宜しくお願いします。