Page 697 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼レコード移動ボタンについて EBA 03/2/6(木) 12:45 ┗Re:レコード移動ボタンについて Jaka 03/2/6(木) 14:42 ┗見落し Jaka 03/2/6(木) 14:51 ┗ごめんなさい。うえの見落しは、無視してください。 Jaka 03/2/6(木) 15:46 ┗Re:レコード移動について EBA 03/2/6(木) 16:06 ┗Re:レコード移動について Jaka 03/2/7(金) 9:08 ┗Re:レコード移動について EBA 03/2/7(金) 10:20 ─────────────────────────────────────── ■題名 : レコード移動ボタンについて ■名前 : EBA ■日付 : 03/2/6(木) 12:45 -------------------------------------------------------------------------
またまたお世話になります。 EXCELVBA初心者のEBAです。 早速ですが質問させていただきたいのです。 A B C 1 設計番号 御得意先名 設計金額 2 10001 にゃんこ建設(株) 1,000 3 10002 わんわん建設(株) 2,000 4 10003 (株)ひつじ 3,000 5 10004 (株)どらどら設計 4,000 6 10005 (株)ふくろう建設 5,000 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ (設計番号は200くらいだとして)というシート(設計List)があります。 ユーザーフォームにテキストボックス1(設計番号)、2(御得意先名)、3(設計金額)。 コマンドボタン1(先頭)、2(ステップ10前へ)、3(前へ)、4(後へ)、 5(ステップ10後へ)、6(最後)をつくり、 セルの内容をリンクさせてレコード移動をしたいのです。 下のようなコードを書いたのですが、コマンドボタン2のステップ10前へ (カレントレコードの10件前へとぶ)のボタンのコードで、もし前に10件以下しかデータが 無い場合は先頭レコードへとぶ、というのがわからいのです。 Controlsourceプロパティを設定できません。プロパティの値が不正です。 というメッセージがでるのですが、どう修正してよいのやら??? コマンドボタン5(ステップ10後へ)はうまく作動するのです。 どなたかご教授お願い致します。 **************************************************** Dim First As Long '最初のレコード Dim Last As Long '最後のレコード Dim Current As Long 'カレントレコード '================================================ Private Sub UserForm_Initialize() Worksheets("設計List").Select First = Range("A1").CurrentRegion.Row + 1 Last = Range("A1").CurrentRegion.Rows.Count Current = Last LinkCell End Sub '================================================ '「先頭」 Private Sub CommandButton1_Click() Current = First LinkCell End Sub '================================================ '「ステップ10前へ」 Private Sub CommandButton2_Click() If Current > FirstRow Then Current = Current - 10 LinkCell If Current < First Then Current = First LinkCell MsgBox "最初のレコードです." End If End If End Sub '================================================ '「前へ」 Private Sub CommandButton3_Click() If Current > First Then Current = Current - 1 LinkCell End If End Sub '================================================ '「次へ」 Private Sub CommandButton4_Click() If Current < Last Then Current = Current + 1 LinkCell End If End Sub '================================================ '「ステップ10次へ」 Private Sub CommandButton5_Click() If Current < Last Then Current = Current + 10 LinkCell If Current > Last Then Current = Last LinkCell MsgBox "最後のレコードです." End If End If End Sub '================================================ '「最後」 Private Sub CommandButton6_Click() Current = Last LinkCell End Sub '================================================ Sub LinkCell() Dim strRang As String strRang = "A" & Current TextBox1.ControlSource = strRang strRang = "B" & Current TextBox2.ControlSource = strRang strRang = "C" & Current TextBox3.ControlSource = strRang End Sub |
こんにちは。 こんな感じで良いんじゃないかと思うんですけど..。 >Sub LinkCell() > Dim strRang As String > strRang = "A" & Current > TextBox1.ControlSource = strRang > strRang = "B" & Current > TextBox2.ControlSource = strRang > strRang = "C" & Current > TextBox3.ControlSource = strRang >End Sub ↓ Sub LinkCell() Dim strRang As String strRang = "A" & Current TextBox1.value = range(strRang).value strRang = "B" & Current TextBox2.value = range(strRang).value strRang = "C" & Current TextBox3.value = range(strRang).value End Sub |
それと、他のはこうした方が....。 '「ステップ10前へ」 Private Sub CommandButton2_Click() If Current > FirstRow Then Current = Current - 10 LinkCell If Current < First Then Current = First LinkCell MsgBox "最初のレコードです." End If End If End Sub ↓ Private Sub CommandButton2_Click() If Current > FirstRow Then Current = Current - 10 LinkCell elseIf Current < First Then Current = First LinkCell MsgBox "最初のレコードです." End If End Sub **************************** Private Sub CommandButton5_Click() If Current < Last Then Current = Current + 10 LinkCell If Current > Last Then Current = Last LinkCell MsgBox "最後のレコードです." End If End If End Sub ↓ Private Sub CommandButton5_Click() If Current < Last Then Current = Current + 10 LinkCell elseIf Current > Last Then Current = Last LinkCell MsgBox "最後のレコードです." End If End Sub |
ごめんなさい。 良く見ませんでした。 |
▼Jaka さん: 素早い回答ありがとうございます。 LinkCellのコードを書き直してみたのですが、 「Rengeオブジェクトは失敗しました。Globalオブジェクト」 というメッセージがでるのです。 なにか良いてだては御座いますでしょうか? それから、大変申し訳ないのですが私のミスでコードに一部誤りが・・・。 Jakaさんのおかげで発見しました。 Private Sub CommandButton2_Click() If Current > FirstRow Then Current = Current - 10 LinkCell elseIf Current < First Then Current = First LinkCell MsgBox "最初のレコードです." End If End Sub の2行目のところ、If Current > First Then でした・・・。 これから気をつけます。^_^; |
おはようございます。 原因は、Currentがマイナスになっちゃう時がある性みたいでした。 下記コードは私の偏見で、余計なものを加えてあります。 Dim First As Long '最初のレコード Dim Last As Long '最後のレコード Dim Current As Long 'カレントレコード Private Sub CommandButton7_Click() Unload Me End Sub '================================================ Private Sub UserForm_Initialize() Worksheets("設計List").Select First = Range("A1").CurrentRegion.Row + 1 Last = Range("A1").CurrentRegion.Rows.Count Current = Last LinkCell End Sub '================================================ '「先頭」 Private Sub CommandButton1_Click() Current = First LinkCell End Sub '================================================ '「ステップ10前へ」 Private Sub CommandButton2_Click() If Current = First Then MsgBox "現在、最初のレコードです。" ElseIf Current <= 10 Then Current = First LinkCell MsgBox "最初のレコードに飛びました。" Else Current = Current - 10 LinkCell End If End Sub '================================================ '「前へ」 ここだけちょっとパターンを変えてみました。意味無し。 Private Sub CommandButton3_Click() If Current = First Then MsgBox "現在、最初のレコードです。" Else Current = Current - 1 LinkCell If Current = First Then MsgBox "最初のレコードになりました。" End If End If End Sub '================================================ '「次へ」 Private Sub CommandButton4_Click() If Current = Last Then MsgBox "現在、最後のレコードです." ElseIf Current + 1 = Last Then Current = Current + 1 LinkCell MsgBox "最後のレコードになりました。" Else Current = Current + 1 LinkCell End If End Sub '================================================ '「ステップ10次へ」 Private Sub CommandButton5_Click() If Current = Last Then MsgBox "現在、最後のレコードです." ElseIf Current + 10 >= Last Then Current = Last LinkCell MsgBox "最後のレコードに飛びました。" Else Current = Current + 10 LinkCell End If End Sub '================================================ '「最後」 Private Sub CommandButton6_Click() Current = Last LinkCell End Sub '================================================ Sub LinkCell() Dim strRang As String strRang = "A" & Current TextBox1.Value = Range(strRang).Value strRang = "B" & Current TextBox2.Value = Range(strRang).Value strRang = "C" & Current TextBox3.Value = Range(strRang).Value End Sub |
▼Jaka さん: おはようございます。 できました!完成です!! 本当にありがとうございました。m(__)m |