Excel総合相談所 26

このエントリーをはてなブックマークに追加
952877:04/09/24 00:30:57
>>914さん、ありがとうございました。

希望通りにできました。

入力してEnterを押すと次に入力したいセルへ飛ぶようになりました。
入力しなければ通常通りのセルへ移動します。
シートの保護等と違って他の箇所へ入力したい場合も便利です。

※入力せずにEnterのみで移動する方法はちょっと理解不足の為、
実施できませんでした。
でも、他のシートにも反映されるのはちょっと困りますのでこれで十分です。

本当にありがとう御座いました。

>>952
良かったね。ただ、もう少し口の利き方に気をつけた方が良いと思うよ。

>シートの保護等と違って他の箇所へ入力したい場合も便利です。
シートの保護を提案してくれた人に失礼。

もっとひどいのがこれ。
>わざわざ入力したい箇所をすべてctr+クリックしないといけなくなりますので・・・。
この時は礼すら言ってないもんなぁ。
954名無しさん@そうだ選挙にいこう:04/09/24 02:32:37
>>953
かっこいいねー
>>953
同意
いくらネットで顔が見えないと言っても最低限の礼儀は必要だと思う。
2chで礼儀なんていらんだろ。
漏れもいろんな板で回答者やってるけど、別にいらんと思う。

回答側は、調べて答える事での自分の技術力うpと
上に立つ事での自己満足を得たいだけなんだから。
礼がほしいというのは、より上に立ちたいという心の表れじゃないのか。
2chを無礼無法地帯にするのに荷担してる香具師はイラネ
ディスプレイの向こうには人がいるという認識があれば、
管理人が内輪の馴れ合いこそを推奨してるような場所でない限り、
礼儀は必須だという事くらい常識で分かる。

解答者が質問者より立場が上と言うのは
本来解答者側は持ってはいけない間違った認識だが、
それでも礼儀知らずになんか解答したくはなくなるのはある種人情というもの。
少なくとも礼儀いらんと思ってそういう振るまいしてる香具師は、
解答が帰ってこなくてもあまつさえ叩かれても文句を言う資格はないわな。
アドバイスしても返答がないってのは、2chではよくあること。
だが、それは「情けない現実」であって、肯定するべきものではない。
それに、いくら2chとはいえ、助言に煽りで報いるなんて論外だろ。
まぁ、当人にそんなつもりはないと思うが。
お礼はあってもなくてもいいけど、
質問する側の態度はあるのでは?
みなさん、なに言うてんでっか?
お礼は必要にきまってますやろ?
よろしゅうたのんま。
ほな。
961名無しさん@そうだ選挙にいこう:04/09/24 11:48:18
あるフォルダ内(マイドキュメント内の一つ)の中のフォルダの名前を
セルに書き出す方法なのですが、
VBAでだーっと書き出すことって可能ですか?

条件は
該当フォルダ内にはフォルダとファイルが混在しています、約50個
セルA1〜下にだーっとフォルダ名のみを書き出したいです

962938:04/09/24 12:11:42
>>941
ありがとうございます。望み通りの動作です。

>>943
ありがとうございます。
今回は表示・非表示の切り替えと言っても、非表示にするのは別の操作で行いたいので、
ゴッホさんのコードを使わせてもらうことにしましたが、実行するごとに表示・非表示が切り替わるというのは、
今回の物とは別の場所で有効に活用出来そうなので後ほど利用させていただきます。


それともう一つお聞きしたいんですが、6の倍数+1の行を非表示から表示にするにはどのようにすればいいでしょうか?
現在は「Range("7:7,13:13,19:19").EntireRow.Hidden = False」としてますがこれもワークシートの行数が増えると
VBAの行数も増えてしまうのでなんとか纏めたいんですが、調べても上記のような指定の仕方は見つからなくて・・・。
ご存じの方、よろしくお願いします。
自分じゃ何も自助努力しない教えて厨には答えない方がスレのためな気がする。

あと、質問者用のテンプレがあっさりしてるのはここのいいとこでもあると思うが
他の質問スレだと質問のテンプレがここよりかなり細かく決まってるとこもあるよな。
「このスレに書き込む前に自分でしてみたこと」を書かせたりとか。
回答者の労を省くためにもそれくらいはテンプレに入れてもいいんじゃないだろうか。
964名無しさん@そうだ選挙にいこう:04/09/24 14:44:36
表計算ソフトロータスの123のデータ形式を
まんま表計算ソフトのエクセル形式に変換したいのですが
便利なツールはありますか?
>>964
ファイル>開く>ファイルの種類>Lotus 1-2-3 ファイル とか
>>962
Step
>964

