• 締切済み

Excel2003で動作するものがExcel97で使用できません!

Excel20031で動作している下記VBAがExcel97では動作しません。問題のところのみ記述します。 Private Sub CommandButton2_Click() Dim fStr As String, foundCell As Range Dim i As Long, j As Long Dim x As Range, y As Range fStr = TextBox1.Text Set iSheet = iBook.Sheets(1) Set foundCell = iSheet.Range("K:K").Find(fStr, lookat:=xlWhole) これで何をしているかというと、「判定フォーム」シートから別のシートを呼び出し、判定フォームに入力した値を検索して、その行に書かれている値を判定フォームに取り込むという動作をしています。Excel2003では動作するのですが、Excel97では Set foundCell = iSheet.Range("K:K").Find(fStr, lookat:=xlWhole) のところで「RangeクラスのFindプロパティを取得できません」というエラーが出てしまいます。2003と97で何か違うところがあるのでしょうか。わかる方ぜひ教えてください。よろしくお願いいたします!!!

みんなの回答

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

Excel97のバグです。 シートに置いたActiveX オブジェクト(ここでは CommandButton )から 実行した場合に、クリックした時点でフォーカスが ActiveX オブジェクトに 移るためアクティブなシートやセルを見失ってしまうとか、、、 そんな感じだったように思います。 パート2のご質問も同じようにすれば良いかと思います。

TICA6
質問者

お礼

パート2の方も同様にしたらなおりました! 97のバグだったのですね。 参考になりました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

全体が見えないので何とも言えませんが、、 Set iSheet = iBook.Sheets(1)  '↓ここにこれを入れるとどうでしょう。  activecell.activate Set foundCell = iSheet.Range("K:K").Find(fStr, lookat:=xlWhole)

TICA6
質問者

お礼

