VBAによるユーザーフォーム上のスプレッドシート編集コード

このQ&Aのポイント
  • VBAを使ってユーザーフォーム上に設置したスプレッドシートを編集する方法について教えてください。
  • スプレッドシートのデータをエクセルシートに移動するコードはうまく動作しますが、スプレッドシート自体のデータの追加や削除ができません。
  • スプレッドシートの特定の範囲の値をクリアしたい場合、適切なコーディングが必要なのでしょうか?
回答を見る
  • ベストアンサー

VBAにて、ユーザーフォーム上に設置したスプレッドシートを編集するコー

VBAにて、ユーザーフォーム上に設置したスプレッドシートを編集するコード VBAにて、OMC?という機能を使ってユーザーフォームにスプレッドシートを複数設置しました。 このスプレッドシート上にあるデータを、エクセルシートに持ってくる事はできたのですが、スプレッドシートそのもののデータの追加、削除等が出来ません。 スプレッドシート→エクセルシートへのデータ移動はこのようなコードを使っています。これは問題なく動きました。 Sheets("DB").Range("H1").Value = UserForm1.Spreadsheet2.Range("A" & cnt).Value ですが、逆に UserForm1.Spreadsheet2.Range("A" & cnt).Value = Sheets("DB").Range("H1").Value としても、エラーは出ませんが反映されないようです。 やりたい事は、スプレッドシートのある範囲の値をクリアしたいというもので UserForm1.Spreadsheet1.Range("B10:H22").Select Selection.Clear このように設定したのですが、やはり反映されません。 ユーザーフォーム上のスプレッドシートを編集するには、何か特別なコーディングが必要なのでしょうか?

noname#147339
noname#147339

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

当方の Excel2003 + OWC11のスプレッドシートでは お示しのコードで動作していますよ スプレッドシートのシートを指示していないのでアクティブシートに対しての操作になっているはずです cntの値自体は期待通りなのでしょうか UserForm1.Spreadsheet1.Range("B10:H22").Select で選択自体は出来ていますか? Selection.Clear と記述してしまうとExcelのシートに対しての動作になってしまうと思います スプレッドシートに対して行いたいのであれば UserForm1.Spreadsheet1.Selection.Clear といった具合にオブジェクト指定するか With/End With などで指示しておきましょう With UserForm1.Spreadsheet1   .Range("B10:H22").Select   .Selction.Clear End With といった具合です