123でファイルを開き、「名前をつけて保存」でexcelの形式で保存
もしくは、excelで123のファイルを開き、「名前をつけて保存」でexcelの形式で保存


いずれにしても123独自の関数とかは変換できなかったと思う。
>>964
マルチやめれ
あさはかなマルチでしたすみません。
そしてありがとう。
970938:04/09/24 17:34:35
>>966
ありがとうございます。うまくいきました。
971白痴32歳:04/09/24 19:57:09
セルの挿入で一気に20行くらいいれたいのですが
右クリックでセルの挿入やっても
一行しかはいりません
20回繰り返してます
何か方法はありませんか?
ひとつよろしくお願いします
>>961
Sub ボタン1_Click()

Dim fs, f, f1, fc, s
Dim str As String
Dim i As Integer

str = "C:\"
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(str)
Set fc = f.SubFolders
i = 1

For Each f1 In fc
Worksheets(1).Cells(i, 1) = f1.Name
i = i + 1
Next


End Sub
ヘルプの使用例をちょっと改造しただけ。
ボタンを押すとCドライブ直下のフォルダが列挙される。
Cドライブの直下だと本来表示されないはずのフォルダも
列挙されてしまうみたいだけど。
>>971
20行、行を選択→右クリック→挿入
モニタ上に映る部分で、
常に「合計」の欄を画面内に表示しておきたいのですが
どうすればよいでしょうか?

20行や20列くらいなら画面内におさまるのですが
40行や40列以上になったら画面内におさまりません。
スクロールさせないと「合計」が見れなくなってしまいます。
>>974
合計の行を一番上の行にして、ウィンドウ枠の固定を使ったら?
976935:04/09/24 21:07:06
どうやら俺はスルーされたようだ・・・

負けるもんか!
>>976
ゲンキダセ(´・ω・`)ノシ(´・ω・`)
VBAしたことない人にはあのアドバイスは難しすぎたんじゃないの?
>935
877にスルーされたり失礼なことを言われたのはお前だけじゃない。気にすんな。
979961:04/09/24 21:15:15
>>972
サンキュー
早速使わせてもらいます

ヘルプに使用例がのってたけど、ファイルもフォルダも全部出るやつだったので
助かったヨ
980935:04/09/24 21:16:12
>>977-978
ありがとう。
以前質問した者ですが、もう一度質問させてください。やりたいことは
38000│ 50 │  │  │38100│ 70 │  │38200│ 80 │  │  │  │38300│ 60
のように入力してあった場合、このうち1000以下の数を右から3つまで(60、80、70)を
その行のD列、E列、F列に抜き出したいのです。

前回質問時は、1行分を4行使って求める方法などを教えて貰いましたが、
動作としては申し分無いのですが、元のデータが1000行を超えるので重くてとても使える状態ではありませんでした。

前回は関数のみでということでお願いしましたが、今回は特に関数のみということには拘りませんのでどうか知恵を貸してください。
データの範囲は「H2:GK1486(186列x1485行)」、OSはXP Pro、ExcelはOfficeXPの物です。


>>974
>>975と同じような方法だけど、現在合計を出してるセルが40行目40列目のAN40なら、
ウィンドウ枠の固定を使って常に表示されている領域(通常なら左上)に
=AN40
って入れておけば、常に合計の数値が見られるよ。
あとはExcelのカメラ機能でも同様のことが出来る。こちらは拡大も出来るしD&Dで移動も出来るけど、
やはりウィンドウ枠の固定と兼用しないと常時表示は出来ない。
982943:04/09/24 21:18:12
>>962
「表示・非表示の切り替え」はただのついででして、>>938でおっしゃってた
>ぶっちゃけ「Target.Row+1:Target.Row+5」が指定できればいいんですが、ググっても具体的な記述が解らなくて…
ということでしたので、その指定の別解を提示したわけですが・・・
気付かれなかったようですね。トホホ

