マイクロソフト・エクセル97
sheet1上で作った『ユーザー入力フォーム(VB)』を
sheet2からマクロの実行をしても、ユーザー入力フォームのデータがsheet2のものになっています。
sheet2からマクロを実行しても、きちんとsheet1のデータを反映させた(データ表示)いのですが、方法がわかりません。
sheets(sheet1).Select
の記述をしてはみたのですが…。
とりあえず上の記述でうまくいくのですが、この方法でセーブし終了すると、『不正な処理をしたために…プログラムを強制的に終了します』が出てしまします。
No.2ベストアンサー
- 回答日時:
提示されたコードにはPrivate、Publicが種々あり、コードがシート1かユーザーフォームか、またはモジュールのどのコードウインドウに書かれたのか不明で、コードも部分的と思えますし、起動方法も分からないのでかなりの部分は想像で書いています。
100%理解できていません。少しでも進展すればいいですが・・・。試してみて下さい。
●Dim トト結果記録, TBL(1 To 57) As Control
Dim データ範囲 As Range
↓
2行はコメント行にする。
標準モジュールに(を追加し)、以下を追加。この57個のコントロールの意味は分かりません。
Public トト結果記録, TBL(1 To 57) As Control
Public データ範囲 As Range
Public ws1 As WorkSheet
●Private Sub UserForm_Initialize()
Comboチーム011.AddItem "-------J1"
:
Set データ範囲 = Range("A1").CurrentRegion
↓
Private Sub UserForm_Initialize()
Set ws1 = WorkSheets("Sheet1") '追加
Comboチーム011.AddItem "-------J1"
:
Set データ範囲 = ws1.Range("A1").CurrentRegion '修正
●Public Function レコード数取得() As Integer
レコード数取得 = Range("A1").CurrentRegion.Rows.Count - 1
↓
レコード数取得 = ws1.Range("A1").CurrentRegion.Rows.Count - 1 '修正
●Public Sub データ表示(行数 As Integer)
Dim トト結果記録, Cnt As Integer
↓
Dim Cnt As Integer '修正、二重定義になっている?
No.1
- 回答日時:
どのようなコードをかかれているか分かりませんが、UserForm_Initialize を例にして、TextBox1にSheet1のセルA1を表示するには
Private Sub UserForm_Initialize()
With Worksheets("Sheet1")
TextBox1 = .Range("A1")
End With
End Sub
のようにSheet1のセル範囲ということを明記したらどうでしょうか。該当シートをACTIVEにする必要は無いような気がします。
また、例でいえばTextBox1のControlSourceに"A1"(Sheet1のつもり)をセットされていれば、"Sheet1!A1"とすればいいと思います。
保存も問題なくできるはずです。
この回答への補足
> With Worksheets("Sheet1")
でやってみたのですが、うまくいきませんでした。
マクロの記述は書きのとおりです。
(一部省略)
アドバイス、お願いします。
----------------
Dim トト結果記録, TBL(1 To 57) As Control
Dim データ範囲 As Range
Private Sub UserForm_Initialize()
Comboチーム011.AddItem "-------J1"
Comboチーム011.AddItem "市原"
Comboチーム011.AddItem "磐田"
Comboチーム011.AddItem "浦和"
Spinトト節.Max = レコード数取得 + 1
Set TBL(1) = Textトト節
Set TBL(2) = Comboチーム011
Set TBL(3) = Frame結果1
Set TBL(4) = Comboチーム012
Set データ範囲 = Range("A1").CurrentRegion
If データ範囲.Rows.Count = 1 Then
Else
データ表示 2
End If
End Sub
Public Function レコード数取得() As Integer
レコード数取得 = Range("A1").CurrentRegion.Rows.Count - 1
End Function
Public Sub データ表示(行数 As Integer)
Dim トト結果記録, Cnt As Integer
For Cnt = 1 To 57
Select Case Cnt
Case 3
If データ範囲.Cells(行数, Cnt).Value = "H○" Then
Option試合結果011.Value = True
Else
If データ範囲.Cells(行数, Cnt).Value = "H△" Then
Option試合結果010.Value = True
Else
Option試合結果012.Value = True
End If
End If
Case Else
TBL(Cnt).Value = データ範囲.Cells(行数, Cnt).Value
End Select
Next
Textトト節.Value = Spinトト節.Value - 1
End Sub
Private Sub Spinトト節_Change()
If データ範囲.Rows.Count <> 1 Then
データ表示 (Spinトト節.Value)
End If
End Sub
Private Sub Button追加_Click()
Dim AddRow As Integer
AddRow = データ範囲.Rows.Count + 1
データ書き込み (AddRow)
Textトト節.Text = Spinトト節.Value - 1 & "/" & レコード数取得
Set データ範囲 = Range("A1").CurrentRegion
Spinトト節.Max = データ範囲.Rows.Count
Spinトト節.Value = データ範囲.Rows.Count
データ表示 (AddRow)
End Sub
Public Sub データ書き込み(行数 As Integer)
Dim Cnt As Integer
For Cnt = 1 To 57
Select Case Cnt
Case 3
If Option試合結果011.Value = True Then
データ範囲.Cells(行数, Cnt).Value = "H○"
Else
If Option試合結果010.Value = True Then
データ範囲.Cells(行数, Cnt).Value = "H△"
Else
データ範囲.Cells(行数, Cnt).Value = "H×"
End If
End If
Case Else
データ範囲.Cells(行数, Cnt).Value = TBL(Cnt).Value
End Select
Next
End Sub
Private Sub Button登録書込み_Click()
データ書き込み (Spinトト節.Value)
End Sub
Private Sub Button終了_Click()
トトデータ.Hide
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) このプログラムなんですがsheetにデータを置いて表示できるようにしてありますがsheetに101を 2 2023/02/23 20:13
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) VBA 別sheetからの転記なのですが 2 2023/05/22 15:55
- Visual Basic(VBA) VBA For Each 〜 複数条件について 3 2022/10/20 20:05
- PHP PHPSpreadsheetによる書き出し時のページネーション方法について 1 2023/03/20 10:35
- その他(プログラミング・Web制作) ZWCAD CUIXとLISPの関係について 1 2022/09/28 03:07
- Excel(エクセル) 【Excel質問】別シートにある複数の同型の表から、同じ行項目にある数字を集計する 4 2023/02/16 00:14
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで長い行を5行ごとに1...
-
【エクセル】区切り文字が含ま...
-
SUMIFS関数の計算結果が違います
-
エクセルの関数で範囲のある数...
-
テキストデータのPDFをWordで開...
-
差し込み印刷で文字列が「0」と...
-
オブジェクトブラウザでデータ...
-
COUNTIFS関数で日付データを数...
-
EXCEL2010 関数が勝手に変わる
-
エクセル 貼り付け時の文字化け
-
wordデータを、excelに自動で入...
-
斜めの貼り付け
-
エクセルでプルダウン選択され...
-
エクセルで時間の合計ができません
-
使用しているエクセルデータか...
-
エクセルで「データ」の「区切...
-
エクセルで信号解析するには
-
エクセルのマクロで他のシステ...
-
膨大なデーターの変更点のみ抽...
-
エクセルで列にあるユニークな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで長い行を5行ごとに1...
-
【エクセル】区切り文字が含ま...
-
エクセルの関数で範囲のある数...
-
差し込み印刷で文字列が「0」と...
-
エクセルで列にあるユニークな...
-
COUNTIFS関数で日付データを数...
-
SUMIFS関数の計算結果が違います
-
テキストデータのPDFをWordで開...
-
オブジェクトブラウザでデータ...
-
0:00をカウントしない方法
-
エクセルのマクロで他のシステ...
-
エクセル 貼り付け時の文字化け
-
エクセルで時間の合計ができません
-
エクセルでプルダウン選択され...
-
斜めの貼り付け
-
wordデータを、excelに自動で入...
-
エクセルにおいて、数値が入っ...
-
膨大なデーターの変更点のみ抽...
-
DBで改行が入っているデータをE...
-
エクセルで「データ」の「区切...
おすすめ情報