関連するQ&A

  • VBA ユーザフォームを非アクティブ固定にしたい

    エクセルVBAで作成されたプログラムで、一点改善したい点があります。 処理の開始を命令すると、ユーザフォームが出てきて進捗が「5/100が完了しました」のように 分かるようになっているんですが、処理が進み、この「5/100」の部分が更新される度に フォーカスがユーザフォームに移ってしまい、他の作業をしていると大変不便です。 ユーザフォームまわりのコードは以下のようになっています。 UserForm11.Show UserForm11.Label2.Caption = "処理実行中です。" & "(" & cnt1 & "/" & cnt2 & ")" 進捗を確認しつつ、かつフォーカスしないようにするようなコードはありませんでしょうか。

  • VBA ユーザーフォーム

    こんばんわ。 VBA、ユーザーフォームで、ListBoxか、Comboboxで、セルの値を参照し、そこから1つ選択するようにするにはどういうコードがりますか? Private Sub Userform_Initialize   Listbox1.AddItem "700" Listbox1.AddItem "701"   ・・・・・   ・・・・・   ・・・・・ End Sub と、やると、ListBoxには反映しますが、列が多すぎて、作成するのに手間が掛かる為、例えば、"700" の値に、Sheets(1)のC2から、C500の値を入れるようなコードはありますか? 宜しくお願いします。

  • VBAでユーザーフォームからクラスモジュールの関数を呼び出したい

    ExcelのVBAでの質問です。 クラスモジュールよりユーザーフォームを呼び出し、そこから呼び出したクラスモジュールにある関数を呼び出したいと思っています。 ところが、実行すると 実行時エラー'91': オブジェクト変数またはWithブロック変数が設定されていません。 と表示されてしまいます。 以下に、コードを抜粋します。 ------------------------------------------------------------ ・ClassDataBase(クラスモジュール) Public Function EmployeeEdit() Load DBUserEdit DBUserEdit.Show Unload DBUserEdit End Function Public Function DataBaseRead(ByVal Table As Variant, Optional ByVal Filter As Variant) DataBaseBook.Sheets(Table).Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = "temp" Range(Range("B3"), ActiveCell.SpecialCells(xlCellTypeLastCell)).Select End Function ------------------------------------------------------------ ・DBUserEdit(ユーザーフォーム) Private Sub UserForm_Initialize() Dim DB As New ClassDataBase DBAuthority.List = Array("Admin", "User", "Data") DBAuthority.Value = "Admin" 'この次の行でエラーを起こしていると思われます DB.DataBaseRead ("社員情報") End Sub ------------------------------------------------------------ どうすればいいのでしょうか? よろしくお願いいたします。

  • 【Excell VBA】ユーザーフォーム上のスプレッドシートのセルを選択したときのイベント

    Excell VBA にて、 ユーザーフォーム(userForm1)に、スプレッドシートを 1)その他のコントロール 2)Microsoft Spreadsheetを追加 によって追加して、 そのspreadSheet1上のsheet1の任意のセル(D:*)をクリックしたとき、その行のD1:D5k一連の値を変数に代入したいのですが、 まず手始めとして、そのセルを選択したときにイベントを発生させたい。  該当のセルを選択してプロシージャを追加すると Private Sub Spreadsheet1_BeforeContextMenu( _ ByVal x As Long, _ ByVal y As Long, _ ByVal Menu As OWC11.ByRef, _ ByVal Cancel As OWC11.ByRef _ ) となります。 比較のため Private Sub Spreadsheet1_SelectionChange(ByVal Target As Range)   If Target.Address() = "$A$1" Then     MsgBox "このセルはA1です。"   End If End Sub だと、 Error・・・「コンパイル エラー: プロシージャの宣言が、イベントまたはプロシージャの定義と一致していません。」 ・・・どうすればよいのでしょう。 最終的には、「その行のいくつかの値を変数に代入したい」のですが

  • Excel VBA ユーザーフォームについてs

    ExcelVBAでユーザフォームを作成していますが行き詰まっています。 お助け下さい m(__)m VBAの処理内容を新Sheetへ保存し、 その内容をユーザフォームへWorkSheetとして表示させて エンドユーザに直接編集してもらおうと思っています。 ユーザフォームの『コントロールの追加』で「Microsoft Office Spreadsheet XX.X」を追加して 空のWorkSheetを追加することは出来たのですが、 このWorkSheetを空でなく前出の処理内容を反映したSheetにすることは出来るでしょうか? VBA処理 ⇒ 結果反映WorkSheet(1)作成 ↓ ユーザフォーム表示 : (1)を表示したい よろしくお願いします。

  • ユーザーフォームのデータを他のシートへコピーしたいのですが

    オフィス2003VBAでユーザーフォームのスプレッドシートにあるデータを別のシートにコピーをしようとしています。 マクロを実行すると、以下のコードがエラーとなってしまいます。 どう直せばよいか教えていただけないでしょうか? できればクリップボードの経由なしでコピーをしたいです。 よろしくお願いします! Spreadsheet1.Range(Cells(V1_row + 1, V1_col), Cells(V1_row + 2880, V1_col)).Copy _ ThisWorkbook.Worksheets(\"04-02_cbt\").Range(\"B8\")

  • Excel VBA ユーザフォーム

    Excel VBAのユーザフォームについて質問です。 UserForm1の枠の中に、CommandButton1とCommandButton2を追加し  Private Sub CommandButton1_Click()  Range("AA3").Select  Range("AA3").Activate  End Sub とし、AA3のセルへデータ入力をしたいと試みましたが、CommandButton1から カーソルが移動しますが、データ入力ができません。 また、この他にも、CommandButton2をクリックすると、AB4のセルへ移動してデータを 入力したいのですが・・・ どなたか、ご教授をお願いいたします。

  • vba ボタン押すとユーザフォーム、リストをクリア

    vba で、実行すると、ユーザフォームとリストBOXに結果を反映するものをつくりましたが、 この反映された結果を、ボタンを押すとクリアにしたいのです。 ユーザフォーム、リストボックスの内容をクリアするには、どのような記述にすればよろしいでしょうか?

  • オフィス2003VBAのスプレッドシートでドラッグ&ドロップは可能でしょうか?

    オフィス2003VBAで、ユーザーフォーム上にあるスプレッドシート1に表示させたデータの項目を、スプレッドシート2へドラッグ&ドロップしたいのですが可能でしょうか? できるのであればVBAコードを教えていただきたいのですが。 ご存知の方、よろしくお願いします。

  • VBA ユーザーフォーム

    VBA初心者です。以下の様なソースを見つけました。この場合は、文字を検索するとD1 にその該当番号が表示されます。 ※A列には番号、B列には文字列 そうではなく、そのクリックした行のA列にセルが移動し、ユーザーフォームが閉じられる様にできますでしょうか? よろしくお願い致します。 Private Sub ListBox1_Click() Sheets("Sheet1").Range("D1").Value = ListBox1.Value End Sub Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) Dim v() As Variant Dim c As Range Dim k As Long ListBox1.Clear With Sheets("Sheet1") With .Range("A1", .Range("A" & .Rows.Count).End(xlUp)) ReDim v(1 To 2, 1 To .Rows.Count) For Each c In .Cells If c.Offset(, 1).Value Like TextBox1.Value & "*" Then k = k + 1 v(1, k) = c.Value v(2, k) = c.Offset(, 1).Value End If Next If k = 0 Then MsgBox "指定の値は存在しません" Else ReDim Preserve v(1 To 2, 1 To k) ListBox1.List = WorksheetFunction.Transpose(v) End If End With End With End Sub

専門家に質問してみよう