Gizport
1 回答
0
Share (facebook)
36
view
全般

エクセル マクロ(VBA) FindPreviousの使い方がわかり...

エクセル マクロ(VBA) FindPreviousの使い方がわかりません。 エクセルで成績処理を行っています。ブックはシート3枚で、シート1はメニュー画面、シート2はデータシート(A列が生徒番号(1組1番の生徒は101)、B列が組、C列が出席番号、D列が性別、E列が氏名、F列からが各教科の成績)、シート3は、特定のセル(AR5)に入力した生徒番号を参照するvlookup関数を使った個票形式になっています。
マクロを使って、メニューシートにクラスを入力(D6セル)し、そのクラスの生徒の個票が連続で印刷されるプログラムをつくります。生徒数は学級によって違います。また、生徒番号は転出等により途中欠番があります。欠番生徒のデータは削除されています。たとえば1組の9番の生徒が転出したとすると、データシートは生徒番号108のデータの下の行は110の生徒データの行になります。データシートの並びは1組のデータの下に2組データ、3組データと組ごとに生徒番号順にデータがあります。
メニューシートに入力した組を、データシートの組列(B列)の上から順番に検索し、一致するセルの行を開始行とし、その行の生徒番号の値(A列)を個票シートのAR5セルにコピーし、個票を印刷。次にその行の1つ下の行の生徒番号をコピーし印刷。これを該当クラスだけ続けて、組が次の組になったら終了するプログラムを次のように書きましたが、うまくいきません。たぶんfindメソッドの使い方がおかしいと思うのですが…、よろしくおねがいします。
Dim 開始行 As Range
Dim 終了号 As Range
If Application.CountIf(Worksheets("データシート").Range("B:B"), Worksheets("menu").Range("D6")) = 0 Then
msgobox "class name is not exist in data list"
Exit Sub
End If
Set 開始行 = Worksheets("データシート").Range("B:B").Find(what:=Worksheets("menu").Range("D6"))
Set 終了行 = Worksheets("データシート").Range("B:B").FindPrevious(開始行)
始まりの番号 = 開始行.Value
終わりの番号 = 終了行.Value
For 行 = 始まりの番号 To 終わりの番号
If workshseets("データシート").Cells(行, A) <> "" Then
Worksheets("個票").Range("ar5").Value = 行
Worksheets("個票").PrintOut copies:=1, collate:=True
End If
Yahoo!知恵袋 5155日前
コメントする
お気に入り
1
質問者が選んだベストソリューション
せっかくCOUNTIFで該当数を計算しているのだからそれを利用して
また不要なオブジェクト定義をしているみたいです

こんなかんじでいいかと
Sub test()
CNT = Application.CountIf(B:B, D6)
If CNT = 0 Then Exit Sub
ST = B:B.Find(D6).Row
ED = ST + CNT - 1
MsgBox ST & "~" & ED
End Sub
Yahoo!知恵袋 5140日前
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
その他の解決方法を知っていますか?
回答する
全般
2021
Views
質問者が納得覗き見防止の設定になってる 解除は? たぶん設定 ディスプレイ ペールビューオフ
4140日前view2021
全般
50
Views
質問者が納得確かに1Gしか使ってないなら2Gプランでも足りるとはおもいますが 101Fは3Gスマホです。 次の機種は ガラケーにしない限り4Gスマホに変わります。 なので通信量も速度に比例して若干増加します。 それであれば、 5Gの標準プランに加入することをお勧めします。
3575日前view50
全般
70
Views
質問者が納得Android4.x系であれば 設定→壁紙、ディスプレイ→壁紙で行けたはず 自分のもAndroidには詳しくないので違ったらごめんなさい
3636日前view70
全般
57
Views
質問者が納得101F持ちですが、APN設定ってWIFIではなくSoftBankとの通信関係なので、SIMカードの認識やらがオカシイかも。 101FでNECのWIFIルーターにつなげたけれど、何も問題なかったですね。 ショップに行ったほうが早そうです。 157に電話しても良いと思いますよ。
3726日前view57
全般
82
Views
質問者が納得自分も101F持ちです。 以前、RAMを空けるため、必要なさそうなセキュリティを無効化したためできなくなり。 面倒臭いので、オールリセットをしたことがあります。 一度、オールリセットを試してください。それでもダメなら基板の故障かも。
3729日前view82

取扱説明書・マニュアル

関連製品のQ&A