なおりました!!!!! 本当にありがとうございます。 2日間くらい悩んでいたのですが、これで解決しました!おかげで助かりました。。 なぜこれを入れると動作するのですか?時間があれば教えてください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 2つの条件が一致した場合です

    下記のコードは、工事元帳複写シートのL列の金額を工事台帳に記述するものです。 Sub 工事台帳記述() Dim iRow As Long Dim FoundCell1 As Variant, FoundCell2 As Variant Dim MySheet1 As Worksheet, MySheet2 As Worksheet Set MySheet1 = Worksheets("工事台帳") Set MySheet2 = Worksheets("工事元帳複写") Set FoundCell1 = MySheet2.Range("F:F").Find(what:=MySheet1.Range("E1").Value, LookIn:=xlValues, LookAt:=xlWhole) <工事元帳複写のF列の値が工事台帳のE1に一致> Set FoundCell2 = MySheet1.Range("C14:O14").Find(what:=FoundCell1.Offset(0, 23).Value, LookIn:=xlValues, LookAt:=xlWhole) <工事台帳のC14からO14までのコードが工事元帳複写のAC列の 値と一致したら日付等を工事台帳に以下のコードで記述> iRow = MySheet1.Range("a10000").End(xlUp).Row + 1 MySheet1.Cells(iRow, 1).Value = FoundCell1.Offset(0, -4).Value MySheet1.Cells(iRow, 1).NumberFormatLocal = "m月d日" MySheet1.Cells(iRow, 2).Value = FoundCell1.Offset(0, 20).Value MySheet1.Cells(iRow + 1, 2).Value = FoundCell1.Offset(0, 21).Value FoundCell2.Offset(iRow - 14, 0).Value = FoundCell1.Offset(0, 6).Value End Sub このコードではF列の値が同一の場合には一つしか記述しません。 上記で記述した下の行につづけて表示したいのです。 ご指導お願いします

  • VBA 特定もセルに入力で実行

    下記のコードを実行した際は問題なく実行されるのですが これを特定のセルに値が入力された際に動かそうとするとエラーになってしまいます。 Sub PaintTargetCharacter() Dim FoundCell As Range, FoundCell2 As Range Dim Addr As String Dim Addr2 As String Dim SearchArea As Range Dim SearchArea2 As Range Application.ScreenUpdating = False ActiveCell.Interior.ColorIndex = 0 '検索対象範囲 Set SearchArea = Worksheets("G番情報").Range("AE6:BG6") '検索実行 Set FoundCell = SearchArea.Find(What:=ActiveCell.Offset(0, -1), LookIn:=xlValues, _ LookAt:=xlPart, MatchCase:=False, MatchByte:=False) '検索文字列を含むセルがない場合は終了 If FoundCell Is Nothing Then Exit Sub Set SearchArea2 = Range(FoundCell.Offset(1, 0), FoundCell.Offset(33, 0)) Set FoundCell2 = SearchArea2.Find(What:=ActiveCell, LookIn:=xlValues, _ LookAt:=xlPart, MatchCase:=False, MatchByte:=False) If FoundCell2 Is Nothing Then Exit Sub FoundCell2.Copy Destination:=ActiveCell Application.ScreenUpdating = True End Sub 当然、特定のセルで値を入力後エンターキーを押すとアクティブセルは下に下がってしまうので Private Sub Worksheet_Change(ByVal Target As Excel.Range) Target.select Call PaintTargetCharacter End Sub としているのですが Set FoundCell = SearchArea.Find(What:=ActiveCell.Offset(0, -1), LookIn:=xlValues, _ LookAt:=xlPart, MatchCase:=False, MatchByte:=False) の部分でエラーが起きてしまいます。 また停止してシートに戻るとセルのカーソル表示が消えてしまいます。 この現象はシートを閉じて再度開くと直りますが なにかエラーと関係しているのでしょうか? 初心者なのでおかしな部分が多々あると思います。 ご指摘などあれば宜しくお願いします。

  • どうして、VBA動作後に固まるのですか?

    Windows XP Home Edition Excel 2002 変更前は、全く問題なく動作しましたが、 下記のように1行だけ変更しただけで動作後に固まってしまいます。 このようなことは初めてなのですが、 何卒、ご教授お願い致します。 Sub 動作後に固まる() '注意 Dim c As Range Do Set c = Range("A:A").Find(what:="No 01", LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then Exit Do 'c.Offset(-1, 0).Resize(3, 1).EntireRow.Delete '変更前 c.Offset(1, 0).FormulaR1C1 = "固まる" 'この1行だけこのように変更しただけです Loop End Sub

  • マクロ findを使用しての列番号検索

    いつも回答して頂き、とても感謝しています。 質問内容ですが、 FINDを使用して列番号を検索する時、FINDでセル位置を取り出し、そのセル位置を元に列番号を取り出しています。FINDの記述部分で列番号を検索するにはどうしたらよろしいのでしょうか?宜しくお願い致します。 Dim 項目1 As Range Dim c1 As Long If Application.CountIf(Rows(4), "みかん") = 1 Then Set 項目1 = ws2.Rows(4).Find(what:="みかん", LookIn:=xlValues, lookat:=xlWhole, _ SearchOrder:=xlByColumns, searchdirection:=xlPrevious) c1 = 項目1.Column End If

  • ExcelのVBA ListBox.RowSourceの範囲について教えてください。

    下記のように範囲を変数で検索指定したいのですが、うまくいきません。VBAは初心者です。誰か助けて。 内容は・・・五十音順にあるリストを作り、ウ音のみをListBoxに表示したいのですが。 Private Sub ToggleButton3_Click() Dim A As Range Dim BBB As String Dim C As Range Dim DDD As String Set A = Cells.Find(what:="ウ", lookat:=xlWhole) BBB = Cells(A.row, A.Column + 1).Address Set C = Cells.Find(what:="エ", lookat:=xlWhole) DDD = Cells(C.row - 1, C.Column + 1).Address ListBox商品名.RowSource = "BBB:DDD" End Sub PS 違う方法でもいいのでどなたか教えてください。

  • マクロの関係で困ってしまいました。印刷できません

    Sub Sample3() Dim i As Long, k As Long, c As Range, r As Range i = InputBox("入替え元番号を入力") k = InputBox("入替え先番号を入力") Set c = Range("A:A").Find(what:=i, LookIn:=xlValues, lookat:=xlWhole) Set r = Range("A:A").Find(what:=k, LookIn:=xlValues, lookat:=xlWhole) On Error Resume Next If c.Row < r.Row Then i = c.Row k = r.Row Else i = r.Row k = c.Row End If Rows(k + 1).Insert Rows(i).Cut Cells(k + 1, "A") Rows(k).Cut Cells(i, "A") Rows(k).Delete End Sub  上記のようなマクロを組んで頂いたのですが、「改ページ位置を移動できません」という状況になっています。せっかくgooの質問で答えて頂いたのですが、これでやったら80行ぐらいから、この表示が出て、解決できません。どなたか、解決して頂けませんか。その時に補足すればよかったのですが、動かしてみて分かった次第です。お答え頂いた方に大変申し訳なく思っています。よろしくお願いします。  なお、間違った入力をしてしまった時に、一回だけは元に戻るなんてことはできないですかね。これもできたら厚かましいですがお答え頂けたらと思います。

  • FINDで複数ヒットする場合

    EXCELで 範囲(A1:J2)で「東京」が存在する最初の列番号は以下で求められますが 範囲内には、他にも「東京」が複数ヒットします。 その場合は、どのようなコードになりますか ? 作業手順として考えたのは 最初に見つけた「東京」の次の列からを検索範囲に変更して次の「東京」をFIND 同じように検索範囲を次々と変更して最終的に「東京」が見つからなかったらFINDを終了すれば良さそうですが? 又、 他に良いコードがあれば教えてください。 Sub FindColumns() Dim searchString As String Dim searchRange As Range Dim foundCell As Range Dim columnNumbers As String ' 検索する文字列を指定 searchString = "東京" ' 検索範囲を指定 Set searchRange = Range("A1:J2") ' 検索を実行 Set foundCell = searchRange.Find(What:=searchString, LookIn:=xlValues, LookAt:=xlPart) If foundCell Is Nothing Then MsgBox "「東京」が見つかりませんでした。" Else MsgBox "ヒットした列番号: " & foundCell.Column End If End Sub

  • ユーザーフォーム オプションボタン について

    ユーザーフォーム内にオプションボタンを21個作っており、 Private Sub CommandButton1_Click() Dim SerchArea As Range '検索範囲(シート名指定) Set SearchArea = Sheets("1").Range(Range("A:A"), Range("A:A").End(xlDown)) '検索処理(引数:LookAt に xlWhole で完全一致 Set FoundCell = SearchArea.Find( _ What:=Me.TextBox1.Value, _ SearchOrder:=xlByRows, _ LookAt:=xlWhole, _ LookIn:=xlValues, _ MatchCase:=False) '商品コードが無い場合の処理 If FoundCell Is Nothing Then MsgBox "ありません!", vbCritical GoTo ExitHandler End If '見つかった場合の処理 With FoundCell Me.TextBox1.Value = .Offset(0, 0).Value Me.TextBox2.Value = .Offset(0, 11).Value Me.TextBox3.Value = .Offset(0, 12).Value Me.TextBox4.Value = .Offset(0, 4).Value テキストボックスにセルの値が入るようにしており、追加でオプションボタンを付けて更新としたいのですが、21個のうちどれか一つを選択して、その値をZ列に反映させたいのですが Private Sub CommandButton2_Click() With FoundCell .Offset(0, 13).Value = Me.TextBox20.Value .Offset(0, 4).Value = Me.TextBox4.Value .Offset(0, 5).Value = Me.TextBox5.Value ここの追加でオプションボタンを設定するにはどうすれば良いでしょうか?

  • 「実行時424 オブジェクトが必要です」が出ます

    全く理解できていない初心者です。 あるサイトで見つけたマクロです。 「検索結果のセルをすべて選択する」 Sub SelectTargets() Dim Target As String Dim FoundCell As Range, SearchArea As Range Dim Addr As String Dim FoundAddr() As String Dim i As Long Target = Application.InputBox("検索文字列入力", "検索", Type:=2) If Target = "False" Then Exit Sub Set SearchArea = ActiveSheet.UsedRange * Set FoundCell = SearchArea.Find(what:=Target, LookIn:=xlValues, _ LookAt:=xlPart, MatchCase:=False, MatchByte:=False) If FoundCell Is Nothing Then Exit Sub Addr = FoundCell.Address Do ReDim Preserve FoundAddr(i) '配列の内容を維持したまま再宣言 FoundAddr(i) = FoundCell.Address '検索結果のアドレスを配列に格納 Set FoundCell = SearchArea.FindNext(After:=FoundCell) i = i + 1 If FoundCell Is Nothing Then Exit Do Loop Until FoundCell.Address = Addr '配列に格納されたアドレスをカンマ区切りで結合し、セル範囲を一括選択 Range(Join(FoundAddr, ",")).Select '---(1) End Sub ↑家のエクセル(2010)では完璧でできるのですが、会社のエクセル(2003)では、「実行時424 オブジェクトが必要です」とエラーメッセージが出ます。 コードの入力ミスがありました。 上から2行目  Dim foundcell As Range, sercharea( 正 seacharea)As Range 後は、入力ミスはなさそうなのですが、実行キーを押すと 「実行時424 オブジェクトが必要で」と出ます。 黄色のマーカーが出るのが、*印を置いた ↓に出ます。 Set FoundCell = SearchArea.Find(what:=Target, LookIn:=xlValues, _ LookAt:=xlPart, MatchCase:=False, MatchByte:=False) 後、気になるのがコードを入力して 「target」「searcharea」「foundcell」「foundaddr」「addr」などが頭文字が大文字になりません。 無理やり大文字にしてみたりしましたが… 「オブジェクトが必要です」に関係あるのかないのかも分かりませんが、なぜ、エラーが出てしまうのか? 入力ミスが原因なのか? 何が足りないのか?何か不要なコードがあるのか? どの用意すればいいのか教えていただけませんか? よろしくお願いします。

  • 行の削除

    列Kに、削除という文字が入っている場合は、その行を削除するということで、3000行くらいあるなかで3分の2程度は削除する行に該当します。 下のマクロで試してみましたが、このマクロではとっても時間がかかってしまうんですが、どうしたら早く処理できるのか教えて下さい。 Dim R As Range Do Set R = ActiveSheet.Range("K:K").Find(What:="削除", LookAt:=xlWhole) If R Is Nothing Then Exit Sub R.EntireRow.Delete Loop

TS5030SでWORD A4が印刷できない
このQ&Aのポイント
  • TS5030Sを使用していますが、WORD A4の印刷ができません。
  • 印刷できないのはWORDの一部のファイルのみで、印刷待ち一覧にも表示されません。
  • 印刷の指定をすると表示が右半分にしか表示されません。
回答を見る