どこかで使っていただけるなら幸いです。
983名無しさん@そうだ選挙にいこう:04/09/24 21:41:21
マクロで、データを切り取って他のブックにに貼り付けて
そのブックを閉じると「クリップボードに大きなデータがあります〜」ってやつが
毎回でます。
自動で「いいえ」を選択したいのですが、できますでしょうか?
>>983
ブックを閉じる前に
Application.CutCopyMode = False
Application.CutCopyMode = False
マクロのコードでコピーしたデータが不要になった時点で
上記のコードを実行させれば、メッセージは出ない
…多分

986985:04/09/24 21:54:45
かぶったorz
>>981
俺のスキルじゃこれ以上高速に処理出来ない。
下のマクロを実行するとフリーズしたように見えるので(俺のPCがショボいだけかも)
ステータスバーに経過を表示してみました。以下を標準モジュールにコピペして実行してみてください。

Sub 抽出
 Dim CheckCell As Range, RowNum As Long
 Application.ScreenUpdating = False
 For RowNum = 2 To 1486
  Cells(RowNum, 4).Activate
  Set CheckCell = Cells(RowNum, Range("GL1").Column).End(xlToLeft)
  Do Until ActiveCell.Column > 6
   If CheckCell.Value < 1000 Then
    ActiveCell.Value = CheckCell.Value
    ActiveCell.Offset(0, 1).Activate
   End If
   If CheckCell.Offset(0, -1).Value <> "" Then
    Set CheckCell = CheckCell.Offset(0, -1)
   Else
    Set CheckCell = CheckCell.End(xlToLeft)
   End If
  Loop
  If RowNum Mod 50 = 0 Then '50行ごとにステータスバーに表示
   Application.StatusBar = RowNum & "件処理完了"
   DoEvents
  End If
 Next RowNum
 Set CheckCell = Nothing
 Application.StatusBar = False
 Application.ScreenUpdating = True
 MsgBox "完了しました。"
End Sub
988983:04/09/25 00:08:51
>>984
>>985
ありがとうございます
出来ました
>>987
高速処理に惹かれたので(w
少しは早いかな?

Sub 抽出2()
 Const intLastRow = 1486
 Dim x As Integer, y As Integer
 Dim n As Byte
 Dim myArray() As Integer

 ReDim myArray(intLastRow - 2, 2)

 For y = 2 To intLastRow
  For x = 193 To 6 Step -1
   If Cells(y, x).Value < 1000 Then
    myArray(y - 2, n) = Cells(y, x).Value
    n = n + 1
   End If

   If n = 3 Then
    n = 0
    Exit For
   End If
  Next x
 Next y

 Range("D2").Resize(intLastRow - 1, 3) = myArray
 Erase myArray
End Sub
990名無しさん@そうだ選挙にいこう:04/09/25 04:32:41
Excel2002です。
userform1内にテキストボックスが10個とチェックボックスが10個あります。
名前はそれぞれCheckBox1〜10、TextBox1〜10です。

これらの内、TextBox3〜5に
worksheet("sheet1")のセルA1からA3の値を入れるため下記のような
コードを記述しています。


Private Sub CommandButton1_Click()

i = 1
For Each Control In UserForm1.Controls
If Control.Name Like "TextBox*" Then
a = Mid(Control.Name, 8, 3)
If a >= 3 And a <= 5 Then
Control.Value = Worksheets("sheet1").Cells(i, 1)
i = i + 1
End If
End If
Next Control

End Sub

古いエクセルではtextboxes(1)かtextbox(1)のようにインデックスが割りあたってて
数字で直接指定できたのですが、2002ではできないのでしょうか

困ってはいませんがブサイクなコードでしっくりしません。
991987:04/09/25 07:37:22
>>989
おお、早い!
なるほど、先に配列に代入しておいて一気に書き出せば
これだけ早くなるのか・・・勉強になりました。

でも、これだと空白セルも1000未満扱いになってるようですけど。
If Cells(y, x).Value < 1000 And Cells(y, x).Value <> "" Then
にしたほうがいいかも。
>>990
これならどうでしょうか。

Private Sub CommandButton1_Click()
 Dim i As Integer
 
 For i = 1 To 3
  UserForm1.Controls("TextBox" & i + 2).Value = Worksheets("Sheet1").Cells(i, 1)
 Next
End Sub
産め
>>993
認知してくれるの?
それが俺の子だという証拠でもあるのか
次スレ 遅ればせながら次スレ1乙。
 ↓
Excel総合相談所 27
http://pc5.2ch.net/test/read.cgi/bsoft/1096068933/l50
卯女
埋め
キタ━━━(゚∀゚)━━━ !!! 超1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。